From 06ec56df7f951f88da05f468cdcacecba496145a Mon Sep 17 00:00:00 2001 From: n64 Date: Sun, 1 Mar 2020 22:42:52 -0500 Subject: [PATCH] Refresh 7 --- CHANGES | 40 + Makefile | 51 +- Makefile.split | 2 +- README.md | 5 +- actors/boo/geo.inc.c | 2 +- actors/boo_castle/geo.inc.c | 2 +- actors/bowser/geo.inc.c | 22 +- actors/bowser_key/geo.inc.c | 2 +- actors/chuckya/geo.inc.c | 2 +- actors/group0.c | 2 +- actors/group0.h | 20 +- actors/group0_geo.c | 2 +- actors/impact_ring/geo.inc.c | 2 +- actors/impact_smoke/geo.inc.c | 2 +- actors/king_bobomb/geo.inc.c | 2 +- actors/klepto/geo.inc.c | 8 +- actors/lakitu_enemy/geo.inc.c | 2 +- actors/mario/geo.inc.c | 24 +- actors/mario_cap/geo.inc.c | 8 +- actors/mist/geo.inc.c | 4 +- actors/moneybag/geo.inc.c | 2 +- actors/monty_mole/geo.inc.c | 2 +- actors/peach/geo.inc.c | 2 +- actors/snowman/geo.inc.c | 2 +- actors/snufit/geo.inc.c | 4 +- actors/stomp_smoke/geo.inc.c | 3 +- actors/sushi/geo.inc.c | 2 +- actors/toad/geo.inc.c | 2 +- actors/water_ring/geo.inc.c | 2 +- actors/water_wave/geo.inc.c | 29 + .../{water_waves => water_wave}/model.inc.c | 54 +- actors/water_waves/geo.inc.c | 29 - asm/entry.s | 6 +- asm/non_matchings/alloc_bank_or_seq.s | 303 ---- .../eu/append_bubble_vertex_buffer.s | 151 -- .../eu/append_snowflake_vertex_buffer.s | 156 -- .../eu/audio/alloc_bank_or_seq.s | 269 --- asm/non_matchings/eu/audio/func_eu_802e00d8.s | 88 - .../eu/audio/note_apply_headset_pan_effects.s | 263 --- .../eu/audio/prepare_reverb_ring_buffer.s | 179 -- .../audio/seq_channel_layer_process_script.s | 6 +- .../eu/audio/sequence_channel_enable.s | 56 - .../audio/sequence_player_process_sequence.s | 698 -------- .../eu/audio/synthesis_do_one_audio_update.s | 331 ---- .../eu/audio/synthesis_execute.s | 178 -- .../audio/synthesis_resample_and_mix_reverb.s | 220 --- .../eu/handle_dialog_text_and_pages.s | 370 ---- asm/non_matchings/eu/libultra_unk_802aeeb0.s | 55 - asm/non_matchings/eu/libultra_unk_802aef80.s | 87 - asm/non_matchings/eu/play_sequence.s | 86 - .../eu/player_performed_grab_escape_action.s | 36 - asm/rom_header.s | 12 +- assets.json | 11 +- bin/segment2.c | 317 ++-- bin/spooky.c | 5 - data/behavior_data.c | 156 +- diff.py | 0 enhancements/mem_error_screen.patch | 6 +- extract_assets.py | 4 +- include/PR/os_pi.h | 6 +- include/behavior_data.h | 28 +- {src/game => include}/eu_translation.h | 8 + include/model_ids.h | 6 +- include/object_constants.h | 99 +- include/object_fields.h | 58 +- include/segments.h | 2 + include/sm64.h | 40 +- include/text_strings.h.in | 2 +- levels/bbh/areas/1/geo.inc.c | 2 +- levels/bitdw/areas/1/geo.inc.c | 2 +- levels/bitfs/areas/1/geo.inc.c | 2 +- levels/bits/areas/1/geo.inc.c | 2 +- levels/bob/areas/1/geo.inc.c | 2 +- levels/bowser_1/areas/1/geo.inc.c | 2 +- levels/bowser_2/areas/1/geo.inc.c | 2 +- levels/bowser_3/areas/1/geo.inc.c | 2 +- levels/castle_courtyard/areas/1/geo.inc.c | 2 +- levels/castle_grounds/areas/1/geo.inc.c | 2 +- levels/castle_inside/areas/1/geo.inc.c | 34 +- levels/castle_inside/areas/2/geo.inc.c | 58 +- levels/castle_inside/areas/3/geo.inc.c | 40 +- levels/castle_inside/painting.inc.c | 490 +++--- levels/ccm/areas/1/geo.inc.c | 2 +- levels/ccm/areas/2/geo.inc.c | 2 +- levels/cotmc/areas/1/geo.inc.c | 2 +- levels/ddd/areas/1/geo.inc.c | 2 +- levels/ddd/areas/2/geo.inc.c | 2 +- levels/hmc/areas/1/geo.inc.c | 10 +- levels/hmc/areas/1/painting.inc.c | 48 +- levels/jrb/areas/1/geo.inc.c | 2 +- levels/jrb/areas/2/geo.inc.c | 2 +- levels/jrb/wooden_ship/geo.inc.c | 4 +- levels/lll/areas/1/geo.inc.c | 2 +- levels/lll/areas/2/geo.inc.c | 2 +- levels/pss/areas/1/geo.inc.c | 2 +- levels/rr/areas/1/geo.inc.c | 2 +- levels/sa/areas/1/geo.inc.c | 2 +- levels/scripts.c | 6 +- levels/sl/areas/1/geo.inc.c | 2 +- levels/sl/areas/2/geo.inc.c | 2 +- levels/sl/script.c | 4 +- levels/ssl/areas/1/geo.inc.c | 2 +- levels/ssl/areas/2/geo.inc.c | 2 +- levels/ssl/areas/3/geo.inc.c | 2 +- levels/thi/areas/1/geo.inc.c | 2 +- levels/thi/areas/2/geo.inc.c | 2 +- levels/thi/areas/3/geo.inc.c | 2 +- levels/totwc/areas/1/geo.inc.c | 2 +- levels/ttc/areas/1/geo.inc.c | 2 +- levels/ttm/areas/1/geo.inc.c | 6 +- levels/ttm/areas/1/painting.inc.c | 61 +- levels/ttm/areas/2/geo.inc.c | 2 +- levels/ttm/areas/3/geo.inc.c | 2 +- levels/ttm/areas/4/geo.inc.c | 2 +- levels/vcutm/areas/1/geo.inc.c | 2 +- levels/wdw/areas/1/geo.inc.c | 2 +- levels/wdw/areas/2/geo.inc.c | 2 +- levels/wf/areas/1/geo.inc.c | 2 +- levels/wmotr/areas/1/geo.inc.c | 2 +- lib/asm/__osExceptionPreamble.s | 3 + lib/src/D_802F4380.c | 2 +- lib/src/osCreatePiManager.c | 2 +- lib/src/osInitialize.c | 8 +- rename_sym.sh | 2 +- sm64.ld | 8 +- sm64.sh.sha1 | 1 + src/audio/data.c | 10 +- src/audio/effects.c | 149 +- src/audio/external.c | 24 +- src/audio/{memory.c => heap.c} | 168 +- src/audio/{memory.h => heap.h} | 7 +- src/audio/internal.h | 67 +- src/audio/load.c | 53 +- src/audio/playback.c | 24 +- src/audio/playback.h | 5 +- src/audio/port_eu.c | 30 +- src/audio/seqplayer.c | 132 +- src/audio/synthesis.c | 287 ++-- src/engine/behavior_script.c | 39 +- src/engine/level_script.c | 14 +- src/engine/surface_load.c | 4 +- src/game/area.c | 20 +- src/game/area.h | 8 +- src/game/behavior_actions.c | 54 +- src/game/behavior_actions.h | 81 +- src/game/behaviors/amp.inc.c | 20 +- .../behaviors/animated_floor_switch.inc.c | 8 +- .../behaviors/bbh_haunted_bookshelf.inc.c | 4 +- src/game/behaviors/bbh_merry_go_round.inc.c | 6 +- src/game/behaviors/beta_boo_key.inc.c | 20 +- src/game/behaviors/beta_bowser_anchor.inc.c | 4 +- src/game/behaviors/beta_chest.inc.c | 4 +- src/game/behaviors/beta_holdable_object.inc.c | 12 +- src/game/behaviors/beta_trampoline.inc.c | 10 +- src/game/behaviors/bird.inc.c | 16 +- src/game/behaviors/blue_coin.inc.c | 32 +- src/game/behaviors/blue_fish.inc.c | 131 +- src/game/behaviors/bobomb.inc.c | 117 +- src/game/behaviors/bomp.inc.c | 8 +- src/game/behaviors/boo.inc.c | 212 +-- src/game/behaviors/boo_cage.inc.c | 20 +- src/game/behaviors/boulder.inc.c | 16 +- src/game/behaviors/bouncing_fireball.inc.c | 12 +- src/game/behaviors/bowling_ball.inc.c | 38 +- src/game/behaviors/bowser.inc.c | 580 ++++--- src/game/behaviors/bowser_bomb.inc.c | 6 +- src/game/behaviors/bowser_key.inc.c | 14 +- src/game/behaviors/bowser_key_cutscene.inc.c | 10 +- src/game/behaviors/bowser_puzzle_piece.inc.c | 8 +- src/game/behaviors/break_particles.inc.c | 2 +- src/game/behaviors/breakable_box.inc.c | 10 +- src/game/behaviors/breakable_box_small.inc.c | 36 +- src/game/behaviors/breakable_wall.inc.c | 10 +- src/game/behaviors/bub.inc.c | 58 +- src/game/behaviors/bubba.inc.c | 14 +- src/game/behaviors/bubble.inc.c | 10 +- src/game/behaviors/bullet_bill.inc.c | 36 +- src/game/behaviors/bully.inc.c | 126 +- src/game/behaviors/butterfly.inc.c | 28 +- src/game/behaviors/camera_lakitu.inc.c | 20 +- src/game/behaviors/cannon.inc.c | 50 +- src/game/behaviors/cannon_door.inc.c | 6 +- src/game/behaviors/cap.inc.c | 60 +- src/game/behaviors/capswitch.inc.c | 43 +- src/game/behaviors/castle_floor_trap.inc.c | 2 +- src/game/behaviors/celebration_star.inc.c | 22 +- src/game/behaviors/chain_chomp.inc.c | 64 +- .../behaviors/checkerboard_platform.inc.c | 26 +- src/game/behaviors/chuckya.inc.c | 96 +- src/game/behaviors/clam.inc.c | 14 +- src/game/behaviors/clock_arm.inc.c | 4 +- src/game/behaviors/cloud.inc.c | 22 +- src/game/behaviors/coffin.inc.c | 10 +- src/game/behaviors/coin.inc.c | 106 +- src/game/behaviors/collide_particles.inc.c | 20 +- .../behaviors/controllable_platform.inc.c | 42 +- src/game/behaviors/corkbox.inc.c | 6 +- src/game/behaviors/cruiser.inc.c | 2 +- src/game/behaviors/ddd_pole.inc.c | 2 +- src/game/behaviors/ddd_sub.inc.c | 2 +- src/game/behaviors/ddd_warp.inc.c | 2 +- src/game/behaviors/decorative_pendulum.inc.c | 2 +- src/game/behaviors/donut_platform.inc.c | 12 +- src/game/behaviors/door.inc.c | 46 +- src/game/behaviors/dorrie.inc.c | 20 +- src/game/behaviors/drawbridge.inc.c | 4 +- src/game/behaviors/elevator.inc.c | 48 +- src/game/behaviors/end_birds_1.inc.c | 8 +- src/game/behaviors/end_birds_2.inc.c | 6 +- src/game/behaviors/enemy_lakitu.inc.c | 21 +- src/game/behaviors/exclamation_box.inc.c | 54 +- src/game/behaviors/explosion.inc.c | 2 +- src/game/behaviors/express_elevator.inc.c | 8 +- src/game/behaviors/eyerok.inc.c | 40 +- src/game/behaviors/falling_pillar.inc.c | 6 +- .../behaviors/falling_rising_platform.inc.c | 2 +- src/game/behaviors/fire_piranha_plant.inc.c | 36 +- src/game/behaviors/fire_spitter.inc.c | 8 +- src/game/behaviors/fish.inc.c | 343 ++-- src/game/behaviors/fishing_boo.inc.c | 2 +- src/game/behaviors/flame.inc.c | 14 +- src/game/behaviors/flame_mario.inc.c | 8 +- src/game/behaviors/flamethrower.inc.c | 12 +- src/game/behaviors/floating_platform.inc.c | 8 +- src/game/behaviors/fly_guy.inc.c | 16 +- .../behaviors/flying_bookend_switch.inc.c | 36 +- src/game/behaviors/goomba.inc.c | 18 +- src/game/behaviors/grand_star.inc.c | 30 +- src/game/behaviors/grill_door.inc.c | 8 +- src/game/behaviors/ground_particles.inc.c | 24 +- src/game/behaviors/haunted_chair.inc.c | 16 +- src/game/behaviors/heave_ho.inc.c | 56 +- src/game/behaviors/hidden_star.inc.c | 12 +- src/game/behaviors/hoot.inc.c | 69 +- src/game/behaviors/horizontal_grindel.inc.c | 10 +- src/game/behaviors/intro_lakitu.inc.c | 32 +- src/game/behaviors/intro_peach.inc.c | 2 +- src/game/behaviors/intro_scene.inc.c | 30 +- src/game/behaviors/jrb_ship.inc.c | 18 +- src/game/behaviors/jumping_box.inc.c | 38 +- src/game/behaviors/kickable_board.inc.c | 26 +- src/game/behaviors/king_bobomb.inc.c | 186 +- src/game/behaviors/klepto.inc.c | 54 +- src/game/behaviors/koopa.inc.c | 94 +- src/game/behaviors/koopa_shell.inc.c | 46 +- .../behaviors/koopa_shell_underwater.inc.c | 16 +- .../behaviors/lll_floating_wood_piece.inc.c | 2 +- src/game/behaviors/lll_hexagonal_ring.inc.c | 16 +- .../lll_octagonal_rotating_mesh.inc.c | 14 +- .../behaviors/lll_rotating_hex_flame.inc.c | 26 +- .../behaviors/lll_sinking_rectangle.inc.c | 6 +- .../behaviors/lll_sinking_rock_block.inc.c | 2 +- src/game/behaviors/lll_volcano_flames.inc.c | 22 +- src/game/behaviors/mad_piano.inc.c | 18 +- src/game/behaviors/manta_ray.inc.c | 24 +- src/game/behaviors/metal_box.inc.c | 14 +- src/game/behaviors/mips.inc.c | 42 +- src/game/behaviors/moat_grill.inc.c | 2 +- src/game/behaviors/moneybag.inc.c | 60 +- src/game/behaviors/monty_mole.inc.c | 38 +- src/game/behaviors/moving_coin.inc.c | 62 +- src/game/behaviors/mr_blizzard.inc.c | 56 +- src/game/behaviors/mr_i.inc.c | 88 +- src/game/behaviors/mushroom_1up.inc.c | 44 +- src/game/behaviors/piranha_bubbles.inc.c | 14 +- src/game/behaviors/piranha_plant.inc.c | 58 +- src/game/behaviors/platform_on_track.inc.c | 12 +- src/game/behaviors/pokey.inc.c | 24 +- src/game/behaviors/pole.inc.c | 4 +- src/game/behaviors/pole_base.inc.c | 4 +- src/game/behaviors/purple_switch.inc.c | 14 +- src/game/behaviors/pyramid_elevator.inc.c | 4 +- src/game/behaviors/pyramid_top.inc.c | 10 +- src/game/behaviors/racing_penguin.inc.c | 44 +- src/game/behaviors/recovery_heart.inc.c | 6 +- src/game/behaviors/red_coin.inc.c | 8 +- src/game/behaviors/rolling_log.inc.c | 22 +- src/game/behaviors/rotating_platform.inc.c | 8 +- src/game/behaviors/scuttlebug.inc.c | 36 +- src/game/behaviors/seesaw_platform.inc.c | 2 +- src/game/behaviors/shock_wave.inc.c | 4 +- src/game/behaviors/skeeter.inc.c | 32 +- src/game/behaviors/sl_snowman_wind.inc.c | 45 + src/game/behaviors/sl_walking_penguin.inc.c | 115 ++ src/game/behaviors/snow_mound.inc.c | 2 +- src/game/behaviors/snowman.inc.c | 54 +- src/game/behaviors/snowman_wind.inc.c | 35 - src/game/behaviors/snufit.inc.c | 170 +- src/game/behaviors/sound_birds.inc.c | 6 +- src/game/behaviors/sound_sand.inc.c | 2 +- src/game/behaviors/sound_volcano.inc.c | 2 +- src/game/behaviors/sound_waterfall.inc.c | 2 +- src/game/behaviors/sparkle_spawn.inc.c | 6 +- src/game/behaviors/sparkle_spawn_star.inc.c | 34 +- src/game/behaviors/spawn_star.inc.c | 32 +- src/game/behaviors/spawn_star_exit.inc.c | 4 +- src/game/behaviors/spindel.inc.c | 2 +- src/game/behaviors/spindrift.inc.c | 18 +- src/game/behaviors/spiny.inc.c | 28 +- .../behaviors/square_platform_cycle.inc.c | 12 +- src/game/behaviors/star_door.inc.c | 16 +- .../behaviors/static_checkered_platform.inc.c | 2 +- src/game/behaviors/strong_wind_particle.inc.c | 65 + src/game/behaviors/sushi.inc.c | 4 +- .../behaviors/switch_hidden_objects.inc.c | 58 +- src/game/behaviors/swoop.inc.c | 26 +- src/game/behaviors/thi_top.inc.c | 12 +- src/game/behaviors/thwomp.inc.c | 22 +- src/game/behaviors/tower_door.inc.c | 4 +- src/game/behaviors/tower_platform.inc.c | 34 +- src/game/behaviors/tox_box.inc.c | 54 +- src/game/behaviors/treasure_chest.inc.c | 42 +- src/game/behaviors/tree_particles.inc.c | 14 +- src/game/behaviors/triplet_butterfly.inc.c | 22 +- src/game/behaviors/ttc_elevator.inc.c | 2 +- src/game/behaviors/ttc_pendulum.inc.c | 2 +- src/game/behaviors/ttc_pit_block.inc.c | 2 +- src/game/behaviors/ttc_rotating_solid.inc.c | 4 +- src/game/behaviors/ttc_treadmill.inc.c | 4 +- src/game/behaviors/tumbling_bridge.inc.c | 40 +- src/game/behaviors/tuxie.inc.c | 155 +- src/game/behaviors/tweester.inc.c | 38 +- src/game/behaviors/ukiki.inc.c | 118 +- src/game/behaviors/ukiki_cage.inc.c | 22 +- src/game/behaviors/unagi.inc.c | 38 +- .../behaviors/unused_particle_spawn.inc.c | 10 +- .../behaviors/unused_poundable_platform.inc.c | 8 +- src/game/behaviors/walking_penguin.inc.c | 73 - src/game/behaviors/warp.inc.c | 2 +- src/game/behaviors/water_bomb.inc.c | 28 +- src/game/behaviors/water_bomb_cannon.inc.c | 14 +- src/game/behaviors/water_mist_particle.inc.c | 10 +- src/game/behaviors/water_objs.inc.c | 46 +- src/game/behaviors/water_pillar.inc.c | 18 +- src/game/behaviors/water_ring.inc.c | 54 +- src/game/behaviors/water_splash.inc.c | 90 - .../behaviors/water_splashes_and_waves.inc.c | 133 ++ src/game/behaviors/water_wave.inc.c | 1 + src/game/behaviors/wdw_water_level.inc.c | 10 +- src/game/behaviors/whirlpool.inc.c | 14 +- src/game/behaviors/white_puff.inc.c | 10 +- src/game/behaviors/white_puff_explode.inc.c | 12 +- src/game/behaviors/whomp.inc.c | 142 +- src/game/behaviors/wiggler.inc.c | 42 +- src/game/behaviors/wind.inc.c | 12 +- src/game/behaviors/wind_particle.inc.c | 52 - src/game/behaviors/yoshi.inc.c | 26 +- src/game/camera.c | 29 +- src/game/camera.h | 4 +- src/game/crash_screen.c | 2 +- src/game/debug.c | 14 +- src/game/debug.h | 2 +- src/game/display.c | 6 +- src/game/display.h | 6 +- src/game/envfx_bubbles.c | 35 +- src/game/envfx_snow.c | 36 +- src/game/game.c | 6 +- src/game/ingame_menu.c | 54 +- src/game/interaction.c | 177 +- src/game/interaction.h | 4 +- src/game/level_geo.c | 2 +- src/game/level_geo.h | 2 +- src/game/level_update.c | 72 +- src/game/level_update.h | 4 +- src/game/macro_special_objects.c | 2 +- src/game/main.c | 48 +- src/game/main.h | 2 +- src/game/mario.c | 18 +- src/game/mario_actions_airborne.c | 22 +- src/game/mario_actions_automatic.c | 12 +- src/game/mario_actions_cutscene.c | 54 +- src/game/mario_actions_cutscene.h | 4 +- src/game/mario_actions_moving.c | 74 +- src/game/mario_actions_moving.h | 2 +- src/game/mario_actions_object.c | 2 +- src/game/mario_actions_stationary.c | 112 +- src/game/mario_actions_stationary.h | 22 +- src/game/mario_actions_submerged.c | 36 +- src/game/mario_misc.c | 46 +- src/game/mario_misc.h | 8 +- src/game/mario_step.c | 10 +- src/game/mario_step.h | 4 +- src/game/memory.c | 4 +- src/game/memory.h | 4 +- src/game/obj_behaviors.c | 8 +- src/game/obj_behaviors.h | 142 +- src/game/obj_behaviors_2.c | 80 +- src/game/object_collision.c | 64 +- src/game/object_collision.h | 16 +- src/game/object_helpers.c | 709 ++++---- src/game/object_helpers.h | 256 +-- src/game/object_helpers2.h | 96 +- src/game/object_list_processor.c | 44 +- src/game/paintings.c | 1502 ++++++++++------- src/game/paintings.h | 162 +- src/game/save_file.c | 4 +- src/game/save_file.h | 8 +- src/game/segment2.h | 4 +- src/game/sound_init.c | 19 +- src/game/sound_init.h | 14 +- src/game/spawn_object.c | 2 +- src/game/spawn_sound.c | 15 +- src/game/spawn_sound.h | 4 +- src/menu/file_select.c | 274 +-- src/menu/file_select.h | 6 - src/menu/level_select_menu.c | 2 +- src/menu/star_select.c | 38 +- tools/apply_patch.sh | 0 tools/create_patch.sh | 0 tools/ido5.3_compiler/usr/lib/acpp | Bin 0 -> 93440 bytes tools/ido5.3_compiler/usr/lib/copt | Bin 0 -> 3597360 bytes tools/patch_libmalloc.py | 0 tools/revert_patch.sh | 0 undefined_syms.txt | 4 + 414 files changed, 7706 insertions(+), 10210 deletions(-) create mode 100644 actors/water_wave/geo.inc.c rename actors/{water_waves => water_wave}/model.inc.c (58%) delete mode 100644 actors/water_waves/geo.inc.c delete mode 100644 asm/non_matchings/alloc_bank_or_seq.s delete mode 100644 asm/non_matchings/eu/append_bubble_vertex_buffer.s delete mode 100644 asm/non_matchings/eu/append_snowflake_vertex_buffer.s delete mode 100644 asm/non_matchings/eu/audio/alloc_bank_or_seq.s delete mode 100644 asm/non_matchings/eu/audio/func_eu_802e00d8.s delete mode 100644 asm/non_matchings/eu/audio/note_apply_headset_pan_effects.s delete mode 100644 asm/non_matchings/eu/audio/prepare_reverb_ring_buffer.s delete mode 100644 asm/non_matchings/eu/audio/sequence_channel_enable.s delete mode 100644 asm/non_matchings/eu/audio/sequence_player_process_sequence.s delete mode 100644 asm/non_matchings/eu/audio/synthesis_do_one_audio_update.s delete mode 100644 asm/non_matchings/eu/audio/synthesis_execute.s delete mode 100644 asm/non_matchings/eu/audio/synthesis_resample_and_mix_reverb.s delete mode 100644 asm/non_matchings/eu/handle_dialog_text_and_pages.s delete mode 100644 asm/non_matchings/eu/libultra_unk_802aeeb0.s delete mode 100644 asm/non_matchings/eu/libultra_unk_802aef80.s delete mode 100644 asm/non_matchings/eu/play_sequence.s delete mode 100644 asm/non_matchings/eu/player_performed_grab_escape_action.s mode change 100644 => 100755 diff.py rename {src/game => include}/eu_translation.h (77%) create mode 100644 sm64.sh.sha1 rename src/audio/{memory.c => heap.c} (87%) rename src/audio/{memory.h => heap.h} (94%) create mode 100644 src/game/behaviors/sl_snowman_wind.inc.c create mode 100644 src/game/behaviors/sl_walking_penguin.inc.c delete mode 100644 src/game/behaviors/snowman_wind.inc.c create mode 100644 src/game/behaviors/strong_wind_particle.inc.c delete mode 100644 src/game/behaviors/walking_penguin.inc.c delete mode 100644 src/game/behaviors/water_splash.inc.c create mode 100644 src/game/behaviors/water_splashes_and_waves.inc.c delete mode 100644 src/game/behaviors/wind_particle.inc.c mode change 100644 => 100755 tools/apply_patch.sh mode change 100644 => 100755 tools/create_patch.sh create mode 100755 tools/ido5.3_compiler/usr/lib/acpp create mode 100755 tools/ido5.3_compiler/usr/lib/copt mode change 100644 => 100755 tools/patch_libmalloc.py mode change 100644 => 100755 tools/revert_patch.sh diff --git a/CHANGES b/CHANGES index 939b7cb1..b0bad032 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,43 @@ +Refresh #7 +1.) update README.md (#861) +2.) [eu] fix decompilation bugs in synthesis_process_note (#862) +3.) Label and document Snufit.inc.c (#863) +4.) Label and document Snufit.inc.c (#863) +5.) Match append_bubble_vertex_buffer, append_snowflake_vertex_buffer (#860) +6.) Compile audio/effects.c with -sopt (#870) +7.) Match handle_dialog_text_and_pages (#872) +8.) Remove improperly used LEVEL_SA define. (#875) +9.) Remove unused EU ASM files (#873) +10.) Shindou build flag support (#876) +11.) The Big Function PR (Part 1) (#864) +12.) "Re-document" file_select and star_select for EU (#877) +13.) Document paintings.c (#868) +14.) Minor interaction.c labelling/documentation. (#882) +15.) Match synthesis_execute, prepare_reverb_ring_buffer, func_eu_802e00d8 (#886) +16.) The Big Function PR (Part 2) (#874) +17.) Additional painting documentation (#883) +18.) Some EU audio labelling (#885) +19.) Bring synthesis_do_one_audio_update a bit closer to matching (#887) +20.) Misleading comment, this actually contols Bowser's init action (#889) +21.) Match synthesis_do_one_audio_update (#890) +22.) Remove unneeded if(1) in synthesis_do_one_audio_update (#891) +23.) Match synthesis_resample_and_mix_reverb (#893) +24.) Set LANG=C (#896) +25.) Match note_apply_headset_pan_effects (#897) +26.) Match play_sequence (#898) +27.) Match sequence_channel_enable (#899) +28.) Match sequence_player_process_sequence (#900) +29.) Match (eu) alloc_bank_or_seq (#901) +30.) Match alloc_bank_or_seq (#903) +31.) Update README.md (again) +32.) Documented behaviour/fish.inc.c & blue_fish.inc.c (#894) +33.) Labelled 4 behavior files, made object_helper functions consistent (#881) +34.) Add a make target for .copt (#902) +35.) The Big Function PR (Part 3) (#888) +36.) The Big Function PR (Part 4) (#906) +37.) Rename src/audio/memory.c -> heap.c (#907) +38.) Fix BBH texture (#908) + Refresh #6 1.) Make tools work on MinGW (#804) 2.) Document mario_misc (#628) diff --git a/Makefile b/Makefile index dfe087ed..8bd1bd91 100644 --- a/Makefile +++ b/Makefile @@ -42,11 +42,22 @@ ifeq ($(VERSION),eu) GRUCODE_CFLAGS := -DF3D_NEW GRUCODE_ASFLAGS := --defsym F3D_NEW=1 TARGET := sm64.eu +else +ifeq ($(VERSION),sh) + $(warning Building SH is experimental and is prone to breaking. Try at your own risk.) + VERSION_CFLAGS := -DVERSION_SH + VERSION_ASFLAGS := --defsym VERSION_SH=1 + GRUCODE_CFLAGS := -DF3D_NEW + GRUCODE_ASFLAGS := --defsym F3D_NEW=1 + TARGET := sm64.sh +# TODO: GET RID OF THIS!!! We should mandate assets for Shindou like EU but we dont have the addresses extracted yet so we'll just pretend you have everything extracted for now. + NOEXTRACT := 1 else $(error unknown version "$(VERSION)") endif endif endif +endif # Microcode @@ -147,9 +158,13 @@ MIPSISET := -mips2 -32 ifeq ($(VERSION),eu) OPT_FLAGS := -O2 +else +ifeq ($(VERSION),sh) + OPT_FLAGS := -O2 else OPT_FLAGS := -g endif +endif # File dependencies and variables for specific files include Makefile.split @@ -163,11 +178,20 @@ GODDARD_C_FILES := $(foreach dir,$(GODDARD_SRC_DIRS),$(wildcard $(dir)/*.c)) ULTRA_S_FILES := $(foreach dir,$(ULTRA_ASM_DIRS),$(wildcard $(dir)/*.s)) GENERATED_C_FILES := $(BUILD_DIR)/assets/mario_anim_data.c $(BUILD_DIR)/assets/demo_data.c +ifeq ($(VERSION),sh) +SOUND_BANK_FILES := $(wildcard sound/sound_banks/*.json) +SOUND_SEQUENCE_FILES := $(wildcard sound/sequences/jp/*.m64) \ + $(wildcard sound/sequences/*.m64) \ + $(foreach file,$(wildcard sound/sequences/jp/*.s),$(BUILD_DIR)/$(file:.s=.m64)) \ + $(foreach file,$(wildcard sound/sequences/*.s),$(BUILD_DIR)/$(file:.s=.m64)) +else SOUND_BANK_FILES := $(wildcard sound/sound_banks/*.json) SOUND_SEQUENCE_FILES := $(wildcard sound/sequences/$(VERSION)/*.m64) \ $(wildcard sound/sequences/*.m64) \ $(foreach file,$(wildcard sound/sequences/$(VERSION)/*.s),$(BUILD_DIR)/$(file:.s=.m64)) \ $(foreach file,$(wildcard sound/sequences/*.s),$(BUILD_DIR)/$(file:.s=.m64)) +endif + SOUND_SAMPLE_DIRS := $(wildcard sound/samples/*) SOUND_SAMPLE_AIFFS := $(foreach dir,$(SOUND_SAMPLE_DIRS),$(wildcard $(dir)/*.aiff)) SOUND_SAMPLE_TABLES := $(foreach file,$(SOUND_SAMPLE_AIFFS),$(BUILD_DIR)/$(file:.aiff=.table)) @@ -233,7 +257,7 @@ endif INCLUDE_CFLAGS := -I include -I $(BUILD_DIR) -I $(BUILD_DIR)/include -I src -I . # Check code syntax with host compiler -CC_CHECK := gcc -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) $(INCLUDE_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -DNON_MATCHING -DAVOID_UB $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) +CC_CHECK := gcc -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) $(INCLUDE_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -Wno-main -DNON_MATCHING -DAVOID_UB $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) ASFLAGS := -march=vr4300 -mabi=32 -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) $(GRUCODE_ASFLAGS) CFLAGS = -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -Xfullwarn -signed $(OPT_FLAGS) $(TARGET_CFLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(MIPSISET) $(GRUCODE_CFLAGS) @@ -250,6 +274,9 @@ else CC_CHECK += -m32 endif +# Prevent a crash with -sopt +export LANG := C + ####################### Other Tools ######################### # N64 tools @@ -324,12 +351,18 @@ $(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/us/define_courses.inc.c $(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/de/define_courses.inc.c $(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/fr/define_courses.inc.c +else +ifeq ($(VERSION),sh) +TEXT_DIRS := text/jp +$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/jp/define_text.inc.c + else TEXT_DIRS := text/$(VERSION) # non-EU encoded text inserted into segment 0x02 $(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c endif +endif $(BUILD_DIR)/text/%/define_courses.inc.c: text/define_courses.inc.c text/%/courses.h $(CPP) $(VERSION_CFLAGS) $< -o $@ -I text/$*/ @@ -422,8 +455,13 @@ $(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_banks/ $(SOUND_BANK_FILES) $(SOUND_ $(SOUND_BIN_DIR)/sound_data.tbl: $(SOUND_BIN_DIR)/sound_data.ctl @true +ifeq ($(VERSION),sh) +$(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json sound/sequences/ sound/sequences/jp/ $(SOUND_SEQUENCE_FILES) $(ENDIAN_BITWIDTH) + $(PYTHON) tools/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(VERSION_CFLAGS) $$(cat $(ENDIAN_BITWIDTH)) +else $(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json sound/sequences/ sound/sequences/$(VERSION)/ $(SOUND_SEQUENCE_FILES) $(ENDIAN_BITWIDTH) $(PYTHON) tools/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(VERSION_CFLAGS) $$(cat $(ENDIAN_BITWIDTH)) +endif $(SOUND_BIN_DIR)/bank_sets: $(SOUND_BIN_DIR)/sequences.bin @true @@ -477,6 +515,17 @@ $(BUILD_DIR)/lib/src/sprintf.o: OPT_FLAGS := -O3 $(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2 $(BUILD_DIR)/src/audio/load.o: OPT_FLAGS := -O2 $(BUILD_DIR)/src/audio/external.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 +else + +# The source-to-source optimizer copt is enabled for audio. This makes it use +# acpp, which needs -Wp,-+ to handle C++-style comments. +$(BUILD_DIR)/src/audio/effects.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 -sopt,-inline=sequence_channel_process_sound,-scalaroptimize=1 -Wp,-+ + +# Add a target for build/eu/src/audio/*.copt to make it easier to see debug +$(BUILD_DIR)/src/audio/%.acpp: src/audio/%.c + $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/acpp $(TARGET_CFLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -D__sgi -+ $< > $@ +$(BUILD_DIR)/src/audio/%.copt: $(BUILD_DIR)/src/audio/%.acpp + $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/copt -signed -I=$< -CMP=$@ -cp=i -scalaroptimize=1 endif ifeq ($(NON_MATCHING),0) diff --git a/Makefile.split b/Makefile.split index 416985c1..9619c603 100644 --- a/Makefile.split +++ b/Makefile.split @@ -63,7 +63,7 @@ MOLE_DIRS := monty_mole_hole monty_mole smoke ukiki fwoosh LAKITU_DIRS := lakitu_cameraman toad mips boo_castle PEACH_DIRS := bird peach yoshi BOWSER_DIRS := bowser_flame impact_ring yellow_sphere bowser bomb impact_smoke -MARIO_DIRS := mario bubble walk_smoke burn_smoke stomp_smoke water_waves sparkle water_splash white_particle_small sparkle_animation +MARIO_DIRS := mario bubble walk_smoke burn_smoke stomp_smoke water_wave sparkle water_splash white_particle_small sparkle_animation # Actor Files AMP_CHUCKYA_FILES := $(foreach dir,$(addprefix $(ACTOR_DIR)/,$(AMP_DIRS)),$(patsubst %.png,%.inc.c,$(wildcard $(dir)/*.png))) diff --git a/README.md b/README.md index b0536785..6754e1c8 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ # Super Mario 64 -This repo contains a full decompilation of Super Mario 64 (J) and (U). +This repo contains a full decompilation of Super Mario 64 (J), (U), and (E). The source and data have been decompiled but complete naming and documentation -all of the code and data is still a work in progress. Decompiling the (E) ROM +all of the code and data is still a work in progress. Decompiling the Shindou ROM is also an ongoing effort. It builds the following ROMs: * sm64.jp.z64 `sha1: 8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51` * sm64.us.z64 `sha1: 9bef1128717f958171a4afac3ed78ee2bb4e86ce` +* sm64.eu.z64 `sha1: 4ac5721683d0e0b6bbb561b58a71740845dceea9` This repo does not include all assets necessary for compiling the ROMs. A prior copy of the game is required to extract the required assets. diff --git a/actors/boo/geo.inc.c b/actors/boo/geo.inc.c index f8d31ba3..4fa9721b 100644 --- a/actors/boo/geo.inc.c +++ b/actors/boo/geo.inc.c @@ -4,7 +4,7 @@ const GeoLayout boo_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 26214), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_seg5_dl_0500C1B0), diff --git a/actors/boo_castle/geo.inc.c b/actors/boo_castle/geo.inc.c index 5935234c..1b3ee4f3 100644 --- a/actors/boo_castle/geo.inc.c +++ b/actors/boo_castle/geo.inc.c @@ -4,7 +4,7 @@ const GeoLayout boo_castle_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 26214), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_castle_seg6_dl_06017CE0), diff --git a/actors/bowser/geo.inc.c b/actors/bowser/geo.inc.c index 08f6133a..06d2f13a 100644 --- a/actors/bowser/geo.inc.c +++ b/actors/bowser/geo.inc.c @@ -23,7 +23,7 @@ const GeoLayout bowser_geo_0000D8[] = { GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06043698), - GEO_ASM(0, Geo18_802B798C), + GEO_ASM(0, geo_update_body_rot_from_parent), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 118, 67, 105, NULL), @@ -135,7 +135,7 @@ const GeoLayout bowser_geo_000424[] = { GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06043698), - GEO_ASM(0, Geo18_802B798C), + GEO_ASM(0, geo_update_body_rot_from_parent), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 118, 67, 105, NULL), @@ -251,7 +251,7 @@ const GeoLayout bowser_geo_000770[] = { GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL), GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06043698), - GEO_ASM(0, Geo18_802B798C), + GEO_ASM(0, geo_update_body_rot_from_parent), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 118, 67, 105, NULL), @@ -350,7 +350,7 @@ const GeoLayout bowser_shadow_geo[] = { const GeoLayout bowser_geo[] = { GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), #ifdef VERSION_JP GEO_SWITCH_CASE(2, geo_switch_anim_state), #endif @@ -360,20 +360,20 @@ const GeoLayout bowser_geo[] = { GEO_OPEN_NODE(), GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B7D44), + GEO_ASM(0, geo_bits_bowser_coloring), GEO_BRANCH(1, bowser_geo_0000D8), GEO_CLOSE_NODE(), GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B7D44), + GEO_ASM(0, geo_bits_bowser_coloring), GEO_BRANCH(1, bowser_geo_000424), GEO_CLOSE_NODE(), #ifndef VERSION_JP GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B7D44), + GEO_ASM(0, geo_bits_bowser_coloring), GEO_BRANCH(1, bowser_shadow_geo), GEO_CLOSE_NODE(), #endif @@ -387,7 +387,7 @@ const GeoLayout bowser_geo[] = { const GeoLayout bowser2_geo[] = { GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), #ifdef VERSION_JP GEO_SWITCH_CASE(2, geo_switch_anim_state), @@ -399,20 +399,20 @@ const GeoLayout bowser2_geo[] = { GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B7D44), + GEO_ASM(0, geo_bits_bowser_coloring), GEO_BRANCH(1, bowser_geo_0000D8), GEO_CLOSE_NODE(), GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B7D44), + GEO_ASM(0, geo_bits_bowser_coloring), GEO_BRANCH(1, bowser_geo_000770), GEO_CLOSE_NODE(), #ifndef VERSION_JP GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B7D44), + GEO_ASM(0, geo_bits_bowser_coloring), GEO_BRANCH(1, bowser_shadow_geo), GEO_CLOSE_NODE(), #endif diff --git a/actors/bowser_key/geo.inc.c b/actors/bowser_key/geo.inc.c index 09c6e83f..d7e2a85f 100644 --- a/actors/bowser_key/geo.inc.c +++ b/actors/bowser_key/geo.inc.c @@ -18,7 +18,7 @@ const GeoLayout bowser_key_cutscene_geo[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802BA2B0), + GEO_ASM(0, geo_scale_bowser_key), GEO_SCALE(0x00, 65536), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_key_dl), diff --git a/actors/chuckya/geo.inc.c b/actors/chuckya/geo.inc.c index 6b9e330a..902693c1 100644 --- a/actors/chuckya/geo.inc.c +++ b/actors/chuckya/geo.inc.c @@ -99,7 +99,7 @@ const GeoLayout chuckya_geo[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, chuckya_seg8_dl_0800A510), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), - GEO_ASM(0, Geo18_802A719C), + GEO_ASM(0, geo_update_held_mario_pos), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/actors/group0.c b/actors/group0.c index 63e333ad..f852e6c6 100644 --- a/actors/group0.c +++ b/actors/group0.c @@ -16,7 +16,7 @@ #include "stomp_smoke/model.inc.c" -#include "water_waves/model.inc.c" +#include "water_wave/model.inc.c" #include "sparkle/model.inc.c" diff --git a/actors/group0.h b/actors/group0.h index 744f3d6f..44f8b05d 100644 --- a/actors/group0.h +++ b/actors/group0.h @@ -283,7 +283,7 @@ extern const Gfx sparkles_animation_seg4_dl_04035348[]; extern const Gfx sparkles_animation_seg4_dl_04035360[]; // stomp_smoke -extern const GeoLayout spot_on_ground_geo[]; +extern const GeoLayout small_water_splash_geo[]; extern const GeoLayout mario_TODO_geo_0000E0[]; extern const Gfx stomp_smoke_seg4_dl_04025148[]; extern const Gfx stomp_smoke_seg4_dl_04025190[]; @@ -326,15 +326,15 @@ extern const Gfx water_splash_seg4_dl_040326D0[]; extern const Gfx water_splash_seg4_dl_040326E8[]; // water_waves -extern const GeoLayout water_waves_surface_geo[]; -extern const GeoLayout water_waves_geo[]; -extern const Gfx water_waves_seg4_dl_04027358[]; -extern const Gfx water_waves_seg4_dl_040273A0[]; -extern const Gfx water_waves_seg4_dl_040273D8[]; -extern const Gfx water_waves_seg4_dl_040273F0[]; -extern const Gfx water_waves_seg4_dl_04027408[]; -extern const Gfx water_waves_seg4_dl_04027420[]; -extern const Gfx water_waves_seg4_dl_04027438[]; +extern const GeoLayout idle_water_wave_geo[]; +extern const GeoLayout wave_trail_geo[]; +extern const Gfx water_wave_seg4_dl_04027358[]; +extern const Gfx water_wave_seg4_dl_040273A0[]; +extern const Gfx water_wave_seg4_dl_040273D8[]; +extern const Gfx water_wave_seg4_dl_040273F0[]; +extern const Gfx water_wave_seg4_dl_04027408[]; +extern const Gfx water_wave_seg4_dl_04027420[]; +extern const Gfx water_wave_seg4_dl_04027438[]; // white_particle_small extern const Gfx white_particle_small_dl_begin[]; diff --git a/actors/group0_geo.c b/actors/group0_geo.c index 181eded0..bddefae9 100644 --- a/actors/group0_geo.c +++ b/actors/group0_geo.c @@ -11,7 +11,7 @@ #include "walk_smoke/geo.inc.c" #include "burn_smoke/geo.inc.c" #include "stomp_smoke/geo.inc.c" -#include "water_waves/geo.inc.c" +#include "water_wave/geo.inc.c" #include "sparkle/geo.inc.c" #include "water_splash/geo.inc.c" #include "sparkle_animation/geo.inc.c" diff --git a/actors/impact_ring/geo.inc.c b/actors/impact_ring/geo.inc.c index 57182d1c..a3a7898f 100644 --- a/actors/impact_ring/geo.inc.c +++ b/actors/impact_ring/geo.inc.c @@ -2,7 +2,7 @@ const GeoLayout invisible_bowser_accessory_geo[] = { GEO_CULLING_RADIUS(10000), GEO_OPEN_NODE(), - GEO_ASM(20, Geo18_8029D924), + GEO_ASM(20, geo_update_layer_transparency), GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, impact_ring_seg6_dl_0601EAC0), GEO_CLOSE_NODE(), GEO_END(), diff --git a/actors/impact_smoke/geo.inc.c b/actors/impact_smoke/geo.inc.c index c85288e0..d8790212 100644 --- a/actors/impact_smoke/geo.inc.c +++ b/actors/impact_smoke/geo.inc.c @@ -2,7 +2,7 @@ const GeoLayout bowser_impact_smoke_geo[] = { GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_SWITCH_CASE(5, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, impact_smoke_seg6_dl_06062B38), diff --git a/actors/king_bobomb/geo.inc.c b/actors/king_bobomb/geo.inc.c index adc28986..5b7ced61 100644 --- a/actors/king_bobomb/geo.inc.c +++ b/actors/king_bobomb/geo.inc.c @@ -80,7 +80,7 @@ const GeoLayout king_bobomb_geo[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500A6C0), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), - GEO_ASM(0, Geo18_802A719C), + GEO_ASM(0, geo_update_held_mario_pos), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/actors/klepto/geo.inc.c b/actors/klepto/geo.inc.c index a1b65aaa..0d0bbe30 100644 --- a/actors/klepto/geo.inc.c +++ b/actors/klepto/geo.inc.c @@ -31,7 +31,7 @@ const GeoLayout klepto_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802A45E4), + GEO_ASM(0, geo_offset_klepto_held_object), GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, mario_cap_seg3_dl_03022F48), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), @@ -39,9 +39,9 @@ const GeoLayout klepto_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802A45E4), + GEO_ASM(0, geo_offset_klepto_held_object), GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, star_seg3_dl_0302B870), - GEO_ASM(0, Geo18_802A45E4), + GEO_ASM(0, geo_offset_klepto_held_object), GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_ALPHA, 0, 100, 0, 180, 270, 0, star_seg3_dl_0302BA18), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), @@ -49,7 +49,7 @@ const GeoLayout klepto_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802A45E4), + GEO_ASM(0, geo_offset_klepto_held_object), GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, transparent_star_seg3_dl_0302C620), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/actors/lakitu_enemy/geo.inc.c b/actors/lakitu_enemy/geo.inc.c index df9d34b2..93045f6e 100644 --- a/actors/lakitu_enemy/geo.inc.c +++ b/actors/lakitu_enemy/geo.inc.c @@ -23,7 +23,7 @@ const GeoLayout enemy_lakitu_geo[] = { GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 18, -72, NULL), GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_enemy_seg5_dl_050134A8), - GEO_ASM(0, Geo18_8029D890), + GEO_ASM(0, geo_update_projectile_pos_from_parent), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/actors/mario/geo.inc.c b/actors/mario/geo.inc.c index 06978aa7..736d31f0 100644 --- a/actors/mario/geo.inc.c +++ b/actors/mario/geo.inc.c @@ -105,7 +105,7 @@ const GeoLayout mario_geo_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_butt), // starts sharing solid color with mario_torso (blue) GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -222,7 +222,7 @@ const GeoLayout mario_geo_medium_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_butt), // starts sharing solid color with mario_torso (blue) GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -389,7 +389,7 @@ const GeoLayout mario_geo_low_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_butt), // starts sharing solid color with mario_torso (blue) GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -560,7 +560,7 @@ const GeoLayout mario_vanish_geo_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -677,7 +677,7 @@ const GeoLayout mario_vanish_geo_medium_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -844,7 +844,7 @@ const GeoLayout mario_vanish_geo_low_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -995,7 +995,7 @@ const GeoLayout mario_metal_geo_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_butt), // starts sharing metal texture with the dls below GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -1112,7 +1112,7 @@ const GeoLayout mario_metal_geo_medium_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_medium_poly_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -1259,7 +1259,7 @@ const GeoLayout mario_metal_geo_low_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_low_poly_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -1410,7 +1410,7 @@ const GeoLayout mario_metal_vanish_geo_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -1527,7 +1527,7 @@ const GeoLayout mario_metal_vanish_geo_medium_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_medium_poly_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), @@ -1677,7 +1677,7 @@ const GeoLayout mario_metal_vanish_geo_low_poly_body[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_low_poly_butt), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B1BB0), + GEO_ASM(0, geo_move_mario_part_from_parent), GEO_ASM(0, geo_mario_tilt_torso), GEO_ROTATION_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), diff --git a/actors/mario_cap/geo.inc.c b/actors/mario_cap/geo.inc.c index 291d0357..5e59c311 100644 --- a/actors/mario_cap/geo.inc.c +++ b/actors/mario_cap/geo.inc.c @@ -4,7 +4,7 @@ const GeoLayout marios_cap_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(10, Geo18_8029D924), + GEO_ASM(10, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_seg3_dl_03022F48), @@ -21,7 +21,7 @@ const GeoLayout marios_metal_cap_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(10, Geo18_8029D924), + GEO_ASM(10, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_seg3_dl_03022FF8), @@ -38,7 +38,7 @@ const GeoLayout marios_wing_cap_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(10, Geo18_8029D924), + GEO_ASM(10, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_NODE_START(), @@ -62,7 +62,7 @@ const GeoLayout marios_winged_metal_cap_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(10, Geo18_8029D924), + GEO_ASM(10, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_NODE_START(), diff --git a/actors/mist/geo.inc.c b/actors/mist/geo.inc.c index 6e809210..93308965 100644 --- a/actors/mist/geo.inc.c +++ b/actors/mist/geo.inc.c @@ -2,7 +2,7 @@ const GeoLayout mist_geo[] = { GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mist_seg3_dl_03000880), GEO_CLOSE_NODE(), GEO_END(), @@ -12,7 +12,7 @@ const GeoLayout mist_geo[] = { const GeoLayout white_puff_geo[] = { GEO_NODE_START(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mist_seg3_dl_03000920), GEO_CLOSE_NODE(), GEO_END(), diff --git a/actors/moneybag/geo.inc.c b/actors/moneybag/geo.inc.c index a7149dbc..2d1db035 100644 --- a/actors/moneybag/geo.inc.c +++ b/actors/moneybag/geo.inc.c @@ -44,7 +44,7 @@ const GeoLayout moneybag_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_BRANCH(1, moneybag_geo_000000), diff --git a/actors/monty_mole/geo.inc.c b/actors/monty_mole/geo.inc.c index b7942f02..5c76e89c 100644 --- a/actors/monty_mole/geo.inc.c +++ b/actors/monty_mole/geo.inc.c @@ -30,7 +30,7 @@ const GeoLayout monty_mole_geo[] = { GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, monty_mole_seg5_dl_050039D0), GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 80, 0, 0, monty_mole_seg5_dl_05003F50), - GEO_ASM(0, Geo18_8029D890), + GEO_ASM(0, geo_update_projectile_pos_from_parent), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/actors/peach/geo.inc.c b/actors/peach/geo.inc.c index 3e59deba..876bfee5 100644 --- a/actors/peach/geo.inc.c +++ b/actors/peach/geo.inc.c @@ -140,7 +140,7 @@ const GeoLayout peach_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(10, Geo18_8029D924), + GEO_ASM(10, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_BRANCH(1, peach_geo_000098), diff --git a/actors/snowman/geo.inc.c b/actors/snowman/geo.inc.c index a08f4dce..2dded75e 100644 --- a/actors/snowman/geo.inc.c +++ b/actors/snowman/geo.inc.c @@ -37,7 +37,7 @@ const GeoLayout mr_blizzard_hidden_geo[] = { GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, snowman_seg5_dl_0500C500), GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, snowman_seg5_dl_0500CAA8), - GEO_ASM(0, Geo18_8029D890), + GEO_ASM(0, geo_update_projectile_pos_from_parent), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 356, 0, 0, NULL), diff --git a/actors/snufit/geo.inc.c b/actors/snufit/geo.inc.c index f90c92b1..a8aabecc 100644 --- a/actors/snufit/geo.inc.c +++ b/actors/snufit/geo.inc.c @@ -4,7 +4,7 @@ const GeoLayout snufit_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8030D93C), + GEO_ASM(0, geo_snufit_move_mask), GEO_TRANSLATE_NODE(0x00, 0, 0, 0), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, snufit_seg6_dl_06009748), @@ -14,7 +14,7 @@ const GeoLayout snufit_geo[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, snufit_seg6_dl_06009B68), GEO_BILLBOARD(), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8030D9AC), + GEO_ASM(0, geo_snufit_scale_body), GEO_SCALE(0x00, 0), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_ALPHA, snufit_seg6_dl_06009A10), diff --git a/actors/stomp_smoke/geo.inc.c b/actors/stomp_smoke/geo.inc.c index 7cbe382b..1fc0a468 100644 --- a/actors/stomp_smoke/geo.inc.c +++ b/actors/stomp_smoke/geo.inc.c @@ -1,7 +1,8 @@ // 0x1700009C -const GeoLayout spot_on_ground_geo[] = { +const GeoLayout small_water_splash_geo[] = { GEO_SWITCH_CASE(6, geo_switch_anim_state), GEO_OPEN_NODE(), + // TODO: Rename these display lists GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_040251F8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025210), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025228), diff --git a/actors/sushi/geo.inc.c b/actors/sushi/geo.inc.c index e6219ae5..4e401699 100644 --- a/actors/sushi/geo.inc.c +++ b/actors/sushi/geo.inc.c @@ -8,7 +8,7 @@ const GeoLayout sushi_geo[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, sushi_seg5_dl_0500A768), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_802B798C), + GEO_ASM(0, geo_update_body_rot_from_parent), GEO_CLOSE_NODE(), GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 201, 0, 0, sushi_seg5_dl_05009DD0), diff --git a/actors/toad/geo.inc.c b/actors/toad/geo.inc.c index 68de0021..fd8af275 100644 --- a/actors/toad/geo.inc.c +++ b/actors/toad/geo.inc.c @@ -126,7 +126,7 @@ const GeoLayout toad_geo[] = { GEO_OPEN_NODE(), GEO_SCALE(0x00, 16384), GEO_OPEN_NODE(), - GEO_ASM(10, Geo18_8029D924), + GEO_ASM(10, geo_update_layer_transparency), GEO_SWITCH_CASE(2, geo_switch_anim_state), GEO_OPEN_NODE(), GEO_BRANCH(1, toad_geo_000114), diff --git a/actors/water_ring/geo.inc.c b/actors/water_ring/geo.inc.c index 07464e62..3d2b546a 100644 --- a/actors/water_ring/geo.inc.c +++ b/actors/water_ring/geo.inc.c @@ -4,7 +4,7 @@ const GeoLayout water_ring_geo[] = { GEO_OPEN_NODE(), GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, water_ring_seg6_dl_06013AC0), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/actors/water_wave/geo.inc.c b/actors/water_wave/geo.inc.c new file mode 100644 index 00000000..6abbc0da --- /dev/null +++ b/actors/water_wave/geo.inc.c @@ -0,0 +1,29 @@ +// 0x17000124 +const GeoLayout idle_water_wave_geo[] = { + GEO_SWITCH_CASE(6, geo_switch_anim_state), + GEO_OPEN_NODE(), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_040273F0), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027408), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027420), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027420), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027408), + GEO_CLOSE_NODE(), + GEO_END(), +}; + +// 0x17000168 +const GeoLayout wave_trail_geo[] = { + GEO_SWITCH_CASE(8, geo_switch_anim_state), + GEO_OPEN_NODE(), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_040273F0), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027408), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027420), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438), + GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438), + GEO_CLOSE_NODE(), + GEO_END(), +}; diff --git a/actors/water_waves/model.inc.c b/actors/water_wave/model.inc.c similarity index 58% rename from actors/water_waves/model.inc.c rename to actors/water_wave/model.inc.c index e6e48a9e..cd5c97cf 100644 --- a/actors/water_waves/model.inc.c +++ b/actors/water_wave/model.inc.c @@ -1,7 +1,7 @@ // Water Waves // 0x04025318 -static const Vtx water_waves_seg4_vertex_04025318[] = { +static const Vtx water_wave_seg4_vertex_04025318[] = { {{{ -64, 0, 64}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xc8}}}, {{{ 64, 0, 64}, 0, { 992, 0}, {0xff, 0xff, 0xff, 0xc8}}}, {{{ 64, 0, -64}, 0, { 992, 992}, {0xff, 0xff, 0xff, 0xc8}}}, @@ -9,27 +9,27 @@ static const Vtx water_waves_seg4_vertex_04025318[] = { }; // 0x04025358 -ALIGNED8 static const u8 water_waves_seg4_texture_04025358[] = { -#include "actors/water_waves/water_waves_0.ia16.inc.c" +ALIGNED8 static const u8 water_wave_seg4_texture_04025358[] = { +#include "actors/water_wave/water_wave_0.ia16.inc.c" }; // 0x04025B58 -ALIGNED8 static const u8 water_waves_seg4_texture_04025B58[] = { -#include "actors/water_waves/water_waves_1.ia16.inc.c" +ALIGNED8 static const u8 water_wave_seg4_texture_04025B58[] = { +#include "actors/water_wave/water_wave_1.ia16.inc.c" }; // 0x04026358 -ALIGNED8 static const u8 water_waves_seg4_texture_04026358[] = { -#include "actors/water_waves/water_waves_2.ia16.inc.c" +ALIGNED8 static const u8 water_wave_seg4_texture_04026358[] = { +#include "actors/water_wave/water_wave_2.ia16.inc.c" }; // 0x04026B58 -ALIGNED8 static const u8 water_waves_seg4_texture_04026B58[] = { -#include "actors/water_waves/water_waves_3.ia16.inc.c" +ALIGNED8 static const u8 water_wave_seg4_texture_04026B58[] = { +#include "actors/water_wave/water_wave_3.ia16.inc.c" }; // 0x04027358 - 0x040273A0 -const Gfx water_waves_seg4_dl_04027358[] = { +const Gfx water_wave_seg4_dl_04027358[] = { gsSPClearGeometryMode(G_LIGHTING), gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), @@ -42,7 +42,7 @@ const Gfx water_waves_seg4_dl_04027358[] = { }; // 0x040273A0 - 0x040273D8 -const Gfx water_waves_seg4_dl_040273A0[] = { +const Gfx water_wave_seg4_dl_040273A0[] = { gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), gsDPPipeSync(), gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF), @@ -52,36 +52,36 @@ const Gfx water_waves_seg4_dl_040273A0[] = { }; // 0x040273D8 - 0x040273F0 -const Gfx water_waves_seg4_dl_040273D8[] = { - gsSPDisplayList(water_waves_seg4_dl_04027358), - gsSPVertex(water_waves_seg4_vertex_04025318, 4, 0), - gsSPBranchList(water_waves_seg4_dl_040273A0), +const Gfx water_wave_seg4_dl_040273D8[] = { + gsSPDisplayList(water_wave_seg4_dl_04027358), + gsSPVertex(water_wave_seg4_vertex_04025318, 4, 0), + gsSPBranchList(water_wave_seg4_dl_040273A0), }; // 0x040273F0 - 0x04027408 -const Gfx water_waves_seg4_dl_040273F0[] = { +const Gfx water_wave_seg4_dl_040273F0[] = { gsDPPipeSync(), - gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_waves_seg4_texture_04025358), - gsSPBranchList(water_waves_seg4_dl_040273D8), + gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04025358), + gsSPBranchList(water_wave_seg4_dl_040273D8), }; // 0x04027408 - 0x04027420 -const Gfx water_waves_seg4_dl_04027408[] = { +const Gfx water_wave_seg4_dl_04027408[] = { gsDPPipeSync(), - gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_waves_seg4_texture_04025B58), - gsSPBranchList(water_waves_seg4_dl_040273D8), + gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04025B58), + gsSPBranchList(water_wave_seg4_dl_040273D8), }; // 0x04027420 - 0x04027438 -const Gfx water_waves_seg4_dl_04027420[] = { +const Gfx water_wave_seg4_dl_04027420[] = { gsDPPipeSync(), - gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_waves_seg4_texture_04026358), - gsSPBranchList(water_waves_seg4_dl_040273D8), + gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04026358), + gsSPBranchList(water_wave_seg4_dl_040273D8), }; // 0x04027438 - 0x04027450 -const Gfx water_waves_seg4_dl_04027438[] = { +const Gfx water_wave_seg4_dl_04027438[] = { gsDPPipeSync(), - gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_waves_seg4_texture_04026B58), - gsSPBranchList(water_waves_seg4_dl_040273D8), + gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04026B58), + gsSPBranchList(water_wave_seg4_dl_040273D8), }; diff --git a/actors/water_waves/geo.inc.c b/actors/water_waves/geo.inc.c deleted file mode 100644 index 8f0fe147..00000000 --- a/actors/water_waves/geo.inc.c +++ /dev/null @@ -1,29 +0,0 @@ -// 0x17000124 -const GeoLayout water_waves_surface_geo[] = { - GEO_SWITCH_CASE(6, geo_switch_anim_state), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_040273F0), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027408), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027420), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027438), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027420), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027408), - GEO_CLOSE_NODE(), - GEO_END(), -}; - -// 0x17000168 -const GeoLayout water_waves_geo[] = { - GEO_SWITCH_CASE(8, geo_switch_anim_state), - GEO_OPEN_NODE(), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_040273F0), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027408), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027420), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027438), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027438), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027438), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027438), - GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_waves_seg4_dl_04027438), - GEO_CLOSE_NODE(), - GEO_END(), -}; diff --git a/asm/entry.s b/asm/entry.s index bce00c84..755e1b4b 100644 --- a/asm/entry.s +++ b/asm/entry.s @@ -8,7 +8,7 @@ .section .text, "ax" -glabel EntryPoint +glabel entry_point lui $t0, %hi(_mainSegmentNoloadStart) # $t0, 0x8034 lui $t1, %lo(_mainSegmentNoloadSizeHi) # lui $t1, 2 addiu $t0, %lo(_mainSegmentNoloadStart) # addiu $t0, $t0, -0x6df0 @@ -19,9 +19,9 @@ glabel EntryPoint sw $zero, 4($t0) bnez $t1, .L80246010 addi $t0, $t0, 8 - lui $t2, %hi(Main) # $t2, 0x8024 + lui $t2, %hi(main_func) # $t2, 0x8024 lui $sp, %hi(gIdleThreadStack) # $sp, 0x8020 - addiu $t2, %lo(Main) # addiu $t2, $t2, 0x6dc4 + addiu $t2, %lo(main_func) # addiu $t2, $t2, 0x6dc4 jr $t2 addiu $sp, %lo(gIdleThreadStack) # addiu $sp, $sp, 0xa00 nop diff --git a/asm/non_matchings/alloc_bank_or_seq.s b/asm/non_matchings/alloc_bank_or_seq.s deleted file mode 100644 index eae84948..00000000 --- a/asm/non_matchings/alloc_bank_or_seq.s +++ /dev/null @@ -1,303 +0,0 @@ -glabel alloc_bank_or_seq -/* 0D13DC 803163DC 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 0D13E0 803163E0 AFB00020 */ sw $s0, 0x20($sp) -/* 0D13E4 803163E4 00808025 */ move $s0, $a0 -/* 0D13E8 803163E8 AFBF0024 */ sw $ra, 0x24($sp) -/* 0D13EC 803163EC AFA5007C */ sw $a1, 0x7c($sp) -/* 0D13F0 803163F0 14E000CC */ bnez $a3, .L80316724 -/* 0D13F4 803163F4 AFA60080 */ sw $a2, 0x80($sp) -/* 0D13F8 803163F8 3C0E8022 */ lui $t6, %hi(gSeqLoadedPool) # $t6, 0x8022 -/* 0D13FC 803163FC 25CE1328 */ addiu $t6, %lo(gSeqLoadedPool) # addiu $t6, $t6, 0x1328 -/* 0D1400 80316400 148E0006 */ bne $a0, $t6, .L8031641C -/* 0D1404 80316404 26030194 */ addiu $v1, $s0, 0x194 -/* 0D1408 80316408 3C0A8022 */ lui $t2, %hi(gSeqLoadStatus) # $t2, 0x8022 -/* 0D140C 8031640C 254A1910 */ addiu $t2, %lo(gSeqLoadStatus) # addiu $t2, $t2, 0x1910 -/* 0D1410 80316410 AFAA005C */ sw $t2, 0x5c($sp) -/* 0D1414 80316414 10000009 */ b .L8031643C -/* 0D1418 80316418 A3A0005B */ sb $zero, 0x5b($sp) -.L8031641C: -/* 0D141C 8031641C 3C0F8022 */ lui $t7, %hi(gBankLoadedPool) # $t7, 0x8022 -/* 0D1420 80316420 25EF14F8 */ addiu $t7, %lo(gBankLoadedPool) # addiu $t7, $t7, 0x14f8 -/* 0D1424 80316424 160F0005 */ bne $s0, $t7, .L8031643C -/* 0D1428 80316428 3C0A8022 */ lui $t2, %hi(gBankLoadStatus) # $t2, 0x8022 -/* 0D142C 8031642C 254A18D0 */ addiu $t2, %lo(gBankLoadStatus) # addiu $t2, $t2, 0x18d0 -/* 0D1430 80316430 240C0001 */ li $t4, 1 -/* 0D1434 80316434 A3AC005B */ sb $t4, 0x5b($sp) -/* 0D1438 80316438 AFAA005C */ sw $t2, 0x5c($sp) -.L8031643C: -/* 0D143C 8031643C 8C62001C */ lw $v0, 0x1c($v1) -/* 0D1440 80316440 240BFFFF */ li $t3, -1 -/* 0D1444 80316444 8FAA005C */ lw $t2, 0x5c($sp) -/* 0D1448 80316448 15620003 */ bne $t3, $v0, .L80316458 -/* 0D144C 8031644C 93AC005B */ lbu $t4, 0x5b($sp) -/* 0D1450 80316450 10000003 */ b .L80316460 -/* 0D1454 80316454 00003825 */ move $a3, $zero -.L80316458: -/* 0D1458 80316458 004AC021 */ addu $t8, $v0, $t2 -/* 0D145C 8031645C 93070000 */ lbu $a3, ($t8) -.L80316460: -/* 0D1460 80316460 8C620028 */ lw $v0, 0x28($v1) -/* 0D1464 80316464 24090003 */ li $t1, 3 -/* 0D1468 80316468 01274026 */ xor $t0, $t1, $a3 -/* 0D146C 8031646C 15620003 */ bne $t3, $v0, .L8031647C -/* 0D1470 80316470 2D080001 */ sltiu $t0, $t0, 1 -/* 0D1474 80316474 10000003 */ b .L80316484 -/* 0D1478 80316478 00002825 */ move $a1, $zero -.L8031647C: -/* 0D147C 8031647C 004AC821 */ addu $t9, $v0, $t2 -/* 0D1480 80316480 93250000 */ lbu $a1, ($t9) -.L80316484: -/* 0D1484 80316484 0008202B */ sltu $a0, $zero, $t0 -/* 0D1488 80316488 10800005 */ beqz $a0, .L803164A0 -/* 0D148C 8031648C 00E03025 */ move $a2, $a3 -/* 0D1490 80316490 01252026 */ xor $a0, $t1, $a1 -/* 0D1494 80316494 2C840001 */ sltiu $a0, $a0, 1 -/* 0D1498 80316498 0004682B */ sltu $t5, $zero, $a0 -/* 0D149C 8031649C 01A02025 */ move $a0, $t5 -.L803164A0: -/* 0D14A0 803164A0 2CCE0001 */ sltiu $t6, $a2, 1 -/* 0D14A4 803164A4 11C00004 */ beqz $t6, .L803164B8 -/* 0D14A8 803164A8 2CAF0001 */ sltiu $t7, $a1, 1 -/* 0D14AC 803164AC AC600000 */ sw $zero, ($v1) -/* 0D14B0 803164B0 10000020 */ b .L80316534 -/* 0D14B4 803164B4 24080001 */ li $t0, 1 -.L803164B8: -/* 0D14B8 803164B8 11E00005 */ beqz $t7, .L803164D0 -/* 0D14BC 803164BC 00A01025 */ move $v0, $a1 -/* 0D14C0 803164C0 24180001 */ li $t8, 1 -/* 0D14C4 803164C4 AC780000 */ sw $t8, ($v1) -/* 0D14C8 803164C8 1000001A */ b .L80316534 -/* 0D14CC 803164CC 24080001 */ li $t0, 1 -.L803164D0: -/* 0D14D0 803164D0 10800003 */ beqz $a0, .L803164E0 -/* 0D14D4 803164D4 00000000 */ nop -/* 0D14D8 803164D8 10000016 */ b .L80316534 -/* 0D14DC 803164DC 24080001 */ li $t0, 1 -.L803164E0: -/* 0D14E0 803164E0 11000004 */ beqz $t0, .L803164F4 -/* 0D14E4 803164E4 00000000 */ nop -/* 0D14E8 803164E8 AC600000 */ sw $zero, ($v1) -/* 0D14EC 803164EC 10000011 */ b .L80316534 -/* 0D14F0 803164F0 24080001 */ li $t0, 1 -.L803164F4: -/* 0D14F4 803164F4 15220005 */ bne $t1, $v0, .L8031650C -/* 0D14F8 803164F8 24080001 */ li $t0, 1 -/* 0D14FC 803164FC 240D0001 */ li $t5, 1 -/* 0D1500 80316500 AC6D0000 */ sw $t5, ($v1) -/* 0D1504 80316504 1000000B */ b .L80316534 -/* 0D1508 80316508 24080001 */ li $t0, 1 -.L8031650C: -/* 0D150C 8031650C 11060003 */ beq $t0, $a2, .L8031651C -/* 0D1510 80316510 00000000 */ nop -/* 0D1514 80316514 10000007 */ b .L80316534 -/* 0D1518 80316518 AC600000 */ sw $zero, ($v1) -.L8031651C: -/* 0D151C 8031651C 11020003 */ beq $t0, $v0, .L8031652C -/* 0D1520 80316520 24180001 */ li $t8, 1 -/* 0D1524 80316524 10000003 */ b .L80316534 -/* 0D1528 80316528 AC780000 */ sw $t8, ($v1) -.L8031652C: -/* 0D152C 8031652C 100000B2 */ b .L803167F8 -/* 0D1530 80316530 00001025 */ move $v0, $zero -.L80316534: -/* 0D1534 80316534 8C790000 */ lw $t9, ($v1) -/* 0D1538 80316538 2405000C */ li $a1, 12 -/* 0D153C 8031653C 03250019 */ multu $t9, $a1 -/* 0D1540 80316540 00006812 */ mflo $t5 -/* 0D1544 80316544 006D7021 */ addu $t6, $v1, $t5 -/* 0D1548 80316548 8DC2001C */ lw $v0, 0x1c($t6) -/* 0D154C 8031654C 11620010 */ beq $t3, $v0, .L80316590 -/* 0D1550 80316550 01427821 */ addu $t7, $t2, $v0 -/* 0D1554 80316554 150C000E */ bne $t0, $t4, .L80316590 -/* 0D1558 80316558 A1E00000 */ sb $zero, ($t7) -/* 0D155C 8031655C 8C780000 */ lw $t8, ($v1) -/* 0D1560 80316560 03050019 */ multu $t8, $a1 -/* 0D1564 80316564 0000C812 */ mflo $t9 -/* 0D1568 80316568 00796821 */ addu $t5, $v1, $t9 -/* 0D156C 8031656C 8DA4001C */ lw $a0, 0x1c($t5) -/* 0D1570 80316570 A3AC005B */ sb $t4, 0x5b($sp) -/* 0D1574 80316574 AFAA005C */ sw $t2, 0x5c($sp) -/* 0D1578 80316578 0C0C57A9 */ jal discard_bank -/* 0D157C 8031657C AFA30030 */ sw $v1, 0x30($sp) -/* 0D1580 80316580 8FA30030 */ lw $v1, 0x30($sp) -/* 0D1584 80316584 24080001 */ li $t0, 1 -/* 0D1588 80316588 8FAA005C */ lw $t2, 0x5c($sp) -/* 0D158C 8031658C 93AC005B */ lbu $t4, 0x5b($sp) -.L80316590: -/* 0D1590 80316590 8C640000 */ lw $a0, ($v1) -/* 0D1594 80316594 24010001 */ li $at, 1 -/* 0D1598 80316598 26050198 */ addiu $a1, $s0, 0x198 -/* 0D159C 8031659C 50800006 */ beql $a0, $zero, .L803165B8 -/* 0D15A0 803165A0 8CAE0000 */ lw $t6, ($a1) -/* 0D15A4 803165A4 10810032 */ beq $a0, $at, .L80316670 -/* 0D15A8 803165A8 26050198 */ addiu $a1, $s0, 0x198 -/* 0D15AC 803165AC 10000092 */ b .L803167F8 -/* 0D15B0 803165B0 00001025 */ move $v0, $zero -/* 0D15B4 803165B4 8CAE0000 */ lw $t6, ($a1) -.L803165B8: -/* 0D15B8 803165B8 AC6E0014 */ sw $t6, 0x14($v1) -/* 0D15BC 803165BC 8FAF0088 */ lw $t7, 0x88($sp) -/* 0D15C0 803165C0 AC6F001C */ sw $t7, 0x1c($v1) -/* 0D15C4 803165C4 8FB80080 */ lw $t8, 0x80($sp) -/* 0D15C8 803165C8 AC780018 */ sw $t8, 0x18($v1) -/* 0D15CC 803165CC 8FAD0080 */ lw $t5, 0x80($sp) -/* 0D15D0 803165D0 8CB90000 */ lw $t9, ($a1) -/* 0D15D4 803165D4 032D1021 */ addu $v0, $t9, $t5 -/* 0D15D8 803165D8 ACA20004 */ sw $v0, 4($a1) -/* 0D15DC 803165DC 8C6E0020 */ lw $t6, 0x20($v1) -/* 0D15E0 803165E0 01C2082B */ sltu $at, $t6, $v0 -/* 0D15E4 803165E4 5020001D */ beql $at, $zero, .L8031665C -/* 0D15E8 803165E8 8C640014 */ lw $a0, 0x14($v1) -/* 0D15EC 803165EC 8C6F0028 */ lw $t7, 0x28($v1) -/* 0D15F0 803165F0 014FC021 */ addu $t8, $t2, $t7 -/* 0D15F4 803165F4 11800005 */ beqz $t4, .L8031660C -/* 0D15F8 803165F8 A3000000 */ sb $zero, ($t8) -/* 0D15FC 803165FC 5188000B */ beql $t4, $t0, .L8031662C -/* 0D1600 80316600 8C640028 */ lw $a0, 0x28($v1) -/* 0D1604 80316604 1000000F */ b .L80316644 -/* 0D1608 80316608 2419FFFF */ li $t9, -1 -.L8031660C: -/* 0D160C 8031660C 8C640028 */ lw $a0, 0x28($v1) -/* 0D1610 80316610 AFA5002C */ sw $a1, 0x2c($sp) -/* 0D1614 80316614 0C0C57E5 */ jal discard_sequence -/* 0D1618 80316618 AFA30030 */ sw $v1, 0x30($sp) -/* 0D161C 8031661C 8FA30030 */ lw $v1, 0x30($sp) -/* 0D1620 80316620 10000007 */ b .L80316640 -/* 0D1624 80316624 8FA5002C */ lw $a1, 0x2c($sp) -/* 0D1628 80316628 8C640028 */ lw $a0, 0x28($v1) -.L8031662C: -/* 0D162C 8031662C AFA5002C */ sw $a1, 0x2c($sp) -/* 0D1630 80316630 0C0C57A9 */ jal discard_bank -/* 0D1634 80316634 AFA30030 */ sw $v1, 0x30($sp) -/* 0D1638 80316638 8FA30030 */ lw $v1, 0x30($sp) -/* 0D163C 8031663C 8FA5002C */ lw $a1, 0x2c($sp) -.L80316640: -/* 0D1640 80316640 2419FFFF */ li $t9, -1 -.L80316644: -/* 0D1644 80316644 AC790028 */ sw $t9, 0x28($v1) -/* 0D1648 80316648 8CAE0000 */ lw $t6, ($a1) -/* 0D164C 8031664C 8CAD0008 */ lw $t5, 8($a1) -/* 0D1650 80316650 01AE7821 */ addu $t7, $t5, $t6 -/* 0D1654 80316654 AC6F0020 */ sw $t7, 0x20($v1) -/* 0D1658 80316658 8C640014 */ lw $a0, 0x14($v1) -.L8031665C: -/* 0D165C 8031665C 8C780000 */ lw $t8, ($v1) -/* 0D1660 80316660 00801025 */ move $v0, $a0 -/* 0D1664 80316664 3B190001 */ xori $t9, $t8, 1 -/* 0D1668 80316668 10000063 */ b .L803167F8 -/* 0D166C 8031666C AC790000 */ sw $t9, ($v1) -.L80316670: -/* 0D1670 80316670 8CAD0008 */ lw $t5, 8($a1) -/* 0D1674 80316674 8CAE0000 */ lw $t6, ($a1) -/* 0D1678 80316678 8FB80080 */ lw $t8, 0x80($sp) -/* 0D167C 8031667C 01AE7821 */ addu $t7, $t5, $t6 -/* 0D1680 80316680 01F8C823 */ subu $t9, $t7, $t8 -/* 0D1684 80316684 2722FFF0 */ addiu $v0, $t9, -0x10 -/* 0D1688 80316688 AC620020 */ sw $v0, 0x20($v1) -/* 0D168C 8031668C 8FAE0088 */ lw $t6, 0x88($sp) -/* 0D1690 80316690 AC6E0028 */ sw $t6, 0x28($v1) -/* 0D1694 80316694 8FAF0080 */ lw $t7, 0x80($sp) -/* 0D1698 80316698 AC6F0024 */ sw $t7, 0x24($v1) -/* 0D169C 8031669C 8CB80004 */ lw $t8, 4($a1) -/* 0D16A0 803166A0 0058082B */ sltu $at, $v0, $t8 -/* 0D16A4 803166A4 1020001B */ beqz $at, .L80316714 -/* 0D16A8 803166A8 00000000 */ nop -/* 0D16AC 803166AC 8C79001C */ lw $t9, 0x1c($v1) -/* 0D16B0 803166B0 01596821 */ addu $t5, $t2, $t9 -/* 0D16B4 803166B4 11800005 */ beqz $t4, .L803166CC -/* 0D16B8 803166B8 A1A00000 */ sb $zero, ($t5) -/* 0D16BC 803166BC 5188000B */ beql $t4, $t0, .L803166EC -/* 0D16C0 803166C0 8C64001C */ lw $a0, 0x1c($v1) -/* 0D16C4 803166C4 1000000F */ b .L80316704 -/* 0D16C8 803166C8 240EFFFF */ li $t6, -1 -.L803166CC: -/* 0D16CC 803166CC 8C64001C */ lw $a0, 0x1c($v1) -/* 0D16D0 803166D0 AFA5002C */ sw $a1, 0x2c($sp) -/* 0D16D4 803166D4 0C0C57E5 */ jal discard_sequence -/* 0D16D8 803166D8 AFA30030 */ sw $v1, 0x30($sp) -/* 0D16DC 803166DC 8FA30030 */ lw $v1, 0x30($sp) -/* 0D16E0 803166E0 10000007 */ b .L80316700 -/* 0D16E4 803166E4 8FA5002C */ lw $a1, 0x2c($sp) -/* 0D16E8 803166E8 8C64001C */ lw $a0, 0x1c($v1) -.L803166EC: -/* 0D16EC 803166EC AFA5002C */ sw $a1, 0x2c($sp) -/* 0D16F0 803166F0 0C0C57A9 */ jal discard_bank -/* 0D16F4 803166F4 AFA30030 */ sw $v1, 0x30($sp) -/* 0D16F8 803166F8 8FA30030 */ lw $v1, 0x30($sp) -/* 0D16FC 803166FC 8FA5002C */ lw $a1, 0x2c($sp) -.L80316700: -/* 0D1700 80316700 240EFFFF */ li $t6, -1 -.L80316704: -/* 0D1704 80316704 AC6E001C */ sw $t6, 0x1c($v1) -/* 0D1708 80316708 8CAF0000 */ lw $t7, ($a1) -/* 0D170C 8031670C ACAF0004 */ sw $t7, 4($a1) -/* 0D1710 80316710 8C620020 */ lw $v0, 0x20($v1) -.L80316714: -/* 0D1714 80316714 1000FFD1 */ b .L8031665C -/* 0D1718 80316718 00402025 */ move $a0, $v0 -/* 0D171C 8031671C 10000036 */ b .L803167F8 -/* 0D1720 80316720 00001025 */ move $v0, $zero -.L80316724: -/* 0D1724 80316724 8FB8007C */ lw $t8, 0x7c($sp) -/* 0D1728 80316728 8FB90080 */ lw $t9, 0x80($sp) -/* 0D172C 8031672C 26040004 */ addiu $a0, $s0, 4 -/* 0D1730 80316730 AFA70084 */ sw $a3, 0x84($sp) -/* 0D1734 80316734 03190019 */ multu $t8, $t9 -/* 0D1738 80316738 00002812 */ mflo $a1 -/* 0D173C 8031673C 0C0C5808 */ jal soundAlloc -/* 0D1740 80316740 00000000 */ nop -/* 0D1744 80316744 8E0D0000 */ lw $t5, ($s0) -/* 0D1748 80316748 2405000C */ li $a1, 12 -/* 0D174C 8031674C 8FA70084 */ lw $a3, 0x84($sp) -/* 0D1750 80316750 01A50019 */ multu $t5, $a1 -/* 0D1754 80316754 24080001 */ li $t0, 1 -/* 0D1758 80316758 00007012 */ mflo $t6 -/* 0D175C 8031675C 020E7821 */ addu $t7, $s0, $t6 -/* 0D1760 80316760 ADE20014 */ sw $v0, 0x14($t7) -/* 0D1764 80316764 8E180000 */ lw $t8, ($s0) -/* 0D1768 80316768 8FAF0088 */ lw $t7, 0x88($sp) -/* 0D176C 8031676C 03050019 */ multu $t8, $a1 -/* 0D1770 80316770 0000C812 */ mflo $t9 -/* 0D1774 80316774 02191821 */ addu $v1, $s0, $t9 -/* 0D1778 80316778 8C6D0014 */ lw $t5, 0x14($v1) -/* 0D177C 8031677C 55A00010 */ bnezl $t5, .L803167C0 -/* 0D1780 80316780 AC6F001C */ sw $t7, 0x1c($v1) -/* 0D1784 80316784 10E8000B */ beq $a3, $t0, .L803167B4 -/* 0D1788 80316788 24010002 */ li $at, 2 -/* 0D178C 8031678C 14E1000B */ bne $a3, $at, .L803167BC -/* 0D1790 80316790 02002025 */ move $a0, $s0 -/* 0D1794 80316794 8FAE0088 */ lw $t6, 0x88($sp) -/* 0D1798 80316798 8FA5007C */ lw $a1, 0x7c($sp) -/* 0D179C 8031679C 8FA60080 */ lw $a2, 0x80($sp) -/* 0D17A0 803167A0 00003825 */ move $a3, $zero -/* 0D17A4 803167A4 0C0C58F7 */ jal alloc_bank_or_seq -/* 0D17A8 803167A8 AFAE0010 */ sw $t6, 0x10($sp) -/* 0D17AC 803167AC 10000013 */ b .L803167FC -/* 0D17B0 803167B0 8FBF0024 */ lw $ra, 0x24($sp) -.L803167B4: -/* 0D17B4 803167B4 10000010 */ b .L803167F8 -/* 0D17B8 803167B8 00001025 */ move $v0, $zero -.L803167BC: -/* 0D17BC 803167BC AC6F001C */ sw $t7, 0x1c($v1) -.L803167C0: -/* 0D17C0 803167C0 8E190000 */ lw $t9, ($s0) -/* 0D17C4 803167C4 8FB80080 */ lw $t8, 0x80($sp) -/* 0D17C8 803167C8 03250019 */ multu $t9, $a1 -/* 0D17CC 803167CC 00006812 */ mflo $t5 -/* 0D17D0 803167D0 020D7021 */ addu $t6, $s0, $t5 -/* 0D17D4 803167D4 ADD80018 */ sw $t8, 0x18($t6) -/* 0D17D8 803167D8 8E0F0000 */ lw $t7, ($s0) -/* 0D17DC 803167DC 25F90001 */ addiu $t9, $t7, 1 -/* 0D17E0 803167E0 0019C080 */ sll $t8, $t9, 2 -/* 0D17E4 803167E4 0319C023 */ subu $t8, $t8, $t9 -/* 0D17E8 803167E8 0018C080 */ sll $t8, $t8, 2 -/* 0D17EC 803167EC 02187021 */ addu $t6, $s0, $t8 -/* 0D17F0 803167F0 AE190000 */ sw $t9, ($s0) -/* 0D17F4 803167F4 8DC20008 */ lw $v0, 8($t6) -.L803167F8: -/* 0D17F8 803167F8 8FBF0024 */ lw $ra, 0x24($sp) -.L803167FC: -/* 0D17FC 803167FC 8FB00020 */ lw $s0, 0x20($sp) -/* 0D1800 80316800 27BD0078 */ addiu $sp, $sp, 0x78 -/* 0D1804 80316804 03E00008 */ jr $ra -/* 0D1808 80316808 00000000 */ nop diff --git a/asm/non_matchings/eu/append_bubble_vertex_buffer.s b/asm/non_matchings/eu/append_bubble_vertex_buffer.s deleted file mode 100644 index be164e84..00000000 --- a/asm/non_matchings/eu/append_bubble_vertex_buffer.s +++ /dev/null @@ -1,151 +0,0 @@ -.text -glabel append_bubble_vertex_buffer -/* 0759E8 802B61E8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0759EC 802B61EC AFBF002C */ sw $ra, 0x2c($sp) -/* 0759F0 802B61F0 AFB40028 */ sw $s4, 0x28($sp) -/* 0759F4 802B61F4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0759F8 802B61F8 AFB00018 */ sw $s0, 0x18($sp) -/* 0759FC 802B61FC AFA40030 */ sw $a0, 0x30($sp) -/* 075A00 802B6200 00C08025 */ move $s0, $a2 -/* 075A04 802B6204 00E08825 */ move $s1, $a3 -/* 075A08 802B6208 00A0A025 */ move $s4, $a1 -/* 075A0C 802B620C AFB30024 */ sw $s3, 0x24($sp) -/* 075A10 802B6210 AFB20020 */ sw $s2, 0x20($sp) -# Vtx *vertBuf = (Vtx *)alloc_display_list(15 * sizeof(Vtx)); -/* 075A14 802B6214 0C09A781 */ jal alloc_display_list -/* 075A18 802B6218 240400F0 */ li $a0, 240 -/* 075A1C 802B621C 10400078 */ beqz $v0, .L802B6400 -/* 075A20 802B6220 8FAB0044 */ lw $t3, 0x44($sp) -/* 075A24 802B6224 3C058033 */ lui $a1, %hi(gEnvFxBuffer) # $a1, 0x8033 -/* 075A28 802B6228 24A5F6B0 */ addiu $a1, %lo(gEnvFxBuffer) # addiu $a1, $a1, -0x950 -/* 075A2C 802B622C 00003025 */ move $a2, $zero -/* 075A30 802B6230 256C0010 */ addiu $t4, $t3, 0x10 -/* 075A34 802B6234 256D0020 */ addiu $t5, $t3, 0x20 -/* 075A38 802B6238 00403825 */ move $a3, $v0 -/* 075A3C 802B623C 24480020 */ addiu $t0, $v0, 0x20 -/* 075A40 802B6240 24490010 */ addiu $t1, $v0, 0x10 -/* 075A44 802B6244 2413000F */ li $s3, 15 -/* 075A48 802B6248 24120038 */ li $s2, 56 -/* 075A4C 802B624C 241F0003 */ li $ra, 3 -/* 075A50 802B6250 8FAA0040 */ lw $t2, 0x40($sp) -# for (i = 0; i < 15; i += 3) { -.L802B6254: -/* 075A54 802B6254 00DF001A */ div $zero, $a2, $ra -/* 075A58 802B6258 8D610000 */ lw $at, ($t3) -/* 075A5C 802B625C 0000C812 */ mflo $t9 -/* 075A60 802B6260 02997021 */ addu $t6, $s4, $t9 -/* 075A64 802B6264 ACE10000 */ sw $at, ($a3) -/* 075A68 802B6268 8D6F0004 */ lw $t7, 4($t3) -/* 075A6C 802B626C 01D20019 */ multu $t6, $s2 -/* 075A70 802B6270 0006C100 */ sll $t8, $a2, 4 -/* 075A74 802B6274 ACEF0004 */ sw $t7, 4($a3) -/* 075A78 802B6278 8D610008 */ lw $at, 8($t3) -/* 075A7C 802B627C 00582021 */ addu $a0, $v0, $t8 -/* 075A80 802B6280 24E70030 */ addiu $a3, $a3, 0x30 -/* 075A84 802B6284 ACE1FFD8 */ sw $at, -0x28($a3) -/* 075A88 802B6288 8D6F000C */ lw $t7, 0xc($t3) -/* 075A8C 802B628C 25080030 */ addiu $t0, $t0, 0x30 -/* 075A90 802B6290 25290030 */ addiu $t1, $t1, 0x30 -/* 075A94 802B6294 ACEFFFDC */ sw $t7, -0x24($a3) -/* 075A98 802B6298 8CB80000 */ lw $t8, ($a1) -/* 075A9C 802B629C 00001812 */ mflo $v1 -/* 075AA0 802B62A0 860F0000 */ lh $t7, ($s0) -/* 075AA4 802B62A4 0303C821 */ addu $t9, $t8, $v1 -/* 075AA8 802B62A8 8F2E0004 */ lw $t6, 4($t9) -/* 075AAC 802B62AC 17E00002 */ bnez $ra, .L802B62B8 -/* 075AB0 802B62B0 00000000 */ nop -/* 075AB4 802B62B4 0007000D */ break 7 -.L802B62B8: -/* 075AB8 802B62B8 2401FFFF */ li $at, -1 -/* 075ABC 802B62BC 17E10004 */ bne $ra, $at, .L802B62D0 -/* 075AC0 802B62C0 3C018000 */ lui $at, 0x8000 -/* 075AC4 802B62C4 14C10002 */ bne $a2, $at, .L802B62D0 -/* 075AC8 802B62C8 00000000 */ nop -/* 075ACC 802B62CC 0006000D */ break 6 -.L802B62D0: -/* 075AD0 802B62D0 01EEC021 */ addu $t8, $t7, $t6 -/* 075AD4 802B62D4 A4980000 */ sh $t8, ($a0) -/* 075AD8 802B62D8 8CAF0000 */ lw $t7, ($a1) -/* 075ADC 802B62DC 86190002 */ lh $t9, 2($s0) -/* 075AE0 802B62E0 24C60003 */ addiu $a2, $a2, 3 -/* 075AE4 802B62E4 01E37021 */ addu $t6, $t7, $v1 -/* 075AE8 802B62E8 8DD80008 */ lw $t8, 8($t6) -/* 075AEC 802B62EC 03387821 */ addu $t7, $t9, $t8 -/* 075AF0 802B62F0 A48F0002 */ sh $t7, 2($a0) -/* 075AF4 802B62F4 8CB90000 */ lw $t9, ($a1) -/* 075AF8 802B62F8 860E0004 */ lh $t6, 4($s0) -/* 075AFC 802B62FC 0323C021 */ addu $t8, $t9, $v1 -/* 075B00 802B6300 8F0F000C */ lw $t7, 0xc($t8) -/* 075B04 802B6304 01CFC821 */ addu $t9, $t6, $t7 -/* 075B08 802B6308 A4990004 */ sh $t9, 4($a0) -/* 075B0C 802B630C 8D810000 */ lw $at, ($t4) -/* 075B10 802B6310 AD21FFD0 */ sw $at, -0x30($t1) -/* 075B14 802B6314 8D8E0004 */ lw $t6, 4($t4) -/* 075B18 802B6318 AD2EFFD4 */ sw $t6, -0x2c($t1) -/* 075B1C 802B631C 8D810008 */ lw $at, 8($t4) -/* 075B20 802B6320 AD21FFD8 */ sw $at, -0x28($t1) -/* 075B24 802B6324 8D8E000C */ lw $t6, 0xc($t4) -/* 075B28 802B6328 AD2EFFDC */ sw $t6, -0x24($t1) -/* 075B2C 802B632C 8CB90000 */ lw $t9, ($a1) -/* 075B30 802B6330 862F0000 */ lh $t7, ($s1) -/* 075B34 802B6334 0323C021 */ addu $t8, $t9, $v1 -/* 075B38 802B6338 8F0E0004 */ lw $t6, 4($t8) -/* 075B3C 802B633C 01EEC821 */ addu $t9, $t7, $t6 -/* 075B40 802B6340 A4990010 */ sh $t9, 0x10($a0) -/* 075B44 802B6344 8CAF0000 */ lw $t7, ($a1) -/* 075B48 802B6348 86380002 */ lh $t8, 2($s1) -/* 075B4C 802B634C 01E37021 */ addu $t6, $t7, $v1 -/* 075B50 802B6350 8DD90008 */ lw $t9, 8($t6) -/* 075B54 802B6354 03197821 */ addu $t7, $t8, $t9 -/* 075B58 802B6358 A48F0012 */ sh $t7, 0x12($a0) -/* 075B5C 802B635C 8CB80000 */ lw $t8, ($a1) -/* 075B60 802B6360 862E0004 */ lh $t6, 4($s1) -/* 075B64 802B6364 0303C821 */ addu $t9, $t8, $v1 -/* 075B68 802B6368 8F2F000C */ lw $t7, 0xc($t9) -/* 075B6C 802B636C 01CFC021 */ addu $t8, $t6, $t7 -/* 075B70 802B6370 A4980014 */ sh $t8, 0x14($a0) -/* 075B74 802B6374 8DA10000 */ lw $at, ($t5) -/* 075B78 802B6378 AD01FFD0 */ sw $at, -0x30($t0) -/* 075B7C 802B637C 8DAE0004 */ lw $t6, 4($t5) -/* 075B80 802B6380 AD0EFFD4 */ sw $t6, -0x2c($t0) -/* 075B84 802B6384 8DA10008 */ lw $at, 8($t5) -/* 075B88 802B6388 AD01FFD8 */ sw $at, -0x28($t0) -/* 075B8C 802B638C 8DAE000C */ lw $t6, 0xc($t5) -/* 075B90 802B6390 AD0EFFDC */ sw $t6, -0x24($t0) -/* 075B94 802B6394 8CB80000 */ lw $t8, ($a1) -/* 075B98 802B6398 854F0000 */ lh $t7, ($t2) -/* 075B9C 802B639C 0303C821 */ addu $t9, $t8, $v1 -/* 075BA0 802B63A0 8F2E0004 */ lw $t6, 4($t9) -/* 075BA4 802B63A4 01EEC021 */ addu $t8, $t7, $t6 -/* 075BA8 802B63A8 A4980020 */ sh $t8, 0x20($a0) -/* 075BAC 802B63AC 8CAF0000 */ lw $t7, ($a1) -/* 075BB0 802B63B0 85590002 */ lh $t9, 2($t2) -/* 075BB4 802B63B4 01E37021 */ addu $t6, $t7, $v1 -/* 075BB8 802B63B8 8DD80008 */ lw $t8, 8($t6) -/* 075BBC 802B63BC 03387821 */ addu $t7, $t9, $t8 -/* 075BC0 802B63C0 A48F0022 */ sh $t7, 0x22($a0) -/* 075BC4 802B63C4 8CB90000 */ lw $t9, ($a1) -/* 075BC8 802B63C8 854E0004 */ lh $t6, 4($t2) -/* 075BCC 802B63CC 0323C021 */ addu $t8, $t9, $v1 -/* 075BD0 802B63D0 8F0F000C */ lw $t7, 0xc($t8) -/* 075BD4 802B63D4 01CFC821 */ addu $t9, $t6, $t7 -/* 075BD8 802B63D8 14D3FF9E */ bne $a2, $s3, .L802B6254 -/* 075BDC 802B63DC A4990024 */ sh $t9, 0x24($a0) -/* 075BE0 802B63E0 8FA30030 */ lw $v1, 0x30($sp) -# gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBuf), 15, 0); -/* 075BE4 802B63E4 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 075BE8 802B63E8 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 075BEC 802B63EC 3C1804E0 */ lui $t8, (0x04E000F0 >> 16) # lui $t8, 0x4e0 -/* 075BF0 802B63F0 371800F0 */ ori $t8, (0x04E000F0 & 0xFFFF) # ori $t8, $t8, 0xf0 -/* 075BF4 802B63F4 00417024 */ and $t6, $v0, $at -/* 075BF8 802B63F8 AC6E0004 */ sw $t6, 4($v1) -/* 075BFC 802B63FC AC780000 */ sw $t8, ($v1) -.L802B6400: -/* 075C00 802B6400 8FBF002C */ lw $ra, 0x2c($sp) -/* 075C04 802B6404 8FB00018 */ lw $s0, 0x18($sp) -/* 075C08 802B6408 8FB1001C */ lw $s1, 0x1c($sp) -/* 075C0C 802B640C 8FB20020 */ lw $s2, 0x20($sp) -/* 075C10 802B6410 8FB30024 */ lw $s3, 0x24($sp) -/* 075C14 802B6414 8FB40028 */ lw $s4, 0x28($sp) -/* 075C18 802B6418 03E00008 */ jr $ra -/* 075C1C 802B641C 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/eu/append_snowflake_vertex_buffer.s b/asm/non_matchings/eu/append_snowflake_vertex_buffer.s deleted file mode 100644 index 7af0c773..00000000 --- a/asm/non_matchings/eu/append_snowflake_vertex_buffer.s +++ /dev/null @@ -1,156 +0,0 @@ -.text -glabel append_snowflake_vertex_buffer -/* 074188 802B4988 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 07418C 802B498C AFBF002C */ sw $ra, 0x2c($sp) -/* 074190 802B4990 AFB40028 */ sw $s4, 0x28($sp) -/* 074194 802B4994 AFB1001C */ sw $s1, 0x1c($sp) -/* 074198 802B4998 AFB00018 */ sw $s0, 0x18($sp) -/* 07419C 802B499C AFA40030 */ sw $a0, 0x30($sp) -/* 0741A0 802B49A0 00C08025 */ move $s0, $a2 -/* 0741A4 802B49A4 00E08825 */ move $s1, $a3 -/* 0741A8 802B49A8 00A0A025 */ move $s4, $a1 -/* 0741AC 802B49AC AFB30024 */ sw $s3, 0x24($sp) -/* 0741B0 802B49B0 AFB20020 */ sw $s2, 0x20($sp) -# Vtx *vertBuf = (Vtx *)alloc_display_list(15 * sizeof(Vtx)); -/* 0741B4 802B49B4 0C09A781 */ jal alloc_display_list -/* 0741B8 802B49B8 240400F0 */ li $a0, 240 -# if (vertBuf == NULL) return; -/* 0741BC 802B49BC 1040007B */ beqz $v0, .L802B4BAC -/* 0741C0 802B49C0 00003025 */ move $a2, $zero -/* 0741C4 802B49C4 3C128030 */ lui $s2, %hi(gSnowTempVtx + 0x20) # $s2, 0x8030 -/* 0741C8 802B49C8 3C1F8030 */ lui $ra, %hi(gSnowTempVtx + 0x10) # $ra, 0x8030 -/* 0741CC 802B49CC 3C0B8030 */ lui $t3, %hi(gSnowTempVtx) # $t3, 0x8030 -/* 0741D0 802B49D0 3C058033 */ lui $a1, %hi(gEnvFxBuffer) # $a1, 0x8033 -/* 0741D4 802B49D4 24A5F6B0 */ addiu $a1, %lo(gEnvFxBuffer) # addiu $a1, $a1, -0x950 -/* 0741D8 802B49D8 256BDD08 */ addiu $t3, %lo(gSnowTempVtx) # addiu $t3, $t3, -0x22f8 -/* 0741DC 802B49DC 27FFDD18 */ addiu $ra, %lo(gSnowTempVtx + 0x10) # addiu $ra, $ra, -0x22e8 -/* 0741E0 802B49E0 2652DD28 */ addiu $s2, %lo(gSnowTempVtx + 0x20) # addiu $s2, $s2, -0x22d8 -/* 0741E4 802B49E4 00403825 */ move $a3, $v0 -/* 0741E8 802B49E8 24480020 */ addiu $t0, $v0, 0x20 -/* 0741EC 802B49EC 24490010 */ addiu $t1, $v0, 0x10 -/* 0741F0 802B49F0 2413000F */ li $s3, 15 -/* 0741F4 802B49F4 240D0038 */ li $t5, 56 -/* 0741F8 802B49F8 240C0003 */ li $t4, 3 -/* 0741FC 802B49FC 8FAA0040 */ lw $t2, 0x40($sp) -# for (i = 0; i < 15; i += 3) -.L802B4A00: -/* 074200 802B4A00 00CC001A */ div $zero, $a2, $t4 -/* 074204 802B4A04 8D610000 */ lw $at, ($t3) -/* 074208 802B4A08 0000C812 */ mflo $t9 -/* 07420C 802B4A0C 02997021 */ addu $t6, $s4, $t9 -/* 074210 802B4A10 ACE10000 */ sw $at, ($a3) -/* 074214 802B4A14 8D6F0004 */ lw $t7, 4($t3) -/* 074218 802B4A18 01CD0019 */ multu $t6, $t5 -/* 07421C 802B4A1C 0006C100 */ sll $t8, $a2, 4 -/* 074220 802B4A20 ACEF0004 */ sw $t7, 4($a3) -/* 074224 802B4A24 8D610008 */ lw $at, 8($t3) -/* 074228 802B4A28 00582021 */ addu $a0, $v0, $t8 -/* 07422C 802B4A2C 24E70030 */ addiu $a3, $a3, 0x30 -/* 074230 802B4A30 ACE1FFD8 */ sw $at, -0x28($a3) -/* 074234 802B4A34 8D6F000C */ lw $t7, 0xc($t3) -/* 074238 802B4A38 25080030 */ addiu $t0, $t0, 0x30 -/* 07423C 802B4A3C 25290030 */ addiu $t1, $t1, 0x30 -/* 074240 802B4A40 ACEFFFDC */ sw $t7, -0x24($a3) -/* 074244 802B4A44 8CB80000 */ lw $t8, ($a1) -/* 074248 802B4A48 00001812 */ mflo $v1 -/* 07424C 802B4A4C 860F0000 */ lh $t7, ($s0) -/* 074250 802B4A50 0303C821 */ addu $t9, $t8, $v1 -/* 074254 802B4A54 8F2E0004 */ lw $t6, 4($t9) -/* 074258 802B4A58 15800002 */ bnez $t4, .L802B4A64 -/* 07425C 802B4A5C 00000000 */ nop -/* 074260 802B4A60 0007000D */ break 7 -.L802B4A64: -/* 074264 802B4A64 2401FFFF */ li $at, -1 -/* 074268 802B4A68 15810004 */ bne $t4, $at, .L802B4A7C -/* 07426C 802B4A6C 3C018000 */ lui $at, 0x8000 -/* 074270 802B4A70 14C10002 */ bne $a2, $at, .L802B4A7C -/* 074274 802B4A74 00000000 */ nop -/* 074278 802B4A78 0006000D */ break 6 -.L802B4A7C: -/* 07427C 802B4A7C 01EEC021 */ addu $t8, $t7, $t6 -/* 074280 802B4A80 A4980000 */ sh $t8, ($a0) -/* 074284 802B4A84 8CAF0000 */ lw $t7, ($a1) -/* 074288 802B4A88 86190002 */ lh $t9, 2($s0) -/* 07428C 802B4A8C 24C60003 */ addiu $a2, $a2, 3 -/* 074290 802B4A90 01E37021 */ addu $t6, $t7, $v1 -/* 074294 802B4A94 8DD80008 */ lw $t8, 8($t6) -/* 074298 802B4A98 03387821 */ addu $t7, $t9, $t8 -/* 07429C 802B4A9C A48F0002 */ sh $t7, 2($a0) -/* 0742A0 802B4AA0 8CB90000 */ lw $t9, ($a1) -/* 0742A4 802B4AA4 860E0004 */ lh $t6, 4($s0) -/* 0742A8 802B4AA8 0323C021 */ addu $t8, $t9, $v1 -/* 0742AC 802B4AAC 8F0F000C */ lw $t7, 0xc($t8) -/* 0742B0 802B4AB0 01CFC821 */ addu $t9, $t6, $t7 -/* 0742B4 802B4AB4 A4990004 */ sh $t9, 4($a0) -/* 0742B8 802B4AB8 8FE10000 */ lw $at, ($ra) -/* 0742BC 802B4ABC AD21FFD0 */ sw $at, -0x30($t1) -/* 0742C0 802B4AC0 8FEE0004 */ lw $t6, 4($ra) -/* 0742C4 802B4AC4 AD2EFFD4 */ sw $t6, -0x2c($t1) -/* 0742C8 802B4AC8 8FE10008 */ lw $at, 8($ra) -/* 0742CC 802B4ACC AD21FFD8 */ sw $at, -0x28($t1) -/* 0742D0 802B4AD0 8FEE000C */ lw $t6, 0xc($ra) -/* 0742D4 802B4AD4 AD2EFFDC */ sw $t6, -0x24($t1) -/* 0742D8 802B4AD8 8CB90000 */ lw $t9, ($a1) -/* 0742DC 802B4ADC 862F0000 */ lh $t7, ($s1) -/* 0742E0 802B4AE0 0323C021 */ addu $t8, $t9, $v1 -/* 0742E4 802B4AE4 8F0E0004 */ lw $t6, 4($t8) -/* 0742E8 802B4AE8 01EEC821 */ addu $t9, $t7, $t6 -/* 0742EC 802B4AEC A4990010 */ sh $t9, 0x10($a0) -/* 0742F0 802B4AF0 8CAF0000 */ lw $t7, ($a1) -/* 0742F4 802B4AF4 86380002 */ lh $t8, 2($s1) -/* 0742F8 802B4AF8 01E37021 */ addu $t6, $t7, $v1 -/* 0742FC 802B4AFC 8DD90008 */ lw $t9, 8($t6) -/* 074300 802B4B00 03197821 */ addu $t7, $t8, $t9 -/* 074304 802B4B04 A48F0012 */ sh $t7, 0x12($a0) -/* 074308 802B4B08 8CB80000 */ lw $t8, ($a1) -/* 07430C 802B4B0C 862E0004 */ lh $t6, 4($s1) -/* 074310 802B4B10 0303C821 */ addu $t9, $t8, $v1 -/* 074314 802B4B14 8F2F000C */ lw $t7, 0xc($t9) -/* 074318 802B4B18 01CFC021 */ addu $t8, $t6, $t7 -/* 07431C 802B4B1C A4980014 */ sh $t8, 0x14($a0) -/* 074320 802B4B20 8E410000 */ lw $at, ($s2) -/* 074324 802B4B24 AD01FFD0 */ sw $at, -0x30($t0) -/* 074328 802B4B28 8E4E0004 */ lw $t6, 4($s2) -/* 07432C 802B4B2C AD0EFFD4 */ sw $t6, -0x2c($t0) -/* 074330 802B4B30 8E410008 */ lw $at, 8($s2) -/* 074334 802B4B34 AD01FFD8 */ sw $at, -0x28($t0) -/* 074338 802B4B38 8E4E000C */ lw $t6, 0xc($s2) -/* 07433C 802B4B3C AD0EFFDC */ sw $t6, -0x24($t0) -/* 074340 802B4B40 8CB80000 */ lw $t8, ($a1) -/* 074344 802B4B44 854F0000 */ lh $t7, ($t2) -/* 074348 802B4B48 0303C821 */ addu $t9, $t8, $v1 -/* 07434C 802B4B4C 8F2E0004 */ lw $t6, 4($t9) -/* 074350 802B4B50 01EEC021 */ addu $t8, $t7, $t6 -/* 074354 802B4B54 A4980020 */ sh $t8, 0x20($a0) -/* 074358 802B4B58 8CAF0000 */ lw $t7, ($a1) -/* 07435C 802B4B5C 85590002 */ lh $t9, 2($t2) -/* 074360 802B4B60 01E37021 */ addu $t6, $t7, $v1 -/* 074364 802B4B64 8DD80008 */ lw $t8, 8($t6) -/* 074368 802B4B68 03387821 */ addu $t7, $t9, $t8 -/* 07436C 802B4B6C A48F0022 */ sh $t7, 0x22($a0) -/* 074370 802B4B70 8CB90000 */ lw $t9, ($a1) -/* 074374 802B4B74 854E0004 */ lh $t6, 4($t2) -/* 074378 802B4B78 0323C021 */ addu $t8, $t9, $v1 -/* 07437C 802B4B7C 8F0F000C */ lw $t7, 0xc($t8) -/* 074380 802B4B80 01CFC821 */ addu $t9, $t6, $t7 -/* 074384 802B4B84 14D3FF9E */ bne $a2, $s3, .L802B4A00 -/* 074388 802B4B88 A4990024 */ sh $t9, 0x24($a0) -/* 07438C 802B4B8C 8FA30030 */ lw $v1, 0x30($sp) -# gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBuf), 15, 0); -/* 074390 802B4B90 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 074394 802B4B94 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 074398 802B4B98 3C1804E0 */ lui $t8, (0x04E000F0 >> 16) # lui $t8, 0x4e0 -/* 07439C 802B4B9C 371800F0 */ ori $t8, (0x04E000F0 & 0xFFFF) # ori $t8, $t8, 0xf0 -/* 0743A0 802B4BA0 00417024 */ and $t6, $v0, $at -/* 0743A4 802B4BA4 AC6E0004 */ sw $t6, 4($v1) -/* 0743A8 802B4BA8 AC780000 */ sw $t8, ($v1) -.L802B4BAC: -/* 0743AC 802B4BAC 8FBF002C */ lw $ra, 0x2c($sp) -/* 0743B0 802B4BB0 8FB00018 */ lw $s0, 0x18($sp) -/* 0743B4 802B4BB4 8FB1001C */ lw $s1, 0x1c($sp) -/* 0743B8 802B4BB8 8FB20020 */ lw $s2, 0x20($sp) -/* 0743BC 802B4BBC 8FB30024 */ lw $s3, 0x24($sp) -/* 0743C0 802B4BC0 8FB40028 */ lw $s4, 0x28($sp) -/* 0743C4 802B4BC4 03E00008 */ jr $ra -/* 0743C8 802B4BC8 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/eu/audio/alloc_bank_or_seq.s b/asm/non_matchings/eu/audio/alloc_bank_or_seq.s deleted file mode 100644 index 7935272f..00000000 --- a/asm/non_matchings/eu/audio/alloc_bank_or_seq.s +++ /dev/null @@ -1,269 +0,0 @@ -glabel alloc_bank_or_seq -/* 0A1B94 802E2394 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0A1B98 802E2398 AFB20020 */ sw $s2, 0x20($sp) -/* 0A1B9C 802E239C 00C09025 */ move $s2, $a2 -/* 0A1BA0 802E23A0 AFB1001C */ sw $s1, 0x1c($sp) -/* 0A1BA4 802E23A4 AFB00018 */ sw $s0, 0x18($sp) -/* 0A1BA8 802E23A8 00A08025 */ move $s0, $a1 -/* 0A1BAC 802E23AC 00808825 */ move $s1, $a0 -/* 0A1BB0 802E23B0 2406000C */ li $a2, 12 -/* 0A1BB4 802E23B4 AFBF0024 */ sw $ra, 0x24($sp) -/* 0A1BB8 802E23B8 8FA90068 */ lw $t1, 0x68($sp) -/* 0A1BBC 802E23BC 24080001 */ li $t0, 1 -.L80200850: -/* 0A1BC0 802E23C0 14E000AD */ bnez $a3, .L80200B08 -/* 0A1BC4 802E23C4 3C0E8022 */ lui $t6, %hi(gSeqLoadedPool) # $t6, 0x8022 -/* 0A1BC8 802E23C8 25CE2670 */ addiu $t6, %lo(gSeqLoadedPool) # addiu $t6, $t6, 0x2670 -/* 0A1BCC 802E23CC 162E0006 */ bne $s1, $t6, .L80200878 -/* 0A1BD0 802E23D0 26300194 */ addiu $s0, $s1, 0x194 -/* 0A1BD4 802E23D4 3C058022 */ lui $a1, %hi(gSeqLoadStatus) # $a1, 0x8022 -/* 0A1BD8 802E23D8 24A52C58 */ addiu $a1, %lo(gSeqLoadStatus) # addiu $a1, $a1, 0x2c58 -/* 0A1BDC 802E23DC AFA5003C */ sw $a1, 0x3c($sp) -/* 0A1BE0 802E23E0 10000009 */ b .L80200898 -/* 0A1BE4 802E23E4 A3A0003B */ sb $zero, 0x3b($sp) -.L80200878: -/* 0A1BE8 802E23E8 3C0F8022 */ lui $t7, %hi(gBankLoadedPool) # $t7, 0x8022 -/* 0A1BEC 802E23EC 25EF2840 */ addiu $t7, %lo(gBankLoadedPool) # addiu $t7, $t7, 0x2840 -/* 0A1BF0 802E23F0 162F0005 */ bne $s1, $t7, .L80200898 -/* 0A1BF4 802E23F4 3C058022 */ lui $a1, %hi(gBankLoadStatus) # $a1, 0x8022 -/* 0A1BF8 802E23F8 24A52C18 */ addiu $a1, %lo(gBankLoadStatus) # addiu $a1, $a1, 0x2c18 -/* 0A1BFC 802E23FC 240A0001 */ li $t2, 1 -/* 0A1C00 802E2400 A3AA003B */ sb $t2, 0x3b($sp) -/* 0A1C04 802E2404 AFA5003C */ sw $a1, 0x3c($sp) -.L80200898: -/* 0A1C08 802E2408 8E02001C */ lw $v0, 0x1c($s0) -/* 0A1C0C 802E240C 2407FFFF */ li $a3, -1 -/* 0A1C10 802E2410 8FA5003C */ lw $a1, 0x3c($sp) -/* 0A1C14 802E2414 14E20003 */ bne $a3, $v0, .L802008B4 -/* 0A1C18 802E2418 93AA003B */ lbu $t2, 0x3b($sp) -/* 0A1C1C 802E241C 10000003 */ b .L802008BC -/* 0A1C20 802E2420 00001825 */ move $v1, $zero -.L802008B4: -/* 0A1C24 802E2424 0045C021 */ addu $t8, $v0, $a1 -/* 0A1C28 802E2428 93030000 */ lbu $v1, ($t8) -.L802008BC: -/* 0A1C2C 802E242C 8E020028 */ lw $v0, 0x28($s0) -/* 0A1C30 802E2430 14E20003 */ bne $a3, $v0, .L802008D0 -/* 0A1C34 802E2434 0045C821 */ addu $t9, $v0, $a1 -/* 0A1C38 802E2438 10000002 */ b .L802008D4 -/* 0A1C3C 802E243C 00002025 */ move $a0, $zero -.L802008D0: -/* 0A1C40 802E2440 93240000 */ lbu $a0, ($t9) -.L802008D4: -/* 0A1C44 802E2444 14600003 */ bnez $v1, .L802008E4 -/* 0A1C48 802E2448 00601025 */ move $v0, $v1 -/* 0A1C4C 802E244C 1000001D */ b .L80200954 -/* 0A1C50 802E2450 AE000000 */ sw $zero, ($s0) -.L802008E4: -/* 0A1C54 802E2454 14800004 */ bnez $a0, .L802008F8 -/* 0A1C58 802E2458 00801825 */ move $v1, $a0 -/* 0A1C5C 802E245C 240B0001 */ li $t3, 1 -/* 0A1C60 802E2460 10000018 */ b .L80200954 -/* 0A1C64 802E2464 AE0B0000 */ sw $t3, ($s0) -.L802008F8: -/* 0A1C68 802E2468 24040003 */ li $a0, 3 -/* 0A1C6C 802E246C 14820003 */ bne $a0, $v0, .L8020090C -/* 0A1C70 802E2470 00000000 */ nop -/* 0A1C74 802E2474 50830014 */ beql $a0, $v1, .L80200958 -/* 0A1C78 802E2478 8E0E0000 */ lw $t6, ($s0) -.L8020090C: -/* 0A1C7C 802E247C 14820003 */ bne $a0, $v0, .L8020091C -/* 0A1C80 802E2480 00000000 */ nop -/* 0A1C84 802E2484 1000000F */ b .L80200954 -/* 0A1C88 802E2488 AE000000 */ sw $zero, ($s0) -.L8020091C: -/* 0A1C8C 802E248C 14830003 */ bne $a0, $v1, .L8020092C -/* 0A1C90 802E2490 240C0001 */ li $t4, 1 -/* 0A1C94 802E2494 1000000B */ b .L80200954 -/* 0A1C98 802E2498 AE0C0000 */ sw $t4, ($s0) -.L8020092C: -/* 0A1C9C 802E249C 11020003 */ beq $t0, $v0, .L8020093C -/* 0A1CA0 802E24A0 00000000 */ nop -/* 0A1CA4 802E24A4 10000007 */ b .L80200954 -/* 0A1CA8 802E24A8 AE000000 */ sw $zero, ($s0) -.L8020093C: -/* 0A1CAC 802E24AC 11030003 */ beq $t0, $v1, .L8020094C -/* 0A1CB0 802E24B0 240D0001 */ li $t5, 1 -/* 0A1CB4 802E24B4 10000003 */ b .L80200954 -/* 0A1CB8 802E24B8 AE0D0000 */ sw $t5, ($s0) -.L8020094C: -/* 0A1CBC 802E24BC 10000099 */ b .L80200BB4 -/* 0A1CC0 802E24C0 00001025 */ move $v0, $zero -.L80200954: -/* 0A1CC4 802E24C4 8E0E0000 */ lw $t6, ($s0) -.L80200958: -/* 0A1CC8 802E24C8 01C60019 */ multu $t6, $a2 -/* 0A1CCC 802E24CC 00007812 */ mflo $t7 -/* 0A1CD0 802E24D0 020FC021 */ addu $t8, $s0, $t7 -/* 0A1CD4 802E24D4 8F02001C */ lw $v0, 0x1c($t8) -/* 0A1CD8 802E24D8 10E20010 */ beq $a3, $v0, .L802009AC -/* 0A1CDC 802E24DC 00A2C821 */ addu $t9, $a1, $v0 -/* 0A1CE0 802E24E0 150A000E */ bne $t0, $t2, .L802009AC -/* 0A1CE4 802E24E4 A3200000 */ sb $zero, ($t9) -/* 0A1CE8 802E24E8 8E0B0000 */ lw $t3, ($s0) -/* 0A1CEC 802E24EC 01660019 */ multu $t3, $a2 -/* 0A1CF0 802E24F0 00006012 */ mflo $t4 -/* 0A1CF4 802E24F4 020C6821 */ addu $t5, $s0, $t4 -/* 0A1CF8 802E24F8 8DA4001C */ lw $a0, 0x1c($t5) -/* 0A1CFC 802E24FC A3AA003B */ sb $t2, 0x3b($sp) -/* 0A1D00 802E2500 AFA90068 */ sw $t1, 0x68($sp) -/* 0A1D04 802E2504 0C0B87A3 */ jal discard_bank -/* 0A1D08 802E2508 AFA5003C */ sw $a1, 0x3c($sp) -/* 0A1D0C 802E250C 8FA5003C */ lw $a1, 0x3c($sp) -/* 0A1D10 802E2510 24080001 */ li $t0, 1 -/* 0A1D14 802E2514 8FA90068 */ lw $t1, 0x68($sp) -/* 0A1D18 802E2518 93AA003B */ lbu $t2, 0x3b($sp) -.L802009AC: -/* 0A1D1C 802E251C 8E040000 */ lw $a0, ($s0) -/* 0A1D20 802E2520 24010001 */ li $at, 1 -/* 0A1D24 802E2524 26230198 */ addiu $v1, $s1, 0x198 -/* 0A1D28 802E2528 50800006 */ beql $a0, $zero, .L802009D4 -/* 0A1D2C 802E252C 8C6E0000 */ lw $t6, ($v1) -/* 0A1D30 802E2530 1081002B */ beq $a0, $at, .L80200A70 -/* 0A1D34 802E2534 26230198 */ addiu $v1, $s1, 0x198 -/* 0A1D38 802E2538 1000007A */ b .L80200BB4 -/* 0A1D3C 802E253C 00001025 */ move $v0, $zero -/* 0A1D40 802E2540 8C6E0000 */ lw $t6, ($v1) -.L802009D4: -/* 0A1D44 802E2544 AE09001C */ sw $t1, 0x1c($s0) -/* 0A1D48 802E2548 AE120018 */ sw $s2, 0x18($s0) -/* 0A1D4C 802E254C AE0E0014 */ sw $t6, 0x14($s0) -/* 0A1D50 802E2550 8C6F0000 */ lw $t7, ($v1) -/* 0A1D54 802E2554 01F21021 */ addu $v0, $t7, $s2 -/* 0A1D58 802E2558 AC620004 */ sw $v0, 4($v1) -/* 0A1D5C 802E255C 8E180020 */ lw $t8, 0x20($s0) -/* 0A1D60 802E2560 0302082B */ sltu $at, $t8, $v0 -/* 0A1D64 802E2564 50200019 */ beql $at, $zero, .L80200A5C -/* 0A1D68 802E2568 8E030014 */ lw $v1, 0x14($s0) -/* 0A1D6C 802E256C 8E190028 */ lw $t9, 0x28($s0) -/* 0A1D70 802E2570 00B95821 */ addu $t3, $a1, $t9 -/* 0A1D74 802E2574 11400005 */ beqz $t2, .L80200A1C -/* 0A1D78 802E2578 A1600000 */ sb $zero, ($t3) -/* 0A1D7C 802E257C 51480009 */ beql $t2, $t0, .L80200A34 -/* 0A1D80 802E2580 8E040028 */ lw $a0, 0x28($s0) -/* 0A1D84 802E2584 1000000B */ b .L80200A44 -/* 0A1D88 802E2588 240CFFFF */ li $t4, -1 -.L80200A1C: -/* 0A1D8C 802E258C 8E040028 */ lw $a0, 0x28($s0) -/* 0A1D90 802E2590 0C0B87DC */ jal discard_sequence -/* 0A1D94 802E2594 AFA3002C */ sw $v1, 0x2c($sp) -/* 0A1D98 802E2598 10000005 */ b .L80200A40 -/* 0A1D9C 802E259C 8FA3002C */ lw $v1, 0x2c($sp) -/* 0A1DA0 802E25A0 8E040028 */ lw $a0, 0x28($s0) -.L80200A34: -/* 0A1DA4 802E25A4 0C0B87A3 */ jal discard_bank -/* 0A1DA8 802E25A8 AFA3002C */ sw $v1, 0x2c($sp) -/* 0A1DAC 802E25AC 8FA3002C */ lw $v1, 0x2c($sp) -.L80200A40: -/* 0A1DB0 802E25B0 240CFFFF */ li $t4, -1 -.L80200A44: -/* 0A1DB4 802E25B4 AE0C0028 */ sw $t4, 0x28($s0) -/* 0A1DB8 802E25B8 8C6E0008 */ lw $t6, 8($v1) -/* 0A1DBC 802E25BC 8C6D0000 */ lw $t5, ($v1) -/* 0A1DC0 802E25C0 01AE7821 */ addu $t7, $t5, $t6 -/* 0A1DC4 802E25C4 AE0F0020 */ sw $t7, 0x20($s0) -/* 0A1DC8 802E25C8 8E030014 */ lw $v1, 0x14($s0) -.L80200A5C: -/* 0A1DCC 802E25CC 8E180000 */ lw $t8, ($s0) -/* 0A1DD0 802E25D0 00601025 */ move $v0, $v1 -/* 0A1DD4 802E25D4 3B190001 */ xori $t9, $t8, 1 -/* 0A1DD8 802E25D8 10000052 */ b .L80200BB4 -/* 0A1DDC 802E25DC AE190000 */ sw $t9, ($s0) -.L80200A70: -/* 0A1DE0 802E25E0 8C6B0000 */ lw $t3, ($v1) -/* 0A1DE4 802E25E4 8C6C0008 */ lw $t4, 8($v1) -/* 0A1DE8 802E25E8 AE090028 */ sw $t1, 0x28($s0) -/* 0A1DEC 802E25EC AE120024 */ sw $s2, 0x24($s0) -/* 0A1DF0 802E25F0 016C6821 */ addu $t5, $t3, $t4 -/* 0A1DF4 802E25F4 01B27023 */ subu $t6, $t5, $s2 -/* 0A1DF8 802E25F8 25C2FFF0 */ addiu $v0, $t6, -0x10 -/* 0A1DFC 802E25FC AE020020 */ sw $v0, 0x20($s0) -/* 0A1E00 802E2600 8C780004 */ lw $t8, 4($v1) -/* 0A1E04 802E2604 0058082B */ sltu $at, $v0, $t8 -/* 0A1E08 802E2608 10200017 */ beqz $at, .L80200AF8 -/* 0A1E0C 802E260C 00000000 */ nop -/* 0A1E10 802E2610 8E19001C */ lw $t9, 0x1c($s0) -/* 0A1E14 802E2614 00B95821 */ addu $t3, $a1, $t9 -/* 0A1E18 802E2618 11400005 */ beqz $t2, .L80200AC0 -/* 0A1E1C 802E261C A1600000 */ sb $zero, ($t3) -/* 0A1E20 802E2620 51480009 */ beql $t2, $t0, .L80200AD8 -/* 0A1E24 802E2624 8E04001C */ lw $a0, 0x1c($s0) -/* 0A1E28 802E2628 1000000B */ b .L80200AE8 -/* 0A1E2C 802E262C 240CFFFF */ li $t4, -1 -.L80200AC0: -/* 0A1E30 802E2630 8E04001C */ lw $a0, 0x1c($s0) -/* 0A1E34 802E2634 0C0B87DC */ jal discard_sequence -/* 0A1E38 802E2638 AFA3002C */ sw $v1, 0x2c($sp) -/* 0A1E3C 802E263C 10000005 */ b .L80200AE4 -/* 0A1E40 802E2640 8FA3002C */ lw $v1, 0x2c($sp) -/* 0A1E44 802E2644 8E04001C */ lw $a0, 0x1c($s0) -.L80200AD8: -/* 0A1E48 802E2648 0C0B87A3 */ jal discard_bank -/* 0A1E4C 802E264C AFA3002C */ sw $v1, 0x2c($sp) -/* 0A1E50 802E2650 8FA3002C */ lw $v1, 0x2c($sp) -.L80200AE4: -/* 0A1E54 802E2654 240CFFFF */ li $t4, -1 -.L80200AE8: -/* 0A1E58 802E2658 AE0C001C */ sw $t4, 0x1c($s0) -/* 0A1E5C 802E265C 8C6D0000 */ lw $t5, ($v1) -/* 0A1E60 802E2660 AC6D0004 */ sw $t5, 4($v1) -/* 0A1E64 802E2664 8E020020 */ lw $v0, 0x20($s0) -.L80200AF8: -/* 0A1E68 802E2668 1000FFD8 */ b .L80200A5C -/* 0A1E6C 802E266C 00401825 */ move $v1, $v0 -/* 0A1E70 802E2670 1000002C */ b .L80200BB4 -/* 0A1E74 802E2674 00001025 */ move $v0, $zero -.L80200B08: -/* 0A1E78 802E2678 02120019 */ multu $s0, $s2 -/* 0A1E7C 802E267C 26240004 */ addiu $a0, $s1, 4 -/* 0A1E80 802E2680 AFA70064 */ sw $a3, 0x64($sp) -/* 0A1E84 802E2684 AFA90068 */ sw $t1, 0x68($sp) -/* 0A1E88 802E2688 00002812 */ mflo $a1 -/* 0A1E8C 802E268C 0C0B87F8 */ jal soundAlloc -/* 0A1E90 802E2690 00000000 */ nop -/* 0A1E94 802E2694 8E2E0000 */ lw $t6, ($s1) -/* 0A1E98 802E2698 2406000C */ li $a2, 12 -/* 0A1E9C 802E269C 8FA70064 */ lw $a3, 0x64($sp) -/* 0A1EA0 802E26A0 01C60019 */ multu $t6, $a2 -/* 0A1EA4 802E26A4 8FA90068 */ lw $t1, 0x68($sp) -/* 0A1EA8 802E26A8 24080001 */ li $t0, 1 -/* 0A1EAC 802E26AC 24010002 */ li $at, 2 -/* 0A1EB0 802E26B0 00007812 */ mflo $t7 -/* 0A1EB4 802E26B4 022FC021 */ addu $t8, $s1, $t7 -/* 0A1EB8 802E26B8 14400009 */ bnez $v0, .L80200B70 -/* 0A1EBC 802E26BC AF020014 */ sw $v0, 0x14($t8) -/* 0A1EC0 802E26C0 10E80005 */ beq $a3, $t0, .L80200B68 -/* 0A1EC4 802E26C4 00000000 */ nop -/* 0A1EC8 802E26C8 54E10006 */ bnel $a3, $at, .L80200B74 -/* 0A1ECC 802E26CC 8E390000 */ lw $t9, ($s1) -/* 0A1ED0 802E26D0 1000FF3B */ b .L80200850 -/* 0A1ED4 802E26D4 00003825 */ move $a3, $zero -.L80200B68: -/* 0A1ED8 802E26D8 10000012 */ b .L80200BB4 -/* 0A1EDC 802E26DC 00001025 */ move $v0, $zero -.L80200B70: -/* 0A1EE0 802E26E0 8E390000 */ lw $t9, ($s1) -.L80200B74: -/* 0A1EE4 802E26E4 03260019 */ multu $t9, $a2 -/* 0A1EE8 802E26E8 00005812 */ mflo $t3 -/* 0A1EEC 802E26EC 022B6021 */ addu $t4, $s1, $t3 -/* 0A1EF0 802E26F0 AD89001C */ sw $t1, 0x1c($t4) -/* 0A1EF4 802E26F4 8E2D0000 */ lw $t5, ($s1) -/* 0A1EF8 802E26F8 01A60019 */ multu $t5, $a2 -/* 0A1EFC 802E26FC 00007012 */ mflo $t6 -/* 0A1F00 802E2700 022E7821 */ addu $t7, $s1, $t6 -/* 0A1F04 802E2704 ADF20018 */ sw $s2, 0x18($t7) -/* 0A1F08 802E2708 8E230000 */ lw $v1, ($s1) -/* 0A1F0C 802E270C 00660019 */ multu $v1, $a2 -/* 0A1F10 802E2710 246B0001 */ addiu $t3, $v1, 1 -/* 0A1F14 802E2714 0000C012 */ mflo $t8 -/* 0A1F18 802E2718 0238C821 */ addu $t9, $s1, $t8 -/* 0A1F1C 802E271C 8F220014 */ lw $v0, 0x14($t9) -/* 0A1F20 802E2720 AE2B0000 */ sw $t3, ($s1) -.L80200BB4: -/* 0A1F24 802E2724 8FBF0024 */ lw $ra, 0x24($sp) -/* 0A1F28 802E2728 8FB00018 */ lw $s0, 0x18($sp) -/* 0A1F2C 802E272C 8FB1001C */ lw $s1, 0x1c($sp) -/* 0A1F30 802E2730 8FB20020 */ lw $s2, 0x20($sp) -/* 0A1F34 802E2734 03E00008 */ jr $ra -/* 0A1F38 802E2738 27BD0058 */ addiu $sp, $sp, 0x58 diff --git a/asm/non_matchings/eu/audio/func_eu_802e00d8.s b/asm/non_matchings/eu/audio/func_eu_802e00d8.s deleted file mode 100644 index 740495c5..00000000 --- a/asm/non_matchings/eu/audio/func_eu_802e00d8.s +++ /dev/null @@ -1,88 +0,0 @@ -glabel func_eu_802e00d8 -/* 09F8D8 802E00D8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 09F8DC 802E00DC AFA50034 */ sw $a1, 0x34($sp) -/* 09F8E0 802E00E0 87B80036 */ lh $t8, 0x36($sp) -/* 09F8E4 802E00E4 3C088022 */ lui $t0, %hi(gSynthesisReverbs) # $t0, 0x8022 -/* 09F8E8 802E00E8 2508C1B0 */ addiu $t0, %lo(gSynthesisReverbs) # addiu $t0, $t0, -0x3e50 -/* 09F8EC 802E00EC 0018C940 */ sll $t9, $t8, 5 -/* 09F8F0 802E00F0 0338C821 */ addu $t9, $t9, $t8 -/* 09F8F4 802E00F4 0019C8C0 */ sll $t9, $t9, 3 -/* 09F8F8 802E00F8 03281021 */ addu $v0, $t9, $t0 -/* 09F8FC 802E00FC 90490003 */ lbu $t1, 3($v0) -/* 09F900 802E0100 00067400 */ sll $t6, $a2, 0x10 -/* 09F904 802E0104 000E7C03 */ sra $t7, $t6, 0x10 -/* 09F908 802E0108 00095080 */ sll $t2, $t1, 2 -/* 09F90C 802E010C 01495023 */ subu $t2, $t2, $t1 -/* 09F910 802E0110 000A50C0 */ sll $t2, $t2, 3 -/* 09F914 802E0114 000F3880 */ sll $a3, $t7, 2 -/* 09F918 802E0118 01495021 */ addu $t2, $t2, $t1 -/* 09F91C 802E011C 904C0001 */ lbu $t4, 1($v0) -/* 09F920 802E0120 000A5080 */ sll $t2, $t2, 2 -/* 09F924 802E0124 00EF3821 */ addu $a3, $a3, $t7 -/* 09F928 802E0128 00073880 */ sll $a3, $a3, 2 -/* 09F92C 802E012C 004A5821 */ addu $t3, $v0, $t2 -/* 09F930 802E0130 AFB00020 */ sw $s0, 0x20($sp) -/* 09F934 802E0134 01671821 */ addu $v1, $t3, $a3 -/* 09F938 802E0138 00808025 */ move $s0, $a0 -/* 09F93C 802E013C AFBF0024 */ sw $ra, 0x24($sp) -/* 09F940 802E0140 AFA60038 */ sw $a2, 0x38($sp) -/* 09F944 802E0144 11800033 */ beqz $t4, .L80200BC4 -/* 09F948 802E0148 24630030 */ addiu $v1, $v1, 0x30 -/* 09F94C 802E014C 904D0004 */ lbu $t5, 4($v0) -/* 09F950 802E0150 24010001 */ li $at, 1 -/* 09F954 802E0154 3C190800 */ lui $t9, 0x800 -/* 09F958 802E0158 15A10018 */ bne $t5, $at, .L80200B6C -/* 09F95C 802E015C 3C080740 */ lui $t0, (0x07400280 >> 16) # lui $t0, 0x740 -/* 09F960 802E0160 87AE0036 */ lh $t6, 0x36($sp) -/* 09F964 802E0164 9466000E */ lhu $a2, 0xe($v1) -/* 09F968 802E0168 84670010 */ lh $a3, 0x10($v1) -/* 09F96C 802E016C AFA3002C */ sw $v1, 0x2c($sp) -/* 09F970 802E0170 24050740 */ li $a1, 1856 -/* 09F974 802E0174 0C0B7E65 */ jal synthesis_save_reverb_ring_buffer -/* 09F978 802E0178 AFAE0010 */ sw $t6, 0x10($sp) -/* 09F97C 802E017C 8FA3002C */ lw $v1, 0x2c($sp) -/* 09F980 802E0180 00408025 */ move $s0, $v0 -/* 09F984 802E0184 00402025 */ move $a0, $v0 -/* 09F988 802E0188 84670012 */ lh $a3, 0x12($v1) -/* 09F98C 802E018C 87B80036 */ lh $t8, 0x36($sp) -/* 09F990 802E0190 50E00021 */ beql $a3, $zero, .L80200BC8 -/* 09F994 802E0194 8FBF0024 */ lw $ra, 0x24($sp) -/* 09F998 802E0198 84650010 */ lh $a1, 0x10($v1) -/* 09F99C 802E019C AFB80010 */ sw $t8, 0x10($sp) -/* 09F9A0 802E01A0 00003025 */ move $a2, $zero -/* 09F9A4 802E01A4 24A50740 */ addiu $a1, $a1, 0x740 -/* 09F9A8 802E01A8 30AFFFFF */ andi $t7, $a1, 0xffff -/* 09F9AC 802E01AC 0C0B7E65 */ jal synthesis_save_reverb_ring_buffer -/* 09F9B0 802E01B0 01E02825 */ move $a1, $t7 -/* 09F9B4 802E01B4 10000017 */ b .L80200BC4 -/* 09F9B8 802E01B8 00408025 */ move $s0, $v0 -.L80200B6C: -/* 09F9BC 802E01BC 02001825 */ move $v1, $s0 -/* 09F9C0 802E01C0 26100008 */ addiu $s0, $s0, 8 -/* 09F9C4 802E01C4 35080280 */ ori $t0, (0x07400280 & 0xFFFF) # ori $t0, $t0, 0x280 -/* 09F9C8 802E01C8 AC680004 */ sw $t0, 4($v1) -/* 09F9CC 802E01CC AC790000 */ sw $t9, ($v1) -/* 09F9D0 802E01D0 02002025 */ move $a0, $s0 -/* 09F9D4 802E01D4 3C090600 */ lui $t1, 0x600 -/* 09F9D8 802E01D8 AC890000 */ sw $t1, ($a0) -/* 09F9DC 802E01DC 904A0003 */ lbu $t2, 3($v0) -/* 09F9E0 802E01E0 3C018000 */ lui $at, 0x8000 -/* 09F9E4 802E01E4 26100008 */ addiu $s0, $s0, 8 -/* 09F9E8 802E01E8 000A5880 */ sll $t3, $t2, 2 -/* 09F9EC 802E01EC 016A5823 */ subu $t3, $t3, $t2 -/* 09F9F0 802E01F0 000B58C0 */ sll $t3, $t3, 3 -/* 09F9F4 802E01F4 016A5821 */ addu $t3, $t3, $t2 -/* 09F9F8 802E01F8 000B5880 */ sll $t3, $t3, 2 -/* 09F9FC 802E01FC 004B6021 */ addu $t4, $v0, $t3 -/* 09FA00 802E0200 01876821 */ addu $t5, $t4, $a3 -/* 09FA04 802E0204 8DAE0034 */ lw $t6, 0x34($t5) -/* 09FA08 802E0208 01C17821 */ addu $t7, $t6, $at -/* 09FA0C 802E020C AC8F0004 */ sw $t7, 4($a0) -/* 09FA10 802E0210 A0400000 */ sb $zero, ($v0) -.L80200BC4: -/* 09FA14 802E0214 8FBF0024 */ lw $ra, 0x24($sp) -.L80200BC8: -/* 09FA18 802E0218 02001025 */ move $v0, $s0 -/* 09FA1C 802E021C 8FB00020 */ lw $s0, 0x20($sp) -/* 09FA20 802E0220 03E00008 */ jr $ra -/* 09FA24 802E0224 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/eu/audio/note_apply_headset_pan_effects.s b/asm/non_matchings/eu/audio/note_apply_headset_pan_effects.s deleted file mode 100644 index ec9f20a4..00000000 --- a/asm/non_matchings/eu/audio/note_apply_headset_pan_effects.s +++ /dev/null @@ -1,263 +0,0 @@ -glabel note_apply_headset_pan_effects -/* 0A0F98 802E1798 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0A0F9C 802E179C 8FAE003C */ lw $t6, 0x3c($sp) -/* 0A0FA0 802E17A0 AFB00004 */ sw $s0, 4($sp) -/* 0A0FA4 802E17A4 24020001 */ li $v0, 1 -/* 0A0FA8 802E17A8 11C20006 */ beq $t6, $v0, .L80202174 -/* 0A0FAC 802E17AC 00C08025 */ move $s0, $a2 -/* 0A0FB0 802E17B0 24010002 */ li $at, 2 -/* 0A0FB4 802E17B4 11C10009 */ beq $t6, $at, .L8020218C -/* 0A0FB8 802E17B8 240A0600 */ li $t2, 1536 -/* 0A0FBC 802E17BC 100000E8 */ b .L80202510 -/* 0A0FC0 802E17C0 00801025 */ move $v0, $a0 -.L80202174: -/* 0A0FC4 802E17C4 90A60003 */ lbu $a2, 3($a1) -/* 0A0FC8 802E17C8 92080002 */ lbu $t0, 2($s0) -/* 0A0FCC 802E17CC 240A04C0 */ li $t2, 1216 -/* 0A0FD0 802E17D0 A2000003 */ sb $zero, 3($s0) -/* 0A0FD4 802E17D4 10000008 */ b .L802021A8 -/* 0A0FD8 802E17D8 A2060002 */ sb $a2, 2($s0) -.L8020218C: -/* 0A0FDC 802E17DC 90A60004 */ lbu $a2, 4($a1) -/* 0A0FE0 802E17E0 92080003 */ lbu $t0, 3($s0) -/* 0A0FE4 802E17E4 A2000002 */ sb $zero, 2($s0) -/* 0A0FE8 802E17E8 10000003 */ b .L802021A8 -/* 0A0FEC 802E17EC A2060003 */ sb $a2, 3($s0) -/* 0A0FF0 802E17F0 100000DB */ b .L80202510 -/* 0A0FF4 802E17F4 00801025 */ move $v0, $a0 -.L802021A8: -/* 0A0FF8 802E17F8 8FAF0038 */ lw $t7, 0x38($sp) -/* 0A0FFC 802E17FC 30E5FFFF */ andi $a1, $a3, 0xffff -/* 0A1000 802E1800 3C180A00 */ lui $t8, 0xa00 -/* 0A1004 802E1804 51E200A5 */ beql $t7, $v0, .L8020244C -/* 0A1008 802E1808 00801825 */ move $v1, $a0 -/* 0A100C 802E180C 15000047 */ bnez $t0, .L802022DC -/* 0A1010 802E1810 01002825 */ move $a1, $t0 -/* 0A1014 802E1814 00801825 */ move $v1, $a0 -/* 0A1018 802E1818 3C020A00 */ lui $v0, (0x0A000200 >> 16) # lui $v0, 0xa00 -/* 0A101C 802E181C 24840008 */ addiu $a0, $a0, 8 -/* 0A1020 802E1820 24180008 */ li $t8, 8 -/* 0A1024 802E1824 34420200 */ ori $v0, (0x0A000200 & 0xFFFF) # ori $v0, $v0, 0x200 -/* 0A1028 802E1828 AC780004 */ sw $t8, 4($v1) -/* 0A102C 802E182C 00805825 */ move $t3, $a0 -/* 0A1030 802E1830 3C190200 */ lui $t9, (0x02000008 >> 16) # lui $t9, 0x200 -/* 0A1034 802E1834 AC620000 */ sw $v0, ($v1) -/* 0A1038 802E1838 37390008 */ ori $t9, (0x02000008 & 0xFFFF) # ori $t9, $t9, 8 -/* 0A103C 802E183C 24840008 */ addiu $a0, $a0, 8 -/* 0A1040 802E1840 AD790000 */ sw $t9, ($t3) -/* 0A1044 802E1844 240E0008 */ li $t6, 8 -/* 0A1048 802E1848 00806025 */ move $t4, $a0 -/* 0A104C 802E184C AD6E0004 */ sw $t6, 4($t3) -/* 0A1050 802E1850 24840008 */ addiu $a0, $a0, 8 -/* 0A1054 802E1854 3C0F0010 */ lui $t7, (0x00100010 >> 16) # lui $t7, 0x10 -/* 0A1058 802E1858 35EF0010 */ ori $t7, (0x00100010 & 0xFFFF) # ori $t7, $t7, 0x10 -/* 0A105C 802E185C 00806825 */ move $t5, $a0 -/* 0A1060 802E1860 AD8F0004 */ sw $t7, 4($t4) -/* 0A1064 802E1864 AD820000 */ sw $v0, ($t4) -/* 0A1068 802E1868 24190020 */ li $t9, 32 -/* 0A106C 802E186C 3C180800 */ lui $t8, 0x800 -/* 0A1070 802E1870 ADB80000 */ sw $t8, ($t5) -/* 0A1074 802E1874 ADB90004 */ sw $t9, 4($t5) -/* 0A1078 802E1878 24840008 */ addiu $a0, $a0, 8 -/* 0A107C 802E187C AFA4000C */ sw $a0, 0xc($sp) -/* 0A1080 802E1880 8FAF000C */ lw $t7, 0xc($sp) -/* 0A1084 802E1884 3C0E0600 */ lui $t6, 0x600 -/* 0A1088 802E1888 3C098000 */ lui $t1, (0x80000090 >> 16) # lui $t1, 0x8000 -/* 0A108C 802E188C ADEE0000 */ sw $t6, ($t7) -/* 0A1090 802E1890 8E18000C */ lw $t8, 0xc($s0) -/* 0A1094 802E1894 35290090 */ ori $t1, (0x80000090 & 0xFFFF) # ori $t1, $t1, 0x90 -/* 0A1098 802E1898 00E67021 */ addu $t6, $a3, $a2 -/* 0A109C 802E189C 0309C821 */ addu $t9, $t8, $t1 -/* 0A10A0 802E18A0 0007C3C0 */ sll $t8, $a3, 0xf -/* 0A10A4 802E18A4 01C51823 */ subu $v1, $t6, $a1 -/* 0A10A8 802E18A8 ADF90004 */ sw $t9, 4($t7) -/* 0A10AC 802E18AC 24790008 */ addiu $t9, $v1, 8 -/* 0A10B0 802E18B0 0319001A */ div $zero, $t8, $t9 -/* 0A10B4 802E18B4 24840008 */ addiu $a0, $a0, 8 -/* 0A10B8 802E18B8 17200002 */ bnez $t9, .L80202274 -/* 0A10BC 802E18BC 00000000 */ nop -/* 0A10C0 802E18C0 0007000D */ break 7 -.L80202274: -/* 0A10C4 802E18C4 2401FFFF */ li $at, -1 -/* 0A10C8 802E18C8 17210004 */ bne $t9, $at, .L8020228C -/* 0A10CC 802E18CC 3C018000 */ lui $at, 0x8000 -/* 0A10D0 802E18D0 17010002 */ bne $t8, $at, .L8020228C -/* 0A10D4 802E18D4 00000000 */ nop -/* 0A10D8 802E18D8 0006000D */ break 6 -.L8020228C: -/* 0A10DC 802E18DC 00005812 */ mflo $t3 -/* 0A10E0 802E18E0 00806025 */ move $t4, $a0 -/* 0A10E4 802E18E4 316FFFFF */ andi $t7, $t3, 0xffff -/* 0A10E8 802E18E8 3C0E0800 */ lui $t6, (0x08000208 >> 16) # lui $t6, 0x800 -/* 0A10EC 802E18EC 35CE0208 */ ori $t6, (0x08000208 & 0xFFFF) # ori $t6, $t6, 0x208 -/* 0A10F0 802E18F0 24840008 */ addiu $a0, $a0, 8 -/* 0A10F4 802E18F4 3062FFFF */ andi $v0, $v1, 0xffff -/* 0A10F8 802E18F8 31F8FFFF */ andi $t8, $t7, 0xffff -/* 0A10FC 802E18FC 3C010500 */ lui $at, 0x500 -/* 0A1100 802E1900 AD820004 */ sw $v0, 4($t4) -/* 0A1104 802E1904 AD8E0000 */ sw $t6, ($t4) -/* 0A1108 802E1908 0301C825 */ or $t9, $t8, $at -/* 0A110C 802E190C 00806825 */ move $t5, $a0 -/* 0A1110 802E1910 01E05825 */ move $t3, $t7 -/* 0A1114 802E1914 ADB90000 */ sw $t9, ($t5) -/* 0A1118 802E1918 8E0F000C */ lw $t7, 0xc($s0) -/* 0A111C 802E191C 24840008 */ addiu $a0, $a0, 8 -/* 0A1120 802E1920 01E97021 */ addu $t6, $t7, $t1 -/* 0A1124 802E1924 10000038 */ b .L802023B8 -/* 0A1128 802E1928 ADAE0004 */ sw $t6, 4($t5) -.L802022DC: -/* 0A112C 802E192C 14C00014 */ bnez $a2, .L80202330 -/* 0A1130 802E1930 00C01025 */ move $v0, $a2 -/* 0A1134 802E1934 00E5C823 */ subu $t9, $a3, $a1 -/* 0A1138 802E1938 272FFFFC */ addiu $t7, $t9, -4 -/* 0A113C 802E193C 0007C3C0 */ sll $t8, $a3, 0xf -/* 0A1140 802E1940 030F001A */ div $zero, $t8, $t7 -/* 0A1144 802E1944 00005812 */ mflo $t3 -/* 0A1148 802E1948 316EFFFF */ andi $t6, $t3, 0xffff -/* 0A114C 802E194C 15E00002 */ bnez $t7, .L80202308 -/* 0A1150 802E1950 00000000 */ nop -/* 0A1154 802E1954 0007000D */ break 7 -.L80202308: -/* 0A1158 802E1958 2401FFFF */ li $at, -1 -/* 0A115C 802E195C 15E10004 */ bne $t7, $at, .L80202320 -/* 0A1160 802E1960 3C018000 */ lui $at, 0x8000 -/* 0A1164 802E1964 17010002 */ bne $t8, $at, .L80202320 -/* 0A1168 802E1968 00000000 */ nop -/* 0A116C 802E196C 0006000D */ break 6 -.L80202320: -/* 0A1170 802E1970 00E2C821 */ addu $t9, $a3, $v0 -/* 0A1174 802E1974 03251823 */ subu $v1, $t9, $a1 -/* 0A1178 802E1978 10000011 */ b .L80202370 -/* 0A117C 802E197C 01C05825 */ move $t3, $t6 -.L80202330: -/* 0A1180 802E1980 00E2C021 */ addu $t8, $a3, $v0 -/* 0A1184 802E1984 03051823 */ subu $v1, $t8, $a1 -/* 0A1188 802E1988 00077BC0 */ sll $t7, $a3, 0xf -/* 0A118C 802E198C 01E3001A */ div $zero, $t7, $v1 -/* 0A1190 802E1990 00005812 */ mflo $t3 -/* 0A1194 802E1994 316EFFFF */ andi $t6, $t3, 0xffff -/* 0A1198 802E1998 01C05825 */ move $t3, $t6 -/* 0A119C 802E199C 14600002 */ bnez $v1, .L80202358 -/* 0A11A0 802E19A0 00000000 */ nop -/* 0A11A4 802E19A4 0007000D */ break 7 -.L80202358: -/* 0A11A8 802E19A8 2401FFFF */ li $at, -1 -/* 0A11AC 802E19AC 14610004 */ bne $v1, $at, .L80202370 -/* 0A11B0 802E19B0 3C018000 */ lui $at, 0x8000 -/* 0A11B4 802E19B4 15E10002 */ bne $t7, $at, .L80202370 -/* 0A11B8 802E19B8 00000000 */ nop -/* 0A11BC 802E19BC 0006000D */ break 6 -.L80202370: -/* 0A11C0 802E19C0 00806025 */ move $t4, $a0 -/* 0A11C4 802E19C4 3C190800 */ lui $t9, (0x08000200 >> 16) # lui $t9, 0x800 -/* 0A11C8 802E19C8 37390200 */ ori $t9, (0x08000200 & 0xFFFF) # ori $t9, $t9, 0x200 -/* 0A11CC 802E19CC 24840008 */ addiu $a0, $a0, 8 -/* 0A11D0 802E19D0 3062FFFF */ andi $v0, $v1, 0xffff -/* 0A11D4 802E19D4 3178FFFF */ andi $t8, $t3, 0xffff -/* 0A11D8 802E19D8 3C010500 */ lui $at, 0x500 -/* 0A11DC 802E19DC AD820004 */ sw $v0, 4($t4) -/* 0A11E0 802E19E0 AD990000 */ sw $t9, ($t4) -/* 0A11E4 802E19E4 03017825 */ or $t7, $t8, $at -/* 0A11E8 802E19E8 00806825 */ move $t5, $a0 -/* 0A11EC 802E19EC ADAF0000 */ sw $t7, ($t5) -/* 0A11F0 802E19F0 8E0E000C */ lw $t6, 0xc($s0) -/* 0A11F4 802E19F4 3C098000 */ lui $t1, %hi(0x80000004) # $t1, 0x8000 -/* 0A11F8 802E19F8 35290090 */ ori $t1, (0x80000090 & 0xFFFF) # ori $t1, $t1, 0x90 -/* 0A11FC 802E19FC 01C9C821 */ addu $t9, $t6, $t1 -/* 0A1200 802E1A00 ADB90004 */ sw $t9, 4($t5) -/* 0A1204 802E1A04 24840008 */ addiu $a0, $a0, 8 -.L802023B8: -/* 0A1208 802E1A08 10A0001B */ beqz $a1, .L80202428 -/* 0A120C 802E1A0C 00801825 */ move $v1, $a0 -/* 0A1210 802E1A10 00801825 */ move $v1, $a0 -/* 0A1214 802E1A14 3C180800 */ lui $t8, (0x08000200 >> 16) # lui $t8, 0x800 -/* 0A1218 802E1A18 37180200 */ ori $t8, (0x08000200 & 0xFFFF) # ori $t8, $t8, 0x200 -/* 0A121C 802E1A1C 24840008 */ addiu $a0, $a0, 8 -/* 0A1220 802E1A20 310FFFFF */ andi $t7, $t0, 0xffff -/* 0A1224 802E1A24 AC6F0004 */ sw $t7, 4($v1) -/* 0A1228 802E1A28 AC780000 */ sw $t8, ($v1) -/* 0A122C 802E1A2C 00804825 */ move $t1, $a0 -/* 0A1230 802E1A30 3C0E0400 */ lui $t6, 0x400 -/* 0A1234 802E1A34 AD2E0000 */ sw $t6, ($t1) -/* 0A1238 802E1A38 8E19000C */ lw $t9, 0xc($s0) -/* 0A123C 802E1A3C 3C018000 */ lui $at, (0x800000B0 >> 16) # lui $at, 0x8000 -/* 0A1240 802E1A40 342100B0 */ ori $at, (0x800000B0 & 0xFFFF) # ori $at, $at, 0xb0 -/* 0A1244 802E1A44 0321C021 */ addu $t8, $t9, $at -/* 0A1248 802E1A48 AD380004 */ sw $t8, %lo(0x80000004)($t1) -/* 0A124C 802E1A4C 24840008 */ addiu $a0, $a0, 8 -/* 0A1250 802E1A50 00805825 */ move $t3, $a0 -/* 0A1254 802E1A54 24B90200 */ addiu $t9, $a1, 0x200 -/* 0A1258 802E1A58 3C0F0A00 */ lui $t7, 0xa00 -/* 0A125C 802E1A5C AD6F0000 */ sw $t7, ($t3) -/* 0A1260 802E1A60 0019C400 */ sll $t8, $t9, 0x10 -/* 0A1264 802E1A64 03027825 */ or $t7, $t8, $v0 -/* 0A1268 802E1A68 AD6F0004 */ sw $t7, 4($t3) -/* 0A126C 802E1A6C 24840008 */ addiu $a0, $a0, 8 -/* 0A1270 802E1A70 1000001C */ b .L80202494 -/* 0A1274 802E1A74 30E5FFFF */ andi $a1, $a3, 0xffff -.L80202428: -/* 0A1278 802E1A78 3C010200 */ lui $at, 0x200 -/* 0A127C 802E1A7C 0041C825 */ or $t9, $v0, $at -/* 0A1280 802E1A80 3C0E0A00 */ lui $t6, 0xa00 -/* 0A1284 802E1A84 AC6E0000 */ sw $t6, ($v1) -/* 0A1288 802E1A88 AC790004 */ sw $t9, 4($v1) -/* 0A128C 802E1A8C 24840008 */ addiu $a0, $a0, 8 -/* 0A1290 802E1A90 10000014 */ b .L80202494 -/* 0A1294 802E1A94 30E5FFFF */ andi $a1, $a3, 0xffff -/* 0A1298 802E1A98 00801825 */ move $v1, $a0 -.L8020244C: -/* 0A129C 802E1A9C 3C020A00 */ lui $v0, %hi(0x0A000004) # $v0, 0xa00 -/* 0A12A0 802E1AA0 24840008 */ addiu $a0, $a0, 8 -/* 0A12A4 802E1AA4 34420200 */ ori $v0, (0x0A000200 & 0xFFFF) # ori $v0, $v0, 0x200 -/* 0A12A8 802E1AA8 00804025 */ move $t0, $a0 -/* 0A12AC 802E1AAC AC620000 */ sw $v0, ($v1) -/* 0A12B0 802E1AB0 AC650004 */ sw $a1, 4($v1) -/* 0A12B4 802E1AB4 24CE0200 */ addiu $t6, $a2, 0x200 -/* 0A12B8 802E1AB8 000ECC00 */ sll $t9, $t6, 0x10 -/* 0A12BC 802E1ABC AD180000 */ sw $t8, ($t0) -/* 0A12C0 802E1AC0 24840008 */ addiu $a0, $a0, 8 -/* 0A12C4 802E1AC4 0325C025 */ or $t8, $t9, $a1 -/* 0A12C8 802E1AC8 00804825 */ move $t1, $a0 -/* 0A12CC 802E1ACC AD180004 */ sw $t8, 4($t0) -/* 0A12D0 802E1AD0 3C0F0200 */ lui $t7, (0x02000200 >> 16) # lui $t7, 0x200 -/* 0A12D4 802E1AD4 35EF0200 */ ori $t7, (0x02000200 & 0xFFFF) # ori $t7, $t7, 0x200 -/* 0A12D8 802E1AD8 AD2F0000 */ sw $t7, ($t1) -/* 0A12DC 802E1ADC AD260004 */ sw $a2, %lo(0x80000004)($t1) -/* 0A12E0 802E1AE0 24840008 */ addiu $a0, $a0, 8 -.L80202494: -/* 0A12E4 802E1AE4 10C00012 */ beqz $a2, .L802024E0 -/* 0A12E8 802E1AE8 00801025 */ move $v0, $a0 -/* 0A12EC 802E1AEC 3C0E0800 */ lui $t6, 0x800 -/* 0A12F0 802E1AF0 AC4E0000 */ sw $t6, ($v0) -/* 0A12F4 802E1AF4 24F80200 */ addiu $t8, $a3, 0x200 -/* 0A12F8 802E1AF8 00187C00 */ sll $t7, $t8, 0x10 -/* 0A12FC 802E1AFC 30CEFFFF */ andi $t6, $a2, 0xffff -/* 0A1300 802E1B00 01EEC825 */ or $t9, $t7, $t6 -/* 0A1304 802E1B04 24840008 */ addiu $a0, $a0, 8 -/* 0A1308 802E1B08 AC590004 */ sw $t9, %lo(0x0A000004)($v0) -/* 0A130C 802E1B0C 00801825 */ move $v1, $a0 -/* 0A1310 802E1B10 3C180600 */ lui $t8, 0x600 -/* 0A1314 802E1B14 AC780000 */ sw $t8, ($v1) -/* 0A1318 802E1B18 8E0F000C */ lw $t7, 0xc($s0) -/* 0A131C 802E1B1C 3C018000 */ lui $at, (0x800000B0 >> 16) # lui $at, 0x8000 -/* 0A1320 802E1B20 342100B0 */ ori $at, (0x800000B0 & 0xFFFF) # ori $at, $at, 0xb0 -/* 0A1324 802E1B24 01E17021 */ addu $t6, $t7, $at -/* 0A1328 802E1B28 AC6E0004 */ sw $t6, 4($v1) -/* 0A132C 802E1B2C 24840008 */ addiu $a0, $a0, 8 -.L802024E0: -/* 0A1330 802E1B30 24860008 */ addiu $a2, $a0, 8 -/* 0A1334 802E1B34 3C190800 */ lui $t9, 0x800 -/* 0A1338 802E1B38 AC990000 */ sw $t9, ($a0) -/* 0A133C 802E1B3C AC850004 */ sw $a1, 4($a0) -/* 0A1340 802E1B40 3C180C00 */ lui $t8, (0x0C007FFF >> 16) # lui $t8, 0xc00 -/* 0A1344 802E1B44 314FFFFF */ andi $t7, $t2, 0xffff -/* 0A1348 802E1B48 3C010200 */ lui $at, 0x200 -/* 0A134C 802E1B4C 01E17025 */ or $t6, $t7, $at -/* 0A1350 802E1B50 37187FFF */ ori $t8, (0x0C007FFF & 0xFFFF) # ori $t8, $t8, 0x7fff -/* 0A1354 802E1B54 ACD80000 */ sw $t8, ($a2) -/* 0A1358 802E1B58 ACCE0004 */ sw $t6, 4($a2) -/* 0A135C 802E1B5C 24C20008 */ addiu $v0, $a2, 8 -.L80202510: -/* 0A1360 802E1B60 8FB00004 */ lw $s0, 4($sp) -/* 0A1364 802E1B64 03E00008 */ jr $ra -/* 0A1368 802E1B68 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/eu/audio/prepare_reverb_ring_buffer.s b/asm/non_matchings/eu/audio/prepare_reverb_ring_buffer.s deleted file mode 100644 index 70e5fe0d..00000000 --- a/asm/non_matchings/eu/audio/prepare_reverb_ring_buffer.s +++ /dev/null @@ -1,179 +0,0 @@ -glabel prepare_reverb_ring_buffer -/* 09EE50 802DF650 00067140 */ sll $t6, $a2, 5 -/* 09EE54 802DF654 01C67021 */ addu $t6, $t6, $a2 -/* 09EE58 802DF658 3C0F8022 */ lui $t7, %hi(gSynthesisReverbs) # $t7, 0x8022 -/* 09EE5C 802DF65C 25EFC1B0 */ addiu $t7, %lo(gSynthesisReverbs) # addiu $t7, $t7, -0x3e50 -/* 09EE60 802DF660 000E70C0 */ sll $t6, $t6, 3 -/* 09EE64 802DF664 01CF3821 */ addu $a3, $t6, $t7 -/* 09EE68 802DF668 90F80004 */ lbu $t8, 4($a3) -/* 09EE6C 802DF66C 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 09EE70 802DF670 24010001 */ li $at, 1 -/* 09EE74 802DF674 AFBF0014 */ sw $ra, 0x14($sp) -/* 09EE78 802DF678 AFA40040 */ sw $a0, 0x40($sp) -/* 09EE7C 802DF67C 13010062 */ beq $t8, $at, .L802001B8 -/* 09EE80 802DF680 AFA50044 */ sw $a1, 0x44($sp) -/* 09EE84 802DF684 90F90002 */ lbu $t9, 2($a3) -/* 09EE88 802DF688 00056080 */ sll $t4, $a1, 2 -/* 09EE8C 802DF68C 01856021 */ addu $t4, $t4, $a1 -/* 09EE90 802DF690 5720005E */ bnezl $t9, .L802001BC -/* 09EE94 802DF694 90E90004 */ lbu $t1, 4($a3) -/* 09EE98 802DF698 90E80003 */ lbu $t0, 3($a3) -/* 09EE9C 802DF69C 000C6080 */ sll $t4, $t4, 2 -/* 09EEA0 802DF6A0 24050280 */ li $a1, 640 -/* 09EEA4 802DF6A4 00084880 */ sll $t1, $t0, 2 -/* 09EEA8 802DF6A8 01284823 */ subu $t1, $t1, $t0 -/* 09EEAC 802DF6AC 000948C0 */ sll $t1, $t1, 3 -/* 09EEB0 802DF6B0 01284821 */ addu $t1, $t1, $t0 -/* 09EEB4 802DF6B4 00094880 */ sll $t1, $t1, 2 -/* 09EEB8 802DF6B8 00E95021 */ addu $t2, $a3, $t1 -/* 09EEBC 802DF6BC 014C3021 */ addu $a2, $t2, $t4 -/* 09EEC0 802DF6C0 24C60030 */ addiu $a2, $a2, 0x30 -/* 09EEC4 802DF6C4 8CC40004 */ lw $a0, 4($a2) -/* 09EEC8 802DF6C8 AFA70018 */ sw $a3, 0x18($sp) -/* 09EECC 802DF6CC 0C0BC448 */ jal osInvalDCache -/* 09EED0 802DF6D0 AFA6003C */ sw $a2, 0x3c($sp) -/* 09EED4 802DF6D4 8FA6003C */ lw $a2, 0x3c($sp) -/* 09EED8 802DF6D8 8FA70018 */ lw $a3, 0x18($sp) -/* 09EEDC 802DF6DC 00002825 */ move $a1, $zero -/* 09EEE0 802DF6E0 84CD0010 */ lh $t5, 0x10($a2) -/* 09EEE4 802DF6E4 00002025 */ move $a0, $zero -/* 09EEE8 802DF6E8 05A10003 */ bgez $t5, .L802000A8 -/* 09EEEC 802DF6EC 000D7043 */ sra $t6, $t5, 1 -/* 09EEF0 802DF6F0 25A10001 */ addiu $at, $t5, 1 -/* 09EEF4 802DF6F4 00017043 */ sra $t6, $at, 1 -.L802000A8: -/* 09EEF8 802DF6F8 59C00023 */ blezl $t6, .L80200138 -/* 09EEFC 802DF6FC 84CE0012 */ lh $t6, 0x12($a2) -/* 09EF00 802DF700 00001025 */ move $v0, $zero -/* 09EF04 802DF704 8CCF0004 */ lw $t7, 4($a2) -.L802000B8: -/* 09EF08 802DF708 8CC9000C */ lw $t1, 0xc($a2) -/* 09EF0C 802DF70C 8CE80018 */ lw $t0, 0x18($a3) -/* 09EF10 802DF710 00051840 */ sll $v1, $a1, 1 -/* 09EF14 802DF714 01E3C021 */ addu $t8, $t7, $v1 -/* 09EF18 802DF718 87190000 */ lh $t9, ($t8) -/* 09EF1C 802DF71C 00095840 */ sll $t3, $t1, 1 -/* 09EF20 802DF720 010B5021 */ addu $t2, $t0, $t3 -/* 09EF24 802DF724 01426021 */ addu $t4, $t2, $v0 -/* 09EF28 802DF728 A5990000 */ sh $t9, ($t4) -/* 09EF2C 802DF72C 8CCD0008 */ lw $t5, 8($a2) -/* 09EF30 802DF730 8CC9000C */ lw $t1, 0xc($a2) -/* 09EF34 802DF734 8CF8001C */ lw $t8, 0x1c($a3) -/* 09EF38 802DF738 01A37021 */ addu $t6, $t5, $v1 -/* 09EF3C 802DF73C 85CF0000 */ lh $t7, ($t6) -/* 09EF40 802DF740 00094040 */ sll $t0, $t1, 1 -/* 09EF44 802DF744 03085821 */ addu $t3, $t8, $t0 -/* 09EF48 802DF748 01625021 */ addu $t2, $t3, $v0 -/* 09EF4C 802DF74C A54F0000 */ sh $t7, ($t2) -/* 09EF50 802DF750 84CC0010 */ lh $t4, 0x10($a2) -/* 09EF54 802DF754 90F90004 */ lbu $t9, 4($a3) -/* 09EF58 802DF758 24840001 */ addiu $a0, $a0, 1 -/* 09EF5C 802DF75C 24420002 */ addiu $v0, $v0, 2 -/* 09EF60 802DF760 00B92821 */ addu $a1, $a1, $t9 -/* 09EF64 802DF764 05810003 */ bgez $t4, .L80200124 -/* 09EF68 802DF768 000C6843 */ sra $t5, $t4, 1 -/* 09EF6C 802DF76C 25810001 */ addiu $at, $t4, 1 -/* 09EF70 802DF770 00016843 */ sra $t5, $at, 1 -.L80200124: -/* 09EF74 802DF774 008D082A */ slt $at, $a0, $t5 -/* 09EF78 802DF778 5420FFE3 */ bnezl $at, .L802000B8 -/* 09EF7C 802DF77C 8CCF0004 */ lw $t7, 4($a2) -/* 09EF80 802DF780 00002025 */ move $a0, $zero -/* 09EF84 802DF784 84CE0012 */ lh $t6, 0x12($a2) -.L80200138: -/* 09EF88 802DF788 05C10003 */ bgez $t6, .L80200148 -/* 09EF8C 802DF78C 000E4843 */ sra $t1, $t6, 1 -/* 09EF90 802DF790 25C10001 */ addiu $at, $t6, 1 -/* 09EF94 802DF794 00014843 */ sra $t1, $at, 1 -.L80200148: -/* 09EF98 802DF798 5920001C */ blezl $t1, .L802001BC -/* 09EF9C 802DF79C 90E90004 */ lbu $t1, 4($a3) -/* 09EFA0 802DF7A0 00001025 */ move $v0, $zero -/* 09EFA4 802DF7A4 8CD80004 */ lw $t8, 4($a2) -.L80200158: -/* 09EFA8 802DF7A8 00051840 */ sll $v1, $a1, 1 -/* 09EFAC 802DF7AC 8CEF0018 */ lw $t7, 0x18($a3) -/* 09EFB0 802DF7B0 03034021 */ addu $t0, $t8, $v1 -/* 09EFB4 802DF7B4 850B0000 */ lh $t3, ($t0) -/* 09EFB8 802DF7B8 01E25021 */ addu $t2, $t7, $v0 -/* 09EFBC 802DF7BC 24840001 */ addiu $a0, $a0, 1 -/* 09EFC0 802DF7C0 A54B0000 */ sh $t3, ($t2) -/* 09EFC4 802DF7C4 8CD90008 */ lw $t9, 8($a2) -/* 09EFC8 802DF7C8 8CEE001C */ lw $t6, 0x1c($a3) -/* 09EFCC 802DF7CC 03236021 */ addu $t4, $t9, $v1 -/* 09EFD0 802DF7D0 858D0000 */ lh $t5, ($t4) -/* 09EFD4 802DF7D4 01C24821 */ addu $t1, $t6, $v0 -/* 09EFD8 802DF7D8 24420002 */ addiu $v0, $v0, 2 -/* 09EFDC 802DF7DC A52D0000 */ sh $t5, ($t1) -/* 09EFE0 802DF7E0 84C80012 */ lh $t0, 0x12($a2) -/* 09EFE4 802DF7E4 90F80004 */ lbu $t8, 4($a3) -/* 09EFE8 802DF7E8 00B82821 */ addu $a1, $a1, $t8 -/* 09EFEC 802DF7EC 05010003 */ bgez $t0, .L802001AC -/* 09EFF0 802DF7F0 00087843 */ sra $t7, $t0, 1 -/* 09EFF4 802DF7F4 25010001 */ addiu $at, $t0, 1 -/* 09EFF8 802DF7F8 00017843 */ sra $t7, $at, 1 -.L802001AC: -/* 09EFFC 802DF7FC 008F082A */ slt $at, $a0, $t7 -/* 09F000 802DF800 5420FFE9 */ bnezl $at, .L80200158 -/* 09F004 802DF804 8CD80004 */ lw $t8, 4($a2) -.L802001B8: -/* 09F008 802DF808 90E90004 */ lbu $t1, 4($a3) -.L802001BC: -/* 09F00C 802DF80C 8FAD0040 */ lw $t5, 0x40($sp) -/* 09F010 802DF810 90EB0003 */ lbu $t3, 3($a3) -/* 09F014 802DF814 8FAC0044 */ lw $t4, 0x44($sp) -/* 09F018 802DF818 01A9001A */ div $zero, $t5, $t1 -/* 09F01C 802DF81C 000B5080 */ sll $t2, $t3, 2 -/* 09F020 802DF820 8CF8000C */ lw $t8, 0xc($a3) -/* 09F024 802DF824 014B5023 */ subu $t2, $t2, $t3 -/* 09F028 802DF828 8CEF0014 */ lw $t7, 0x14($a3) -/* 09F02C 802DF82C 000A50C0 */ sll $t2, $t2, 3 -/* 09F030 802DF830 00001012 */ mflo $v0 -/* 09F034 802DF834 014B5021 */ addu $t2, $t2, $t3 -/* 09F038 802DF838 000C7080 */ sll $t6, $t4, 2 -/* 09F03C 802DF83C 000A5080 */ sll $t2, $t2, 2 -/* 09F040 802DF840 01CC7021 */ addu $t6, $t6, $t4 -/* 09F044 802DF844 03024021 */ addu $t0, $t8, $v0 -/* 09F048 802DF848 000E7080 */ sll $t6, $t6, 2 -/* 09F04C 802DF84C 00EAC821 */ addu $t9, $a3, $t2 -/* 09F050 802DF850 010F1823 */ subu $v1, $t0, $t7 -/* 09F054 802DF854 032E3021 */ addu $a2, $t9, $t6 -/* 09F058 802DF858 24C60030 */ addiu $a2, $a2, 0x30 -/* 09F05C 802DF85C 15200002 */ bnez $t1, .L80200218 -/* 09F060 802DF860 00000000 */ nop -/* 09F064 802DF864 0007000D */ break 7 -.L80200218: -/* 09F068 802DF868 2401FFFF */ li $at, -1 -/* 09F06C 802DF86C 15210004 */ bne $t1, $at, .L80200230 -/* 09F070 802DF870 3C018000 */ lui $at, 0x8000 -/* 09F074 802DF874 15A10002 */ bne $t5, $at, .L80200230 -/* 09F078 802DF878 00000000 */ nop -/* 09F07C 802DF87C 0006000D */ break 6 -.L80200230: -/* 09F080 802DF880 00437023 */ subu $t6, $v0, $v1 -/* 09F084 802DF884 0461000A */ bgez $v1, .L80200260 -/* 09F088 802DF888 00034840 */ sll $t1, $v1, 1 -/* 09F08C 802DF88C 00025840 */ sll $t3, $v0, 1 -/* 09F090 802DF890 A4CB0010 */ sh $t3, 0x10($a2) -/* 09F094 802DF894 A4C00012 */ sh $zero, 0x12($a2) -/* 09F098 802DF898 8CEA000C */ lw $t2, 0xc($a3) -/* 09F09C 802DF89C ACCA000C */ sw $t2, 0xc($a2) -/* 09F0A0 802DF8A0 8CEC000C */ lw $t4, 0xc($a3) -/* 09F0A4 802DF8A4 0182C821 */ addu $t9, $t4, $v0 -/* 09F0A8 802DF8A8 10000007 */ b .L80200278 -/* 09F0AC 802DF8AC ACF9000C */ sw $t9, 0xc($a3) -.L80200260: -/* 09F0B0 802DF8B0 000E6840 */ sll $t5, $t6, 1 -/* 09F0B4 802DF8B4 A4CD0010 */ sh $t5, 0x10($a2) -/* 09F0B8 802DF8B8 A4C90012 */ sh $t1, 0x12($a2) -/* 09F0BC 802DF8BC 8CF8000C */ lw $t8, 0xc($a3) -/* 09F0C0 802DF8C0 ACD8000C */ sw $t8, 0xc($a2) -/* 09F0C4 802DF8C4 ACE3000C */ sw $v1, 0xc($a3) -.L80200278: -/* 09F0C8 802DF8C8 A4C20000 */ sh $v0, ($a2) -/* 09F0CC 802DF8CC 8FA80040 */ lw $t0, 0x40($sp) -/* 09F0D0 802DF8D0 A4C80002 */ sh $t0, 2($a2) -/* 09F0D4 802DF8D4 8FBF0014 */ lw $ra, 0x14($sp) -/* 09F0D8 802DF8D8 27BD0040 */ addiu $sp, $sp, 0x40 -/* 09F0DC 802DF8DC 03E00008 */ jr $ra -/* 09F0E0 802DF8E0 00000000 */ nop diff --git a/asm/non_matchings/eu/audio/seq_channel_layer_process_script.s b/asm/non_matchings/eu/audio/seq_channel_layer_process_script.s index 5afbfdea..7f85ce25 100644 --- a/asm/non_matchings/eu/audio/seq_channel_layer_process_script.s +++ b/asm/non_matchings/eu/audio/seq_channel_layer_process_script.s @@ -516,7 +516,7 @@ glabel L_EU_802E7B6C /* 0A75E4 802E7DE4 91E40006 */ lbu $a0, 6($t7) /* 0A75E8 802E7DE8 02584821 */ addu $t1, $s2, $t8 /* 0A75EC 802E7DEC 01289021 */ addu $s2, $t1, $t0 -/* 0A75F0 802E7DF0 0C0B93EE */ jal func_eu_802e4fb8 +/* 0A75F0 802E7DF0 0C0B93EE */ jal get_drum /* 0A75F4 802E7DF4 324500FF */ andi $a1, $s2, 0xff /* 0A75F8 802E7DF8 14400005 */ bnez $v0, .L80201E20 /* 0A75FC 802E7DFC 24430004 */ addiu $v1, $v0, 4 @@ -575,7 +575,7 @@ glabel L_EU_802E7B6C .L80201EC8: /* 0A76B8 802E7EB8 1080000A */ beqz $a0, .L80201EF4 /* 0A76BC 802E7EBC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0A76C0 802E7EC0 0C0B9397 */ jal func_eu_802e4e5c +/* 0A76C0 802E7EC0 0C0B9397 */ jal instrument_get_audio_bank_sound /* 0A76C4 802E7EC4 00C02825 */ move $a1, $a2 /* 0A76C8 802E7EC8 8E2B0048 */ lw $t3, 0x48($s1) /* 0A76CC 802E7ECC 004B6826 */ xor $t5, $v0, $t3 @@ -674,7 +674,7 @@ glabel L_EU_802E7F50 .L80202030: /* 0A7820 802E8020 10800011 */ beqz $a0, .L80202078 /* 0A7824 802E8024 3C038030 */ lui $v1, %hi(gNoteFrequencies) -/* 0A7828 802E8028 0C0B9397 */ jal func_eu_802e4e5c +/* 0A7828 802E8028 0C0B9397 */ jal instrument_get_audio_bank_sound /* 0A782C 802E802C 00000000 */ nop /* 0A7830 802E8030 8E2C0048 */ lw $t4, 0x48($s1) /* 0A7834 802E8034 3C038030 */ lui $v1, %hi(gNoteFrequencies) # $v1, 0x8030 diff --git a/asm/non_matchings/eu/audio/sequence_channel_enable.s b/asm/non_matchings/eu/audio/sequence_channel_enable.s deleted file mode 100644 index 898e3b9d..00000000 --- a/asm/non_matchings/eu/audio/sequence_channel_enable.s +++ /dev/null @@ -1,56 +0,0 @@ -glabel sequence_channel_enable -/* 0A6BE8 802E73E8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0A6BEC 802E73EC 30AE00FF */ andi $t6, $a1, 0xff -/* 0A6BF0 802E73F0 000E7880 */ sll $t7, $t6, 2 -/* 0A6BF4 802E73F4 AFBF0024 */ sw $ra, 0x24($sp) -/* 0A6BF8 802E73F8 AFB30020 */ sw $s3, 0x20($sp) -/* 0A6BFC 802E73FC AFB2001C */ sw $s2, 0x1c($sp) -/* 0A6C00 802E7400 AFB10018 */ sw $s1, 0x18($sp) -/* 0A6C04 802E7404 AFB00014 */ sw $s0, 0x14($sp) -/* 0A6C08 802E7408 AFA5002C */ sw $a1, 0x2c($sp) -/* 0A6C0C 802E740C 008FC021 */ addu $t8, $a0, $t7 -/* 0A6C10 802E7410 8F120030 */ lw $s2, 0x30($t8) -/* 0A6C14 802E7414 3C198023 */ lui $t9, %hi(gSequenceChannelNone) # $t9, 0x8023 -/* 0A6C18 802E7418 27398748 */ addiu $t9, %lo(gSequenceChannelNone) # addiu $t9, $t9, -0x78b8 -/* 0A6C1C 802E741C 1659000A */ bne $s2, $t9, .L80201458 -/* 0A6C20 802E7420 00008025 */ move $s0, $zero -/* 0A6C24 802E7424 3C098022 */ lui $t1, %hi(gSequencePlayers) # $t1, 0x8022 -/* 0A6C28 802E7428 25293D68 */ addiu $t1, %lo(gSequencePlayers) # addiu $t1, $t1, 0x3d68 -/* 0A6C2C 802E742C 10890019 */ beq $a0, $t1, .L802014A4 -/* 0A6C30 802E7430 3C0A8022 */ lui $t2, %hi(gSequencePlayers + 0x148) # $t2, 0x8022 -/* 0A6C34 802E7434 254A3EB0 */ addiu $t2, %lo(gSequencePlayers + 0x148) # addiu $t2, $t2, 0x3eb0 -/* 0A6C38 802E7438 548A0017 */ bnel $a0, $t2, .L802014A8 -/* 0A6C3C 802E743C 8FBF0024 */ lw $ra, 0x24($sp) -/* 0A6C40 802E7440 10000015 */ b .L802014A8 -/* 0A6C44 802E7444 8FBF0024 */ lw $ra, 0x24($sp) -.L80201458: -/* 0A6C48 802E7448 924C0000 */ lbu $t4, ($s2) -/* 0A6C4C 802E744C A2400078 */ sb $zero, 0x78($s2) -/* 0A6C50 802E7450 AE460060 */ sw $a2, 0x60($s2) -/* 0A6C54 802E7454 358E0080 */ ori $t6, $t4, 0x80 -/* 0A6C58 802E7458 A24E0000 */ sb $t6, ($s2) -/* 0A6C5C 802E745C 31CF00BF */ andi $t7, $t6, 0xbf -/* 0A6C60 802E7460 A24F0000 */ sb $t7, ($s2) -/* 0A6C64 802E7464 A640001A */ sh $zero, 0x1a($s2) -/* 0A6C68 802E7468 02408825 */ move $s1, $s2 -/* 0A6C6C 802E746C 24130004 */ li $s3, 4 -.L80201480: -/* 0A6C70 802E7470 8E380048 */ lw $t8, 0x48($s1) -/* 0A6C74 802E7474 02402025 */ move $a0, $s2 -/* 0A6C78 802E7478 53000004 */ beql $t8, $zero, .L8020149C -/* 0A6C7C 802E747C 26100001 */ addiu $s0, $s0, 1 -/* 0A6C80 802E7480 0C0B9C2D */ jal seq_channel_layer_free -/* 0A6C84 802E7484 02002825 */ move $a1, $s0 -/* 0A6C88 802E7488 26100001 */ addiu $s0, $s0, 1 -.L8020149C: -/* 0A6C8C 802E748C 1613FFF8 */ bne $s0, $s3, .L80201480 -/* 0A6C90 802E7490 26310004 */ addiu $s1, $s1, 4 -.L802014A4: -/* 0A6C94 802E7494 8FBF0024 */ lw $ra, 0x24($sp) -.L802014A8: -/* 0A6C98 802E7498 8FB00014 */ lw $s0, 0x14($sp) -/* 0A6C9C 802E749C 8FB10018 */ lw $s1, 0x18($sp) -/* 0A6CA0 802E74A0 8FB2001C */ lw $s2, 0x1c($sp) -/* 0A6CA4 802E74A4 8FB30020 */ lw $s3, 0x20($sp) -/* 0A6CA8 802E74A8 03E00008 */ jr $ra -/* 0A6CAC 802E74AC 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/eu/audio/sequence_player_process_sequence.s b/asm/non_matchings/eu/audio/sequence_player_process_sequence.s deleted file mode 100644 index 1d8440b1..00000000 --- a/asm/non_matchings/eu/audio/sequence_player_process_sequence.s +++ /dev/null @@ -1,698 +0,0 @@ -.late_rodata -.late_rodata_alignment 4 -glabel jtbl_EU_80306AD4 - .word L_EU_802E9530 - .word L_EU_802E9520, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9510 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9500 - .word L_EU_802E94D4, L_EU_802E94D4 - .word L_EU_802E94C4, L_EU_802E94B4 - .word L_EU_802E9488, L_EU_802E946C - .word L_EU_802E9450, L_EU_802E9024 - .word L_EU_802E9424, L_EU_802E9310 - .word L_EU_802E938C, L_EU_802E928C - .word L_EU_802E928C, L_EU_802E926C - .word L_EU_802E9268, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9258 - .word L_EU_802E9230, L_EU_802E91E8 - .word L_EU_802E91E8, L_EU_802E91E8 - .word L_EU_802E9190, L_EU_802E9024 - .word L_EU_802E9148, L_EU_802E9110 - .word L_EU_802E9190, L_EU_802E9190 - .word L_EU_802E9190, L_EU_802E90CC - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024 - -glabel jtbl_EU_80306BB4 - .word L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E95C0 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E95CC - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E95D4 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E95DC - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - .word L_EU_802E9024, L_EU_802E9024 - -.text -glabel sequence_player_process_sequence -/* 0A85E4 802E8DE4 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 0A85E8 802E8DE8 AFBF002C */ sw $ra, 0x2c($sp) -/* 0A85EC 802E8DEC AFB30028 */ sw $s3, 0x28($sp) -/* 0A85F0 802E8DF0 AFB20024 */ sw $s2, 0x24($sp) -/* 0A85F4 802E8DF4 AFB10020 */ sw $s1, 0x20($sp) -/* 0A85F8 802E8DF8 AFB0001C */ sw $s0, 0x1c($sp) -/* 0A85FC 802E8DFC 8C820000 */ lw $v0, ($a0) -/* 0A8600 802E8E00 00808825 */ move $s1, $a0 -/* 0A8604 802E8E04 24010001 */ li $at, 1 -/* 0A8608 802E8E08 000277C2 */ srl $t6, $v0, 0x1f -/* 0A860C 802E8E0C 11C00212 */ beqz $t6, .L080201458 -/* 0A8610 802E8E10 00027900 */ sll $t7, $v0, 4 -/* 0A8614 802E8E14 000FC7C2 */ srl $t8, $t7, 0x1f -/* 0A8618 802E8E18 17010039 */ bne $t8, $at, .L080200D00 -/* 0A861C 802E8E1C 000268C0 */ sll $t5, $v0, 3 -/* 0A8620 802E8E20 24900108 */ addiu $s0, $a0, 0x108 -/* 0A8624 802E8E24 02002025 */ move $a0, $s0 -/* 0A8628 802E8E28 00002825 */ move $a1, $zero -/* 0A862C 802E8E2C 0C0BBDE0 */ jal osRecvMesg -/* 0A8630 802E8E30 00003025 */ move $a2, $zero -/* 0A8634 802E8E34 2401FFFF */ li $at, -1 -/* 0A8638 802E8E38 50410208 */ beql $v0, $at, .L08020145C -/* 0A863C 802E8E3C 8FBF002C */ lw $ra, 0x2c($sp) -/* 0A8640 802E8E40 8E390144 */ lw $t9, 0x144($s1) -/* 0A8644 802E8E44 3C128023 */ lui $s2, %hi(gCtlEntries) # $s2, 0x8023 -/* 0A8648 802E8E48 265297D8 */ addiu $s2, %lo(gCtlEntries) # addiu $s2, $s2, -0x6828 -/* 0A864C 802E8E4C 57200024 */ bnezl $t9, .L080200CE0 -/* 0A8650 802E8E50 262C0124 */ addiu $t4, $s1, 0x124 -/* 0A8654 802E8E54 92220006 */ lbu $v0, 6($s1) -/* 0A8658 802E8E58 2413000C */ li $s3, 12 -/* 0A865C 802E8E5C 92280000 */ lbu $t0, ($s1) -/* 0A8660 802E8E60 00530019 */ multu $v0, $s3 -/* 0A8664 802E8E64 3C0C8023 */ lui $t4, %hi(gAlTbl) # $t4, 0x8023 -/* 0A8668 802E8E68 3109FFF7 */ andi $t1, $t0, 0xfff7 -/* 0A866C 802E8E6C A2290000 */ sb $t1, ($s1) -/* 0A8670 802E8E70 8E4A0000 */ lw $t2, ($s2) -/* 0A8674 802E8E74 8D8C97CC */ lw $t4, %lo(gAlTbl)($t4) -/* 0A8678 802E8E78 000268C0 */ sll $t5, $v0, 3 -/* 0A867C 802E8E7C 018D7021 */ addu $t6, $t4, $t5 -/* 0A8680 802E8E80 8DC50004 */ lw $a1, 4($t6) -/* 0A8684 802E8E84 00005812 */ mflo $t3 -/* 0A8688 802E8E88 014B8021 */ addu $s0, $t2, $t3 -/* 0A868C 802E8E8C 8E040004 */ lw $a0, 4($s0) -/* 0A8690 802E8E90 92060001 */ lbu $a2, 1($s0) -/* 0A8694 802E8E94 92070002 */ lbu $a3, 2($s0) -/* 0A8698 802E8E98 0C0B8F0E */ jal patch_audio_bank -/* 0A869C 802E8E9C 2484FFFC */ addiu $a0, $a0, -4 -/* 0A86A0 802E8EA0 92380006 */ lbu $t8, 6($s1) -/* 0A86A4 802E8EA4 8E4F0000 */ lw $t7, ($s2) -/* 0A86A8 802E8EA8 3C038022 */ lui $v1, %hi(gBankLoadStatus) # $v1, 0x8022 -/* 0A86AC 802E8EAC 03130019 */ multu $t8, $s3 -/* 0A86B0 802E8EB0 24632C18 */ addiu $v1, %lo(gBankLoadStatus) # addiu $v1, $v1, 0x2c18 -/* 0A86B4 802E8EB4 24040002 */ li $a0, 2 -/* 0A86B8 802E8EB8 0000C812 */ mflo $t9 -/* 0A86BC 802E8EBC 01F98021 */ addu $s0, $t7, $t9 -/* 0A86C0 802E8EC0 8E080004 */ lw $t0, 4($s0) -/* 0A86C4 802E8EC4 8D09FFFC */ lw $t1, -4($t0) -/* 0A86C8 802E8EC8 AE090008 */ sw $t1, 8($s0) -/* 0A86CC 802E8ECC 922A0006 */ lbu $t2, 6($s1) -/* 0A86D0 802E8ED0 006A5821 */ addu $t3, $v1, $t2 -/* 0A86D4 802E8ED4 100001E0 */ b .L080201458 -/* 0A86D8 802E8ED8 A1640000 */ sb $a0, ($t3) -/* 0A86DC 802E8EDC 262C0124 */ addiu $t4, $s1, 0x124 -.L080200CE0: -/* 0A86E0 802E8EE0 AFAC0010 */ sw $t4, 0x10($sp) -/* 0A86E4 802E8EE4 26240140 */ addiu $a0, $s1, 0x140 -/* 0A86E8 802E8EE8 2625013C */ addiu $a1, $s1, 0x13c -/* 0A86EC 802E8EEC 26260144 */ addiu $a2, $s1, 0x144 -/* 0A86F0 802E8EF0 0C0B8CEA */ jal audio_dma_partial_copy_async -/* 0A86F4 802E8EF4 02003825 */ move $a3, $s0 -/* 0A86F8 802E8EF8 100001D8 */ b .L08020145C -/* 0A86FC 802E8EFC 8FBF002C */ lw $ra, 0x2c($sp) -.L080200D00: -/* 0A8700 802E8F00 000D77C2 */ srl $t6, $t5, 0x1f -/* 0A8704 802E8F04 24010001 */ li $at, 1 -/* 0A8708 802E8F08 15C1000E */ bne $t6, $at, .L080200D44 -/* 0A870C 802E8F0C 262400D4 */ addiu $a0, $s1, 0xd4 -/* 0A8710 802E8F10 00002825 */ move $a1, $zero -/* 0A8714 802E8F14 0C0BBDE0 */ jal osRecvMesg -/* 0A8718 802E8F18 00003025 */ move $a2, $zero -/* 0A871C 802E8F1C 2401FFFF */ li $at, -1 -/* 0A8720 802E8F20 104101CD */ beq $v0, $at, .L080201458 -/* 0A8724 802E8F24 24040002 */ li $a0, 2 -/* 0A8728 802E8F28 92380000 */ lbu $t8, ($s1) -/* 0A872C 802E8F2C 92390004 */ lbu $t9, 4($s1) -/* 0A8730 802E8F30 3C018022 */ lui $at, %hi(gSeqLoadStatus) -/* 0A8734 802E8F34 330FFFEF */ andi $t7, $t8, 0xffef -/* 0A8738 802E8F38 A22F0000 */ sb $t7, ($s1) -/* 0A873C 802E8F3C 00390821 */ addu $at, $at, $t9 -/* 0A8740 802E8F40 A0242C58 */ sb $a0, %lo(gSeqLoadStatus)($at) -.L080200D44: -/* 0A8744 802E8F44 92280004 */ lbu $t0, 4($s1) -/* 0A8748 802E8F48 3C098022 */ lui $t1, %hi(gSeqLoadStatus) # $t1, 0x8022 -/* 0A874C 802E8F4C 25292C58 */ addiu $t1, %lo(gSeqLoadStatus) # addiu $t1, $t1, 0x2c58 -/* 0A8750 802E8F50 01091021 */ addu $v0, $t0, $t1 -/* 0A8754 802E8F54 904A0000 */ lbu $t2, ($v0) -/* 0A8758 802E8F58 24040002 */ li $a0, 2 -/* 0A875C 802E8F5C 294B0002 */ slti $t3, $t2, 2 -/* 0A8760 802E8F60 15600009 */ bnez $t3, .L080200D88 -/* 0A8764 802E8F64 00000000 */ nop -/* 0A8768 802E8F68 922C0005 */ lbu $t4, 5($s1) -/* 0A876C 802E8F6C 3C038022 */ lui $v1, %hi(gBankLoadStatus) # $v1, 0x8022 -/* 0A8770 802E8F70 24632C18 */ addiu $v1, %lo(gBankLoadStatus) # addiu $v1, $v1, 0x2c18 -/* 0A8774 802E8F74 006C6821 */ addu $t5, $v1, $t4 -/* 0A8778 802E8F78 91AE0000 */ lbu $t6, ($t5) -/* 0A877C 802E8F7C 29D80002 */ slti $t8, $t6, 2 -/* 0A8780 802E8F80 53000006 */ beql $t8, $zero, .L080200D9C -/* 0A8784 802E8F84 A0440000 */ sb $a0, ($v0) -.L080200D88: -/* 0A8788 802E8F88 0C0B9D2C */ jal sequence_player_disable -/* 0A878C 802E8F8C 02202025 */ move $a0, $s1 -/* 0A8790 802E8F90 100001B2 */ b .L08020145C -/* 0A8794 802E8F94 8FBF002C */ lw $ra, 0x2c($sp) -/* 0A8798 802E8F98 A0440000 */ sb $a0, ($v0) -.L080200D9C: -/* 0A879C 802E8F9C 922F0005 */ lbu $t7, 5($s1) -/* 0A87A0 802E8FA0 006FC821 */ addu $t9, $v1, $t7 -/* 0A87A4 802E8FA4 A3240000 */ sb $a0, ($t9) -/* 0A87A8 802E8FA8 8E280000 */ lw $t0, ($s1) -/* 0A87AC 802E8FAC 00085080 */ sll $t2, $t0, 2 -/* 0A87B0 802E8FB0 05430006 */ bgezl $t2, .L080200DCC -/* 0A87B4 802E8FB4 962D000A */ lhu $t5, 0xa($s1) -/* 0A87B8 802E8FB8 922B0003 */ lbu $t3, 3($s1) -/* 0A87BC 802E8FBC 316C0080 */ andi $t4, $t3, 0x80 -/* 0A87C0 802E8FC0 558001A6 */ bnezl $t4, .L08020145C -/* 0A87C4 802E8FC4 8FBF002C */ lw $ra, 0x2c($sp) -/* 0A87C8 802E8FC8 962D000A */ lhu $t5, 0xa($s1) -.L080200DCC: -/* 0A87CC 802E8FCC 962E0008 */ lhu $t6, 8($s1) -/* 0A87D0 802E8FD0 3C038023 */ lui $v1, %hi(gTempoInternalToExternal) # $v1, 0x8023 -/* 0A87D4 802E8FD4 01AEC021 */ addu $t8, $t5, $t6 -/* 0A87D8 802E8FD8 A638000A */ sh $t8, 0xa($s1) -/* 0A87DC 802E8FDC 8463980C */ lh $v1, %lo(gTempoInternalToExternal)($v1) -/* 0A87E0 802E8FE0 3302FFFF */ andi $v0, $t8, 0xffff -/* 0A87E4 802E8FE4 0043082A */ slt $at, $v0, $v1 -/* 0A87E8 802E8FE8 5420019C */ bnezl $at, .L08020145C -/* 0A87EC 802E8FEC 8FBF002C */ lw $ra, 0x2c($sp) -/* 0A87F0 802E8FF0 9624000E */ lhu $a0, 0xe($s1) -/* 0A87F4 802E8FF4 0043C823 */ subu $t9, $v0, $v1 -/* 0A87F8 802E8FF8 A639000A */ sh $t9, 0xa($s1) -/* 0A87FC 802E8FFC 28810002 */ slti $at, $a0, 2 -/* 0A8800 802E9000 14200003 */ bnez $at, .L080200E10 -/* 0A8804 802E9004 2488FFFF */ addiu $t0, $a0, -1 -/* 0A8808 802E9008 10000180 */ b .L08020140C -/* 0A880C 802E900C A628000E */ sh $t0, 0xe($s1) -.L080200E10: -/* 0A8810 802E9010 922A0000 */ lbu $t2, ($s1) -/* 0A8814 802E9014 26300070 */ addiu $s0, $s1, 0x70 -/* 0A8818 802E9018 354B0004 */ ori $t3, $t2, 4 -/* 0A881C 802E901C A22B0000 */ sb $t3, ($s1) -/* 0A8820 802E9020 8FB30058 */ lw $s3, 0x58($sp) -glabel L_EU_802E9024 -.L_EU_802E9024: -/* 0A8824 802E9024 0C0B9DA0 */ jal m64_read_u8 -/* 0A8828 802E9028 02002025 */ move $a0, $s0 -/* 0A882C 802E902C 240100FF */ li $at, 255 -/* 0A8830 802E9030 1441000E */ bne $v0, $at, .L080200E6C -/* 0A8834 802E9034 305200FF */ andi $s2, $v0, 0xff -/* 0A8838 802E9038 92040018 */ lbu $a0, 0x18($s0) -/* 0A883C 802E903C 14800005 */ bnez $a0, .L080200E54 -/* 0A8840 802E9040 2483FFFF */ addiu $v1, $a0, -1 -/* 0A8844 802E9044 0C0B9D2C */ jal sequence_player_disable -/* 0A8848 802E9048 02202025 */ move $a0, $s1 -/* 0A884C 802E904C 1000016F */ b .L08020140C -/* 0A8850 802E9050 00000000 */ nop -.L080200E54: -/* 0A8854 802E9054 306C00FF */ andi $t4, $v1, 0xff -/* 0A8858 802E9058 000C6880 */ sll $t5, $t4, 2 -/* 0A885C 802E905C 020D7021 */ addu $t6, $s0, $t5 -/* 0A8860 802E9060 A20C0018 */ sb $t4, 0x18($s0) -/* 0A8864 802E9064 8DD80004 */ lw $t8, 4($t6) -/* 0A8868 802E9068 AE180000 */ sw $t8, ($s0) -.L080200E6C: -/* 0A886C 802E906C 304300FF */ andi $v1, $v0, 0xff -/* 0A8870 802E9070 240100FD */ li $at, 253 -/* 0A8874 802E9074 14610005 */ bne $v1, $at, .L080200E8C -/* 0A8878 802E9078 306200F0 */ andi $v0, $v1, 0xf0 -/* 0A887C 802E907C 0C0B9DB1 */ jal m64_read_compressed_u16 -/* 0A8880 802E9080 02002025 */ move $a0, $s0 -/* 0A8884 802E9084 10000161 */ b .L08020140C -/* 0A8888 802E9088 A622000E */ sh $v0, 0xe($s1) -.L080200E8C: -/* 0A888C 802E908C 240100FE */ li $at, 254 -/* 0A8890 802E9090 14610004 */ bne $v1, $at, .L080200EA4 -/* 0A8894 802E9094 2479FF38 */ addiu $t9, $v1, -0xc8 -/* 0A8898 802E9098 240F0001 */ li $t7, 1 -/* 0A889C 802E909C 1000015B */ b .L08020140C -/* 0A88A0 802E90A0 A62F000E */ sh $t7, 0xe($s1) -.L080200EA4: -/* 0A88A4 802E90A4 286100C0 */ slti $at, $v1, 0xc0 -/* 0A88A8 802E90A8 14200125 */ bnez $at, .L080201340 -/* 0A88AC 802E90AC 2F210038 */ sltiu $at, $t9, 0x38 -/* 0A88B0 802E90B0 1020FFDC */ beqz $at, .L_EU_802E9024 -/* 0A88B4 802E90B4 0019C880 */ sll $t9, $t9, 2 -/* 0A88B8 802E90B8 3C018030 */ lui $at, %hi(jtbl_EU_80306AD4) -/* 0A88BC 802E90BC 00390821 */ addu $at, $at, $t9 -/* 0A88C0 802E90C0 8C396AD4 */ lw $t9, %lo(jtbl_EU_80306AD4)($at) -/* 0A88C4 802E90C4 03200008 */ jr $t9 -/* 0A88C8 802E90C8 00000000 */ nop -glabel L_EU_802E90CC -/* 0A88CC 802E90CC 0C0B9DA5 */ jal m64_read_s16 -/* 0A88D0 802E90D0 02002025 */ move $a0, $s0 -/* 0A88D4 802E90D4 92090018 */ lbu $t1, 0x18($s0) -/* 0A88D8 802E90D8 8E080000 */ lw $t0, ($s0) -/* 0A88DC 802E90DC 3058FFFF */ andi $t8, $v0, 0xffff -/* 0A88E0 802E90E0 00095080 */ sll $t2, $t1, 2 -/* 0A88E4 802E90E4 020A5821 */ addu $t3, $s0, $t2 -/* 0A88E8 802E90E8 AD680004 */ sw $t0, 4($t3) -/* 0A88EC 802E90EC 920C0018 */ lbu $t4, 0x18($s0) -/* 0A88F0 802E90F0 258D0001 */ addiu $t5, $t4, 1 -/* 0A88F4 802E90F4 A20D0018 */ sb $t5, 0x18($s0) -/* 0A88F8 802E90F8 8E2E0014 */ lw $t6, 0x14($s1) -/* 0A88FC 802E90FC 01D87821 */ addu $t7, $t6, $t8 -/* 0A8900 802E9100 1000FFC8 */ b .L_EU_802E9024 -/* 0A8904 802E9104 AE0F0000 */ sw $t7, ($s0) -/* 0A8908 802E9108 1000FFC6 */ b .L_EU_802E9024 -/* 0A890C 802E910C 00000000 */ nop -glabel L_EU_802E9110 -/* 0A8910 802E9110 0C0B9DA0 */ jal m64_read_u8 -/* 0A8914 802E9114 02002025 */ move $a0, $s0 -/* 0A8918 802E9118 92190018 */ lbu $t9, 0x18($s0) -/* 0A891C 802E911C 02194821 */ addu $t1, $s0, $t9 -/* 0A8920 802E9120 A1220014 */ sb $v0, 0x14($t1) -/* 0A8924 802E9124 92080018 */ lbu $t0, 0x18($s0) -/* 0A8928 802E9128 8E0A0000 */ lw $t2, ($s0) -/* 0A892C 802E912C 00085880 */ sll $t3, $t0, 2 -/* 0A8930 802E9130 020B6021 */ addu $t4, $s0, $t3 -/* 0A8934 802E9134 AD8A0004 */ sw $t2, 4($t4) -/* 0A8938 802E9138 920D0018 */ lbu $t5, 0x18($s0) -/* 0A893C 802E913C 25AE0001 */ addiu $t6, $t5, 1 -/* 0A8940 802E9140 1000FFB8 */ b .L_EU_802E9024 -/* 0A8944 802E9144 A20E0018 */ sb $t6, 0x18($s0) -glabel L_EU_802E9148 -/* 0A8948 802E9148 92180018 */ lbu $t8, 0x18($s0) -/* 0A894C 802E914C 02181021 */ addu $v0, $s0, $t8 -/* 0A8950 802E9150 904F0013 */ lbu $t7, 0x13($v0) -/* 0A8954 802E9154 25F9FFFF */ addiu $t9, $t7, -1 -/* 0A8958 802E9158 A0590013 */ sb $t9, 0x13($v0) -/* 0A895C 802E915C 92040018 */ lbu $a0, 0x18($s0) -/* 0A8960 802E9160 02044821 */ addu $t1, $s0, $a0 -/* 0A8964 802E9164 91280013 */ lbu $t0, 0x13($t1) -/* 0A8968 802E9168 00801825 */ move $v1, $a0 -/* 0A896C 802E916C 00035880 */ sll $t3, $v1, 2 -/* 0A8970 802E9170 11000005 */ beqz $t0, .L080200F88 -/* 0A8974 802E9174 248DFFFF */ addiu $t5, $a0, -1 -/* 0A8978 802E9178 020B5021 */ addu $t2, $s0, $t3 -/* 0A897C 802E917C 8D4C0000 */ lw $t4, ($t2) -/* 0A8980 802E9180 1000FFA8 */ b .L_EU_802E9024 -/* 0A8984 802E9184 AE0C0000 */ sw $t4, ($s0) -.L080200F88: -/* 0A8988 802E9188 1000FFA6 */ b .L_EU_802E9024 -/* 0A898C 802E918C A20D0018 */ sb $t5, 0x18($s0) -glabel L_EU_802E9190 -/* 0A8990 802E9190 0C0B9DA5 */ jal m64_read_s16 -/* 0A8994 802E9194 02002025 */ move $a0, $s0 -/* 0A8998 802E9198 240100FA */ li $at, 250 -/* 0A899C 802E919C 16410003 */ bne $s2, $at, .L080200FAC -/* 0A89A0 802E91A0 02401825 */ move $v1, $s2 -/* 0A89A4 802E91A4 1660FF9F */ bnez $s3, .L_EU_802E9024 -/* 0A89A8 802E91A8 00000000 */ nop -.L080200FAC: -/* 0A89AC 802E91AC 240100F9 */ li $at, 249 -/* 0A89B0 802E91B0 54610004 */ bnel $v1, $at, .L080200FC4 -/* 0A89B4 802E91B4 240100F5 */ li $at, 245 -/* 0A89B8 802E91B8 0661FF9A */ bgez $s3, .L_EU_802E9024 -/* 0A89BC 802E91BC 00000000 */ nop -/* 0A89C0 802E91C0 240100F5 */ li $at, 245 -.L080200FC4: -/* 0A89C4 802E91C4 54610004 */ bnel $v1, $at, .L080200FD8 -/* 0A89C8 802E91C8 8E2E0014 */ lw $t6, 0x14($s1) -/* 0A89CC 802E91CC 0660FF95 */ bltz $s3, .L_EU_802E9024 -/* 0A89D0 802E91D0 00000000 */ nop -/* 0A89D4 802E91D4 8E2E0014 */ lw $t6, 0x14($s1) -.L080200FD8: -/* 0A89D8 802E91D8 3058FFFF */ andi $t8, $v0, 0xffff -/* 0A89DC 802E91DC 01D87821 */ addu $t7, $t6, $t8 -/* 0A89E0 802E91E0 1000FF90 */ b .L_EU_802E9024 -/* 0A89E4 802E91E4 AE0F0000 */ sw $t7, ($s0) -glabel L_EU_802E91E8 -/* 0A89E8 802E91E8 0C0B9DA0 */ jal m64_read_u8 -/* 0A89EC 802E91EC 02002025 */ move $a0, $s0 -/* 0A89F0 802E91F0 240100F3 */ li $at, 243 -/* 0A89F4 802E91F4 16410003 */ bne $s2, $at, .L080201004 -/* 0A89F8 802E91F8 02401825 */ move $v1, $s2 -/* 0A89FC 802E91FC 1660FF89 */ bnez $s3, .L_EU_802E9024 -/* 0A8A00 802E9200 00000000 */ nop -.L080201004: -/* 0A8A04 802E9204 240100F2 */ li $at, 242 -/* 0A8A08 802E9208 54610004 */ bnel $v1, $at, .L08020101C -/* 0A8A0C 802E920C 8E190000 */ lw $t9, ($s0) -/* 0A8A10 802E9210 0661FF84 */ bgez $s3, .L_EU_802E9024 -/* 0A8A14 802E9214 00000000 */ nop -/* 0A8A18 802E9218 8E190000 */ lw $t9, ($s0) -.L08020101C: -/* 0A8A1C 802E921C 00024E00 */ sll $t1, $v0, 0x18 -/* 0A8A20 802E9220 00094603 */ sra $t0, $t1, 0x18 -/* 0A8A24 802E9224 03285821 */ addu $t3, $t9, $t0 -/* 0A8A28 802E9228 1000FF7E */ b .L_EU_802E9024 -/* 0A8A2C 802E922C AE0B0000 */ sw $t3, ($s0) -glabel L_EU_802E9230 -/* 0A8A30 802E9230 26240094 */ addiu $a0, $s1, 0x94 -/* 0A8A34 802E9234 0C0B9671 */ jal note_pool_clear -/* 0A8A38 802E9238 AFA40038 */ sw $a0, 0x38($sp) -/* 0A8A3C 802E923C 0C0B9DA0 */ jal m64_read_u8 -/* 0A8A40 802E9240 02002025 */ move $a0, $s0 -/* 0A8A44 802E9244 8FA40038 */ lw $a0, 0x38($sp) -/* 0A8A48 802E9248 0C0B96C9 */ jal note_pool_fill -/* 0A8A4C 802E924C 00402825 */ move $a1, $v0 -/* 0A8A50 802E9250 1000FF74 */ b .L_EU_802E9024 -/* 0A8A54 802E9254 00000000 */ nop -glabel L_EU_802E9258 -/* 0A8A58 802E9258 0C0B9671 */ jal note_pool_clear -/* 0A8A5C 802E925C 26240094 */ addiu $a0, $s1, 0x94 -/* 0A8A60 802E9260 1000FF70 */ b .L_EU_802E9024 -/* 0A8A64 802E9264 00000000 */ nop -glabel L_EU_802E9268 -/* 0A8A68 802E9268 A620000C */ sh $zero, 0xc($s1) -glabel L_EU_802E926C -/* 0A8A6C 802E926C 0C0B9DA0 */ jal m64_read_u8 -/* 0A8A70 802E9270 02002025 */ move $a0, $s0 -/* 0A8A74 802E9274 862A000C */ lh $t2, 0xc($s1) -/* 0A8A78 802E9278 00026600 */ sll $t4, $v0, 0x18 -/* 0A8A7C 802E927C 000C6E03 */ sra $t5, $t4, 0x18 -/* 0A8A80 802E9280 014D7021 */ addu $t6, $t2, $t5 -/* 0A8A84 802E9284 1000FF67 */ b .L_EU_802E9024 -/* 0A8A88 802E9288 A62E000C */ sh $t6, 0xc($s1) -glabel L_EU_802E928C -/* 0A8A8C 802E928C 0C0B9DA0 */ jal m64_read_u8 -/* 0A8A90 802E9290 02002025 */ move $a0, $s0 -/* 0A8A94 802E9294 240100DD */ li $at, 221 -/* 0A8A98 802E9298 16410007 */ bne $s2, $at, .L0802010B8 -/* 0A8A9C 802E929C 3C038023 */ lui $v1, %hi(gTempoInternalToExternal) # $v1, 0x8023 -/* 0A8AA0 802E92A0 305800FF */ andi $t8, $v0, 0xff -/* 0A8AA4 802E92A4 00187880 */ sll $t7, $t8, 2 -/* 0A8AA8 802E92A8 01F87823 */ subu $t7, $t7, $t8 -/* 0A8AAC 802E92AC 000F7900 */ sll $t7, $t7, 4 -/* 0A8AB0 802E92B0 10000009 */ b .L0802010D8 -/* 0A8AB4 802E92B4 A62F0008 */ sh $t7, 8($s1) -.L0802010B8: -/* 0A8AB8 802E92B8 0002CE00 */ sll $t9, $v0, 0x18 -/* 0A8ABC 802E92BC 00194603 */ sra $t0, $t9, 0x18 -/* 0A8AC0 802E92C0 96290008 */ lhu $t1, 8($s1) -/* 0A8AC4 802E92C4 00085880 */ sll $t3, $t0, 2 -/* 0A8AC8 802E92C8 01685823 */ subu $t3, $t3, $t0 -/* 0A8ACC 802E92CC 000B5900 */ sll $t3, $t3, 4 -/* 0A8AD0 802E92D0 012B6021 */ addu $t4, $t1, $t3 -/* 0A8AD4 802E92D4 A62C0008 */ sh $t4, 8($s1) -.L0802010D8: -/* 0A8AD8 802E92D8 8463980C */ lh $v1, %lo(gTempoInternalToExternal)($v1) -/* 0A8ADC 802E92DC 96220008 */ lhu $v0, 8($s1) -/* 0A8AE0 802E92E0 240E0001 */ li $t6, 1 -/* 0A8AE4 802E92E4 0062082A */ slt $at, $v1, $v0 -/* 0A8AE8 802E92E8 50200004 */ beql $at, $zero, .L0802010FC -/* 0A8AEC 802E92EC 00025400 */ sll $t2, $v0, 0x10 -/* 0A8AF0 802E92F0 A6230008 */ sh $v1, 8($s1) -/* 0A8AF4 802E92F4 3062FFFF */ andi $v0, $v1, 0xffff -/* 0A8AF8 802E92F8 00025400 */ sll $t2, $v0, 0x10 -.L0802010FC: -/* 0A8AFC 802E92FC 000A6C03 */ sra $t5, $t2, 0x10 -/* 0A8B00 802E9300 1DA0FF48 */ bgtz $t5, .L_EU_802E9024 -/* 0A8B04 802E9304 00000000 */ nop -/* 0A8B08 802E9308 1000FF46 */ b .L_EU_802E9024 -/* 0A8B0C 802E930C A62E0008 */ sh $t6, 8($s1) -glabel L_EU_802E9310 -/* 0A8B10 802E9310 0C0B9DA0 */ jal m64_read_u8 -/* 0A8B14 802E9314 02002025 */ move $a0, $s0 -/* 0A8B18 802E9318 305200FF */ andi $s2, $v0, 0xff -/* 0A8B1C 802E931C 0C0B9DA5 */ jal m64_read_s16 -/* 0A8B20 802E9320 02002025 */ move $a0, $s0 -/* 0A8B24 802E9324 12400008 */ beqz $s2, .L080201148 -/* 0A8B28 802E9328 02401825 */ move $v1, $s2 -/* 0A8B2C 802E932C 24010001 */ li $at, 1 -/* 0A8B30 802E9330 10610005 */ beq $v1, $at, .L080201148 -/* 0A8B34 802E9334 24010002 */ li $at, 2 -/* 0A8B38 802E9338 1061000A */ beq $v1, $at, .L080201164 -/* 0A8B3C 802E933C 304FFFFF */ andi $t7, $v0, 0xffff -/* 0A8B40 802E9340 1000FF38 */ b .L_EU_802E9024 -/* 0A8B44 802E9344 00000000 */ nop -.L080201148: -/* 0A8B48 802E9348 92380001 */ lbu $t8, 1($s1) -/* 0A8B4C 802E934C 24010002 */ li $at, 2 -/* 0A8B50 802E9350 1301FF34 */ beq $t8, $at, .L_EU_802E9024 -/* 0A8B54 802E9354 00000000 */ nop -/* 0A8B58 802E9358 A6220012 */ sh $v0, 0x12($s1) -/* 0A8B5C 802E935C 1000FF31 */ b .L_EU_802E9024 -/* 0A8B60 802E9360 A2320001 */ sb $s2, 1($s1) -.L080201164: -/* 0A8B64 802E9364 448F5000 */ mtc1 $t7, $f10 -/* 0A8B68 802E9368 44802000 */ mtc1 $zero, $f4 -/* 0A8B6C 802E936C C6260018 */ lwc1 $f6, 0x18($s1) -/* 0A8B70 802E9370 46805420 */ cvt.s.w $f16, $f10 -/* 0A8B74 802E9374 A6220010 */ sh $v0, 0x10($s1) -/* 0A8B78 802E9378 A2320001 */ sb $s2, 1($s1) -/* 0A8B7C 802E937C 46062201 */ sub.s $f8, $f4, $f6 -/* 0A8B80 802E9380 46104483 */ div.s $f18, $f8, $f16 -/* 0A8B84 802E9384 1000FF27 */ b .L_EU_802E9024 -/* 0A8B88 802E9388 E632001C */ swc1 $f18, 0x1c($s1) -glabel L_EU_802E938C -/* 0A8B8C 802E938C 0C0B9DA0 */ jal m64_read_u8 -/* 0A8B90 802E9390 02002025 */ move $a0, $s0 -/* 0A8B94 802E9394 92230001 */ lbu $v1, 1($s1) -/* 0A8B98 802E9398 24010001 */ li $at, 1 -/* 0A8B9C 802E939C 5060000B */ beql $v1, $zero, .L0802011CC -/* 0A8BA0 802E93A0 96230012 */ lhu $v1, 0x12($s1) -/* 0A8BA4 802E93A4 10610005 */ beq $v1, $at, .L0802011BC -/* 0A8BA8 802E93A8 24010002 */ li $at, 2 -/* 0A8BAC 802E93AC 1061FF1D */ beq $v1, $at, .L_EU_802E9024 -/* 0A8BB0 802E93B0 00000000 */ nop -/* 0A8BB4 802E93B4 1000FF1B */ b .L_EU_802E9024 -/* 0A8BB8 802E93B8 00000000 */ nop -.L0802011BC: -/* 0A8BBC 802E93BC 44802000 */ mtc1 $zero, $f4 -/* 0A8BC0 802E93C0 A2200001 */ sb $zero, 1($s1) -/* 0A8BC4 802E93C4 E6240018 */ swc1 $f4, 0x18($s1) -/* 0A8BC8 802E93C8 96230012 */ lhu $v1, 0x12($s1) -.L0802011CC: -/* 0A8BCC 802E93CC 1060000E */ beqz $v1, .L080201208 -/* 0A8BD0 802E93D0 A6230010 */ sh $v1, 0x10($s1) -/* 0A8BD4 802E93D4 44823000 */ mtc1 $v0, $f6 -/* 0A8BD8 802E93D8 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 0A8BDC 802E93DC 44814000 */ mtc1 $at, $f8 -/* 0A8BE0 802E93E0 468032A0 */ cvt.s.w $f10, $f6 -/* 0A8BE4 802E93E4 3079FFFF */ andi $t9, $v1, 0xffff -/* 0A8BE8 802E93E8 44993000 */ mtc1 $t9, $f6 -/* 0A8BEC 802E93EC C6320018 */ lwc1 $f18, 0x18($s1) -/* 0A8BF0 802E93F0 46085403 */ div.s $f16, $f10, $f8 -/* 0A8BF4 802E93F4 468032A0 */ cvt.s.w $f10, $f6 -/* 0A8BF8 802E93F8 46128101 */ sub.s $f4, $f16, $f18 -/* 0A8BFC 802E93FC 460A2203 */ div.s $f8, $f4, $f10 -/* 0A8C00 802E9400 1000FF08 */ b .L_EU_802E9024 -/* 0A8C04 802E9404 E628001C */ swc1 $f8, 0x1c($s1) -.L080201208: -/* 0A8C08 802E9408 44828000 */ mtc1 $v0, $f16 -/* 0A8C0C 802E940C 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 0A8C10 802E9410 44813000 */ mtc1 $at, $f6 -/* 0A8C14 802E9414 468084A0 */ cvt.s.w $f18, $f16 -/* 0A8C18 802E9418 46069103 */ div.s $f4, $f18, $f6 -/* 0A8C1C 802E941C 1000FF01 */ b .L_EU_802E9024 -/* 0A8C20 802E9420 E6240018 */ swc1 $f4, 0x18($s1) -glabel L_EU_802E9424 -/* 0A8C24 802E9424 0C0B9DA0 */ jal m64_read_u8 -/* 0A8C28 802E9428 02002025 */ move $a0, $s0 -/* 0A8C2C 802E942C 00024600 */ sll $t0, $v0, 0x18 -/* 0A8C30 802E9430 00084E03 */ sra $t1, $t0, 0x18 -/* 0A8C34 802E9434 44895000 */ mtc1 $t1, $f10 -/* 0A8C38 802E9438 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 0A8C3C 802E943C 44818000 */ mtc1 $at, $f16 -/* 0A8C40 802E9440 46805220 */ cvt.s.w $f8, $f10 -/* 0A8C44 802E9444 46104483 */ div.s $f18, $f8, $f16 -/* 0A8C48 802E9448 1000FEF6 */ b .L_EU_802E9024 -/* 0A8C4C 802E944C E6320028 */ swc1 $f18, 0x28($s1) -glabel L_EU_802E9450 -/* 0A8C50 802E9450 0C0B9DA5 */ jal m64_read_s16 -/* 0A8C54 802E9454 02002025 */ move $a0, $s0 -/* 0A8C58 802E9458 02202025 */ move $a0, $s1 -/* 0A8C5C 802E945C 0C0B9C7B */ jal sequence_player_init_channels -/* 0A8C60 802E9460 3045FFFF */ andi $a1, $v0, 0xffff -/* 0A8C64 802E9464 1000FEEF */ b .L_EU_802E9024 -/* 0A8C68 802E9468 00000000 */ nop -glabel L_EU_802E946C -/* 0A8C6C 802E946C 0C0B9DA5 */ jal m64_read_s16 -/* 0A8C70 802E9470 02002025 */ move $a0, $s0 -/* 0A8C74 802E9474 02202025 */ move $a0, $s1 -/* 0A8C78 802E9478 0C0B9CC6 */ jal sequence_player_disable_channels -/* 0A8C7C 802E947C 3045FFFF */ andi $a1, $v0, 0xffff -/* 0A8C80 802E9480 1000FEE8 */ b .L_EU_802E9024 -/* 0A8C84 802E9484 00000000 */ nop -glabel L_EU_802E9488 -/* 0A8C88 802E9488 0C0B9DA0 */ jal m64_read_u8 -/* 0A8C8C 802E948C 02002025 */ move $a0, $s0 -/* 0A8C90 802E9490 00025E00 */ sll $t3, $v0, 0x18 -/* 0A8C94 802E9494 000B6603 */ sra $t4, $t3, 0x18 -/* 0A8C98 802E9498 448C3000 */ mtc1 $t4, $f6 -/* 0A8C9C 802E949C 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 0A8CA0 802E94A0 44815000 */ mtc1 $at, $f10 -/* 0A8CA4 802E94A4 46803120 */ cvt.s.w $f4, $f6 -/* 0A8CA8 802E94A8 460A2203 */ div.s $f8, $f4, $f10 -/* 0A8CAC 802E94AC 1000FEDD */ b .L_EU_802E9024 -/* 0A8CB0 802E94B0 E6280024 */ swc1 $f8, 0x24($s1) -glabel L_EU_802E94B4 -/* 0A8CB4 802E94B4 922D0000 */ lbu $t5, ($s1) -/* 0A8CB8 802E94B8 35AE0020 */ ori $t6, $t5, 0x20 -/* 0A8CBC 802E94BC 1000FED9 */ b .L_EU_802E9024 -/* 0A8CC0 802E94C0 A22E0000 */ sb $t6, ($s1) -glabel L_EU_802E94C4 -/* 0A8CC4 802E94C4 0C0B9DA0 */ jal m64_read_u8 -/* 0A8CC8 802E94C8 02002025 */ move $a0, $s0 -/* 0A8CCC 802E94CC 1000FED5 */ b .L_EU_802E9024 -/* 0A8CD0 802E94D0 A2220003 */ sb $v0, 3($s1) -glabel L_EU_802E94D4 -/* 0A8CD4 802E94D4 0C0B9DA5 */ jal m64_read_s16 -/* 0A8CD8 802E94D8 02002025 */ move $a0, $s0 -/* 0A8CDC 802E94DC 8E380014 */ lw $t8, 0x14($s1) -/* 0A8CE0 802E94E0 304FFFFF */ andi $t7, $v0, 0xffff -/* 0A8CE4 802E94E4 240100D2 */ li $at, 210 -/* 0A8CE8 802E94E8 16410003 */ bne $s2, $at, .L0802012F8 -/* 0A8CEC 802E94EC 030F1821 */ addu $v1, $t8, $t7 -/* 0A8CF0 802E94F0 1000FECC */ b .L_EU_802E9024 -/* 0A8CF4 802E94F4 AE23008C */ sw $v1, 0x8c($s1) -.L0802012F8: -/* 0A8CF8 802E94F8 1000FECA */ b .L_EU_802E9024 -/* 0A8CFC 802E94FC AE230090 */ sw $v1, 0x90($s1) -glabel L_EU_802E9500 -/* 0A8D00 802E9500 0C0B9DA0 */ jal m64_read_u8 -/* 0A8D04 802E9504 02002025 */ move $a0, $s0 -/* 0A8D08 802E9508 1000FEC6 */ b .L_EU_802E9024 -/* 0A8D0C 802E950C A2220002 */ sb $v0, 2($s1) -glabel L_EU_802E9510 -/* 0A8D10 802E9510 0C0B9DA0 */ jal m64_read_u8 -/* 0A8D14 802E9514 02002025 */ move $a0, $s0 -/* 0A8D18 802E9518 1000FEC2 */ b .L_EU_802E9024 -/* 0A8D1C 802E951C 00409825 */ move $s3, $v0 -glabel L_EU_802E9520 -/* 0A8D20 802E9520 0C0B9DA0 */ jal m64_read_u8 -/* 0A8D24 802E9524 02002025 */ move $a0, $s0 -/* 0A8D28 802E9528 1000FEBE */ b .L_EU_802E9024 -/* 0A8D2C 802E952C 02629824 */ and $s3, $s3, $v0 -glabel L_EU_802E9530 -/* 0A8D30 802E9530 0C0B9DA0 */ jal m64_read_u8 -/* 0A8D34 802E9534 02002025 */ move $a0, $s0 -/* 0A8D38 802E9538 1000FEBA */ b .L_EU_802E9024 -/* 0A8D3C 802E953C 02629823 */ subu $s3, $s3, $v0 -.L080201340: -/* 0A8D40 802E9540 28410011 */ slti $at, $v0, 0x11 -/* 0A8D44 802E9544 14200010 */ bnez $at, .L080201388 -/* 0A8D48 802E9548 28410021 */ slti $at, $v0, 0x21 -/* 0A8D4C 802E954C 14200009 */ bnez $at, .L080201374 -/* 0A8D50 802E9550 2459FFC0 */ addiu $t9, $v0, -0x40 -/* 0A8D54 802E9554 2F210061 */ sltiu $at, $t9, 0x61 -/* 0A8D58 802E9558 1020FEB2 */ beqz $at, .L_EU_802E9024 -/* 0A8D5C 802E955C 0019C880 */ sll $t9, $t9, 2 -/* 0A8D60 802E9560 3C018030 */ lui $at, %hi(jtbl_EU_80306BB4) -/* 0A8D64 802E9564 00390821 */ addu $at, $at, $t9 -/* 0A8D68 802E9568 8C396BB4 */ lw $t9, %lo(jtbl_EU_80306BB4)($at) -/* 0A8D6C 802E956C 03200008 */ jr $t9 -/* 0A8D70 802E9570 00000000 */ nop -.L080201374: -/* 0A8D74 802E9574 24010020 */ li $at, 32 -/* 0A8D78 802E9578 1041FEAA */ beq $v0, $at, .L_EU_802E9024 -/* 0A8D7C 802E957C 00000000 */ nop -/* 0A8D80 802E9580 1000FEA8 */ b .L_EU_802E9024 -/* 0A8D84 802E9584 00000000 */ nop -.L080201388: -/* 0A8D88 802E9588 10400006 */ beqz $v0, .L0802013A4 -/* 0A8D8C 802E958C 3069000F */ andi $t1, $v1, 0xf -/* 0A8D90 802E9590 24010010 */ li $at, 16 -/* 0A8D94 802E9594 1041FEA3 */ beq $v0, $at, .L_EU_802E9024 -/* 0A8D98 802E9598 00000000 */ nop -/* 0A8D9C 802E959C 1000FEA1 */ b .L_EU_802E9024 -/* 0A8DA0 802E95A0 00000000 */ nop -.L0802013A4: -/* 0A8DA4 802E95A4 00095880 */ sll $t3, $t1, 2 -/* 0A8DA8 802E95A8 022B6021 */ addu $t4, $s1, $t3 -/* 0A8DAC 802E95AC 8D8A0030 */ lw $t2, 0x30($t4) -/* 0A8DB0 802E95B0 8D530000 */ lw $s3, ($t2) -/* 0A8DB4 802E95B4 00136840 */ sll $t5, $s3, 1 -/* 0A8DB8 802E95B8 1000FE9A */ b .L_EU_802E9024 -/* 0A8DBC 802E95BC 000D9FC2 */ srl $s3, $t5, 0x1f -glabel L_EU_802E95C0 -/* 0A8DC0 802E95C0 82380007 */ lb $t8, 7($s1) -/* 0A8DC4 802E95C4 1000FE97 */ b .L_EU_802E9024 -/* 0A8DC8 802E95C8 02789823 */ subu $s3, $s3, $t8 -glabel L_EU_802E95CC -/* 0A8DCC 802E95CC 1000FE95 */ b .L_EU_802E9024 -/* 0A8DD0 802E95D0 A2330007 */ sb $s3, 7($s1) -glabel L_EU_802E95D4 -/* 0A8DD4 802E95D4 1000FE93 */ b .L_EU_802E9024 -/* 0A8DD8 802E95D8 82330007 */ lb $s3, 7($s1) -glabel L_EU_802E95DC -/* 0A8DDC 802E95DC 0C0B9DA5 */ jal m64_read_s16 -/* 0A8DE0 802E95E0 02002025 */ move $a0, $s0 -/* 0A8DE4 802E95E4 8E390014 */ lw $t9, 0x14($s1) -/* 0A8DE8 802E95E8 02402825 */ move $a1, $s2 -/* 0A8DEC 802E95EC 30AF000F */ andi $t7, $a1, 0xf -/* 0A8DF0 802E95F0 3048FFFF */ andi $t0, $v0, 0xffff -/* 0A8DF4 802E95F4 01E02825 */ move $a1, $t7 -/* 0A8DF8 802E95F8 02202025 */ move $a0, $s1 -/* 0A8DFC 802E95FC 0C0B9CFA */ jal sequence_channel_enable -/* 0A8E00 802E9600 03283021 */ addu $a2, $t9, $t0 -/* 0A8E04 802E9604 1000FE87 */ b .L_EU_802E9024 -/* 0A8E08 802E9608 00000000 */ nop -.L08020140C: -/* 0A8E0C 802E960C 3C108023 */ lui $s0, %hi(gSequenceChannelNone) # $s0, 0x8023 -/* 0A8E10 802E9610 02201825 */ move $v1, $s1 -/* 0A8E14 802E9614 24110040 */ li $s1, 64 -/* 0A8E18 802E9618 26108748 */ addiu $s0, %lo(gSequenceChannelNone) # addiu $s0, $s0, -0x78b8 -/* 0A8E1C 802E961C 00001025 */ move $v0, $zero -.L080201420: -/* 0A8E20 802E9620 8C640030 */ lw $a0, 0x30($v1) -/* 0A8E24 802E9624 24010001 */ li $at, 1 -/* 0A8E28 802E9628 02044826 */ xor $t1, $s0, $a0 -/* 0A8E2C 802E962C 0009482B */ sltu $t1, $zero, $t1 -/* 0A8E30 802E9630 55210007 */ bnel $t1, $at, .L080201450 -/* 0A8E34 802E9634 24420004 */ addiu $v0, $v0, 4 -/* 0A8E38 802E9638 AFA20034 */ sw $v0, 0x34($sp) -/* 0A8E3C 802E963C 0C0BA0AE */ jal sequence_channel_process_script -/* 0A8E40 802E9640 AFA30030 */ sw $v1, 0x30($sp) -/* 0A8E44 802E9644 8FA20034 */ lw $v0, 0x34($sp) -/* 0A8E48 802E9648 8FA30030 */ lw $v1, 0x30($sp) -/* 0A8E4C 802E964C 24420004 */ addiu $v0, $v0, 4 -.L080201450: -/* 0A8E50 802E9650 1451FFF3 */ bne $v0, $s1, .L080201420 -/* 0A8E54 802E9654 24630004 */ addiu $v1, $v1, 4 -.L080201458: -/* 0A8E58 802E9658 8FBF002C */ lw $ra, 0x2c($sp) -.L08020145C: -/* 0A8E5C 802E965C 8FB0001C */ lw $s0, 0x1c($sp) -/* 0A8E60 802E9660 8FB10020 */ lw $s1, 0x20($sp) -/* 0A8E64 802E9664 8FB20024 */ lw $s2, 0x24($sp) -/* 0A8E68 802E9668 8FB30028 */ lw $s3, 0x28($sp) -/* 0A8E6C 802E966C 03E00008 */ jr $ra -/* 0A8E70 802E9670 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/non_matchings/eu/audio/synthesis_do_one_audio_update.s b/asm/non_matchings/eu/audio/synthesis_do_one_audio_update.s deleted file mode 100644 index 04a57efa..00000000 --- a/asm/non_matchings/eu/audio/synthesis_do_one_audio_update.s +++ /dev/null @@ -1,331 +0,0 @@ -glabel synthesis_do_one_audio_update -/* 09FA28 802E0228 27BDFF40 */ addiu $sp, $sp, -0xc0 -/* 09FA2C 802E022C 3C0A8022 */ lui $t2, %hi(gNumSynthesisReverbs) # $t2, 0x8022 -/* 09FA30 802E0230 254AC5E3 */ addiu $t2, %lo(gNumSynthesisReverbs) # addiu $t2, $t2, -0x3a1d -/* 09FA34 802E0234 81480000 */ lb $t0, ($t2) -/* 09FA38 802E0238 AFBE0040 */ sw $fp, 0x40($sp) -/* 09FA3C 802E023C AFB40030 */ sw $s4, 0x30($sp) -/* 09FA40 802E0240 AFB20028 */ sw $s2, 0x28($sp) -/* 09FA44 802E0244 00C0A025 */ move $s4, $a2 -/* 09FA48 802E0248 00E0F025 */ move $fp, $a3 -/* 09FA4C 802E024C AFBF0044 */ sw $ra, 0x44($sp) -/* 09FA50 802E0250 AFB7003C */ sw $s7, 0x3c($sp) -/* 09FA54 802E0254 AFB60038 */ sw $s6, 0x38($sp) -/* 09FA58 802E0258 AFB50034 */ sw $s5, 0x34($sp) -/* 09FA5C 802E025C AFB3002C */ sw $s3, 0x2c($sp) -/* 09FA60 802E0260 AFB10024 */ sw $s1, 0x24($sp) -/* 09FA64 802E0264 AFB00020 */ sw $s0, 0x20($sp) -/* 09FA68 802E0268 AFA400C0 */ sw $a0, 0xc0($sp) -/* 09FA6C 802E026C AFA500C4 */ sw $a1, 0xc4($sp) -/* 09FA70 802E0270 1500001D */ bnez $t0, .L80200C98 -/* 09FA74 802E0274 00009025 */ move $s2, $zero -/* 09FA78 802E0278 3C048023 */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x8023 -/* 09FA7C 802E027C 8C849808 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0) -/* 09FA80 802E0280 00008825 */ move $s1, $zero -/* 09FA84 802E0284 18800016 */ blez $a0, .L80200C90 -/* 09FA88 802E0288 00000000 */ nop -/* 09FA8C 802E028C 00870019 */ multu $a0, $a3 -/* 09FA90 802E0290 3C0E8022 */ lui $t6, %hi(gNoteSubsEu) # $t6, 0x8022 -/* 09FA94 802E0294 8DCEC5E4 */ lw $t6, %lo(gNoteSubsEu)($t6) -/* 09FA98 802E0298 27A50084 */ addiu $a1, $sp, 0x84 -/* 09FA9C 802E029C 00007812 */ mflo $t7 -/* 09FAA0 802E02A0 000FC100 */ sll $t8, $t7, 4 -/* 09FAA4 802E02A4 01D81021 */ addu $v0, $t6, $t8 -.L80200C58: -/* 09FAA8 802E02A8 8C590000 */ lw $t9, ($v0) -/* 09FAAC 802E02AC 00B26021 */ addu $t4, $a1, $s2 -/* 09FAB0 802E02B0 00195FC2 */ srl $t3, $t9, 0x1f -/* 09FAB4 802E02B4 51600006 */ beql $t3, $zero, .L80200C80 -/* 09FAB8 802E02B8 26310001 */ addiu $s1, $s1, 1 -/* 09FABC 802E02BC 26520001 */ addiu $s2, $s2, 1 -/* 09FAC0 802E02C0 00126C00 */ sll $t5, $s2, 0x10 -/* 09FAC4 802E02C4 000D9403 */ sra $s2, $t5, 0x10 -/* 09FAC8 802E02C8 A1910000 */ sb $s1, ($t4) -/* 09FACC 802E02CC 26310001 */ addiu $s1, $s1, 1 -.L80200C80: -/* 09FAD0 802E02D0 0224082A */ slt $at, $s1, $a0 -/* 09FAD4 802E02D4 1420FFF4 */ bnez $at, .L80200C58 -/* 09FAD8 802E02D8 24420010 */ addiu $v0, $v0, 0x10 -/* 09FADC 802E02DC 00008825 */ move $s1, $zero -.L80200C90: -/* 09FAE0 802E02E0 10000049 */ b .L80200DB8 -/* 09FAE4 802E02E4 00009825 */ move $s3, $zero -.L80200C98: -/* 09FAE8 802E02E8 19000026 */ blez $t0, .L80200D34 -/* 09FAEC 802E02EC 00009825 */ move $s3, $zero -/* 09FAF0 802E02F0 3C048023 */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x8023 -/* 09FAF4 802E02F4 8C849808 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0) -/* 09FAF8 802E02F8 27A50084 */ addiu $a1, $sp, 0x84 -.L80200CAC: -/* 09FAFC 802E02FC 1880001A */ blez $a0, .L80200D18 -/* 09FB00 802E0300 00008825 */ move $s1, $zero -/* 09FB04 802E0304 009E0019 */ multu $a0, $fp -/* 09FB08 802E0308 3C098022 */ lui $t1, %hi(gNoteSubsEu) # $t1, 0x8022 -/* 09FB0C 802E030C 8D29C5E4 */ lw $t1, %lo(gNoteSubsEu)($t1) -/* 09FB10 802E0310 00001812 */ mflo $v1 -/* 09FB14 802E0314 00000000 */ nop -/* 09FB18 802E0318 00000000 */ nop -.L80200CCC: -/* 09FB1C 802E031C 00037100 */ sll $t6, $v1, 4 -/* 09FB20 802E0320 01C91021 */ addu $v0, $t6, $t1 -/* 09FB24 802E0324 8C580000 */ lw $t8, ($v0) -/* 09FB28 802E0328 0018CFC2 */ srl $t9, $t8, 0x1f -/* 09FB2C 802E032C 5320000B */ beql $t9, $zero, .L80200D0C -/* 09FB30 802E0330 26310001 */ addiu $s1, $s1, 1 -/* 09FB34 802E0334 904B0001 */ lbu $t3, 1($v0) -/* 09FB38 802E0338 00B26821 */ addu $t5, $a1, $s2 -/* 09FB3C 802E033C 000B6142 */ srl $t4, $t3, 5 -/* 09FB40 802E0340 566C0006 */ bnel $s3, $t4, .L80200D0C -/* 09FB44 802E0344 26310001 */ addiu $s1, $s1, 1 -/* 09FB48 802E0348 26520001 */ addiu $s2, $s2, 1 -/* 09FB4C 802E034C 00127C00 */ sll $t7, $s2, 0x10 -/* 09FB50 802E0350 000F9403 */ sra $s2, $t7, 0x10 -/* 09FB54 802E0354 A1B10000 */ sb $s1, ($t5) -/* 09FB58 802E0358 26310001 */ addiu $s1, $s1, 1 -.L80200D0C: -/* 09FB5C 802E035C 0224082A */ slt $at, $s1, $a0 -/* 09FB60 802E0360 1420FFEE */ bnez $at, .L80200CCC -/* 09FB64 802E0364 24630001 */ addiu $v1, $v1, 1 -.L80200D18: -/* 09FB68 802E0368 26730001 */ addiu $s3, $s3, 1 -/* 09FB6C 802E036C 0013C400 */ sll $t8, $s3, 0x10 -/* 09FB70 802E0370 00189C03 */ sra $s3, $t8, 0x10 -/* 09FB74 802E0374 0268082A */ slt $at, $s3, $t0 -/* 09FB78 802E0378 1420FFE0 */ bnez $at, .L80200CAC -/* 09FB7C 802E037C 00000000 */ nop -/* 09FB80 802E0380 00009825 */ move $s3, $zero -.L80200D34: -/* 09FB84 802E0384 3C048023 */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x8023 -/* 09FB88 802E0388 8C849808 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0) -/* 09FB8C 802E038C 27A50084 */ addiu $a1, $sp, 0x84 -/* 09FB90 802E0390 00008825 */ move $s1, $zero -/* 09FB94 802E0394 5880001D */ blezl $a0, .L80200DBC -/* 09FB98 802E0398 02801025 */ move $v0, $s4 -/* 09FB9C 802E039C 009E0019 */ multu $a0, $fp -/* 09FBA0 802E03A0 3C098022 */ lui $t1, %hi(gNoteSubsEu) # $t1, 0x8022 -/* 09FBA4 802E03A4 8D29C5E4 */ lw $t1, %lo(gNoteSubsEu)($t1) -/* 09FBA8 802E03A8 00001812 */ mflo $v1 -/* 09FBAC 802E03AC 00000000 */ nop -/* 09FBB0 802E03B0 00000000 */ nop -.L80200D64: -/* 09FBB4 802E03B4 00035900 */ sll $t3, $v1, 4 -/* 09FBB8 802E03B8 01691021 */ addu $v0, $t3, $t1 -/* 09FBBC 802E03BC 8C4C0000 */ lw $t4, ($v0) -/* 09FBC0 802E03C0 000C6FC2 */ srl $t5, $t4, 0x1f -/* 09FBC4 802E03C4 51A0000C */ beql $t5, $zero, .L80200DA8 -/* 09FBC8 802E03C8 26310001 */ addiu $s1, $s1, 1 -/* 09FBCC 802E03CC 904F0001 */ lbu $t7, 1($v0) -/* 09FBD0 802E03D0 00B2C021 */ addu $t8, $a1, $s2 -/* 09FBD4 802E03D4 000F7142 */ srl $t6, $t7, 5 -/* 09FBD8 802E03D8 01C8082A */ slt $at, $t6, $t0 -/* 09FBDC 802E03DC 54200006 */ bnezl $at, .L80200DA8 -/* 09FBE0 802E03E0 26310001 */ addiu $s1, $s1, 1 -/* 09FBE4 802E03E4 26520001 */ addiu $s2, $s2, 1 -/* 09FBE8 802E03E8 0012CC00 */ sll $t9, $s2, 0x10 -/* 09FBEC 802E03EC 00199403 */ sra $s2, $t9, 0x10 -/* 09FBF0 802E03F0 A3110000 */ sb $s1, ($t8) -/* 09FBF4 802E03F4 26310001 */ addiu $s1, $s1, 1 -.L80200DA8: -/* 09FBF8 802E03F8 0224082A */ slt $at, $s1, $a0 -/* 09FBFC 802E03FC 1420FFED */ bnez $at, .L80200D64 -/* 09FC00 802E0400 24630001 */ addiu $v1, $v1, 1 -/* 09FC04 802E0404 00008825 */ move $s1, $zero -.L80200DB8: -/* 09FC08 802E0408 02801025 */ move $v0, $s4 -.L80200DBC: -/* 09FC0C 802E040C 3C0C0200 */ lui $t4, (0x020004C0 >> 16) # lui $t4, 0x200 -/* 09FC10 802E0410 358C04C0 */ ori $t4, (0x020004C0 & 0xFFFF) # ori $t4, $t4, 0x4c0 -/* 09FC14 802E0414 240D0280 */ li $t5, 640 -/* 09FC18 802E0418 AC4D0004 */ sw $t5, 4($v0) -/* 09FC1C 802E041C AC4C0000 */ sw $t4, ($v0) -/* 09FC20 802E0420 814F0000 */ lb $t7, ($t2) -/* 09FC24 802E0424 3C178022 */ lui $s7, %hi(gNotes) # $s7, 0x8022 -/* 09FC28 802E0428 26940008 */ addiu $s4, $s4, 8 -/* 09FC2C 802E042C 19E00053 */ blez $t7, .L80200F2C -/* 09FC30 802E0430 26F73D60 */ addiu $s7, %lo(gNotes) # addiu $s7, $s7, 0x3d60 -/* 09FC34 802E0434 3C158022 */ lui $s5, %hi(gNoteSubsEu) # $s5, 0x8022 -/* 09FC38 802E0438 26B5C5E4 */ addiu $s5, %lo(gNoteSubsEu) # addiu $s5, $s5, -0x3a1c -/* 09FC3C 802E043C 241600C0 */ li $s6, 192 -/* 09FC40 802E0440 00137140 */ sll $t6, $s3, 5 -.L80200DF4: -/* 09FC44 802E0444 01D37021 */ addu $t6, $t6, $s3 -/* 09FC48 802E0448 3C188022 */ lui $t8, %hi(gSynthesisReverbs) # $t8, 0x8022 -/* 09FC4C 802E044C 2718C1B0 */ addiu $t8, %lo(gSynthesisReverbs) # addiu $t8, $t8, -0x3e50 -/* 09FC50 802E0450 000E70C0 */ sll $t6, $t6, 3 -/* 09FC54 802E0454 01D8C821 */ addu $t9, $t6, $t8 -/* 09FC58 802E0458 AFB90060 */ sw $t9, 0x60($sp) -/* 09FC5C 802E045C 932B0001 */ lbu $t3, 1($t9) -/* 09FC60 802E0460 3C018022 */ lui $at, %hi(gUseReverb) # $at, 0x8022 -/* 09FC64 802E0464 02802025 */ move $a0, $s4 -/* 09FC68 802E0468 000B6600 */ sll $t4, $t3, 0x18 -/* 09FC6C 802E046C 000C6E03 */ sra $t5, $t4, 0x18 -/* 09FC70 802E0470 11A0000A */ beqz $t5, .L80200E4C -/* 09FC74 802E0474 A02BC5E2 */ sb $t3, %lo(gUseReverb)($at) -/* 09FC78 802E0478 00133400 */ sll $a2, $s3, 0x10 -/* 09FC7C 802E047C 001E3C00 */ sll $a3, $fp, 0x10 -/* 09FC80 802E0480 00077403 */ sra $t6, $a3, 0x10 -/* 09FC84 802E0484 00067C03 */ sra $t7, $a2, 0x10 -/* 09FC88 802E0488 01E03025 */ move $a2, $t7 -/* 09FC8C 802E048C 01C03825 */ move $a3, $t6 -/* 09FC90 802E0490 0C0B7F60 */ jal synthesis_resample_and_mix_reverb -/* 09FC94 802E0494 8FA500C4 */ lw $a1, 0xc4($sp) -/* 09FC98 802E0498 0040A025 */ move $s4, $v0 -.L80200E4C: -/* 09FC9C 802E049C 0232082A */ slt $at, $s1, $s2 -/* 09FCA0 802E04A0 10200022 */ beqz $at, .L80200EDC -/* 09FCA4 802E04A4 27B80084 */ addiu $t8, $sp, 0x84 -/* 09FCA8 802E04A8 02388021 */ addu $s0, $s1, $t8 -.L80200E5C: -/* 09FCAC 802E04AC 3C198023 */ lui $t9, %hi(gMaxSimultaneousNotes) # $t9, 0x8023 -/* 09FCB0 802E04B0 8F399808 */ lw $t9, %lo(gMaxSimultaneousNotes)($t9) -/* 09FCB4 802E04B4 92030000 */ lbu $v1, ($s0) -/* 09FCB8 802E04B8 8EA90000 */ lw $t1, ($s5) -/* 09FCBC 802E04BC 03D90019 */ multu $fp, $t9 -/* 09FCC0 802E04C0 00035900 */ sll $t3, $v1, 4 -/* 09FCC4 802E04C4 012B6021 */ addu $t4, $t1, $t3 -/* 09FCC8 802E04C8 00001012 */ mflo $v0 -/* 09FCCC 802E04CC 00026900 */ sll $t5, $v0, 4 -/* 09FCD0 802E04D0 018D7821 */ addu $t7, $t4, $t5 -/* 09FCD4 802E04D4 91EE0001 */ lbu $t6, 1($t7) -/* 09FCD8 802E04D8 000EC142 */ srl $t8, $t6, 5 -/* 09FCDC 802E04DC 56780014 */ bnel $s3, $t8, .L80200EE0 -/* 09FCE0 802E04E0 8FAE0060 */ lw $t6, 0x60($sp) -/* 09FCE4 802E04E4 00760019 */ multu $v1, $s6 -/* 09FCE8 802E04E8 8EEB0000 */ lw $t3, ($s7) -/* 09FCEC 802E04EC 8FAF00C4 */ lw $t7, 0xc4($sp) -/* 09FCF0 802E04F0 00626021 */ addu $t4, $v1, $v0 -/* 09FCF4 802E04F4 000C6900 */ sll $t5, $t4, 4 -/* 09FCF8 802E04F8 01A92821 */ addu $a1, $t5, $t1 -/* 09FCFC 802E04FC 8FA700C0 */ lw $a3, 0xc0($sp) -/* 09FD00 802E0500 AFB40014 */ sw $s4, 0x14($sp) -/* 09FD04 802E0504 AFAF0010 */ sw $t7, 0x10($sp) -/* 09FD08 802E0508 0000C812 */ mflo $t9 -/* 09FD0C 802E050C 032B2021 */ addu $a0, $t9, $t3 -/* 09FD10 802E0510 0C0B81BC */ jal synthesis_process_note -/* 09FD14 802E0514 24860010 */ addiu $a2, $a0, 0x10 -/* 09FD18 802E0518 26310001 */ addiu $s1, $s1, 1 -/* 09FD1C 802E051C 0232082A */ slt $at, $s1, $s2 -/* 09FD20 802E0520 0040A025 */ move $s4, $v0 -/* 09FD24 802E0524 1420FFE1 */ bnez $at, .L80200E5C -/* 09FD28 802E0528 26100001 */ addiu $s0, $s0, 1 -.L80200EDC: -/* 09FD2C 802E052C 8FAE0060 */ lw $t6, 0x60($sp) -.L80200EE0: -/* 09FD30 802E0530 00132C00 */ sll $a1, $s3, 0x10 -/* 09FD34 802E0534 0005CC03 */ sra $t9, $a1, 0x10 -/* 09FD38 802E0538 91D80001 */ lbu $t8, 1($t6) -/* 09FD3C 802E053C 03202825 */ move $a1, $t9 -/* 09FD40 802E0540 02802025 */ move $a0, $s4 -/* 09FD44 802E0544 13000005 */ beqz $t8, .L80200F0C -/* 09FD48 802E0548 001E3400 */ sll $a2, $fp, 0x10 -/* 09FD4C 802E054C 00065C03 */ sra $t3, $a2, 0x10 -/* 09FD50 802E0550 0C0B8036 */ jal func_eu_802e00d8 -/* 09FD54 802E0554 01603025 */ move $a2, $t3 -/* 09FD58 802E0558 0040A025 */ move $s4, $v0 -.L80200F0C: -/* 09FD5C 802E055C 3C0F8022 */ lui $t7, %hi(gNumSynthesisReverbs) # $t7, 0x8022 -/* 09FD60 802E0560 81EFC5E3 */ lb $t7, %lo(gNumSynthesisReverbs)($t7) -/* 09FD64 802E0564 26730001 */ addiu $s3, $s3, 1 -/* 09FD68 802E0568 00136400 */ sll $t4, $s3, 0x10 -/* 09FD6C 802E056C 000C9C03 */ sra $s3, $t4, 0x10 -/* 09FD70 802E0570 026F082A */ slt $at, $s3, $t7 -/* 09FD74 802E0574 5420FFB3 */ bnezl $at, .L80200DF4 -/* 09FD78 802E0578 00137140 */ sll $t6, $s3, 5 -.L80200F2C: -/* 09FD7C 802E057C 3C158022 */ lui $s5, %hi(gNoteSubsEu) # $s5, 0x8022 -/* 09FD80 802E0580 3C178022 */ lui $s7, %hi(gNotes) # $s7, 0x8022 -/* 09FD84 802E0584 0232082A */ slt $at, $s1, $s2 -/* 09FD88 802E0588 26F73D60 */ addiu $s7, %lo(gNotes) # addiu $s7, $s7, 0x3d60 -/* 09FD8C 802E058C 26B5C5E4 */ addiu $s5, %lo(gNoteSubsEu) # addiu $s5, $s5, -0x3a1c -/* 09FD90 802E0590 1020002E */ beqz $at, .L80200FFC -/* 09FD94 802E0594 241600C0 */ li $s6, 192 -/* 09FD98 802E0598 27AE0084 */ addiu $t6, $sp, 0x84 -/* 09FD9C 802E059C 022E8021 */ addu $s0, $s1, $t6 -/* 09FDA0 802E05A0 24130001 */ li $s3, 1 -.L80200F54: -/* 09FDA4 802E05A4 3C188023 */ lui $t8, %hi(gMaxSimultaneousNotes) # $t8, 0x8023 -/* 09FDA8 802E05A8 8F189808 */ lw $t8, %lo(gMaxSimultaneousNotes)($t8) -/* 09FDAC 802E05AC 92030000 */ lbu $v1, ($s0) -/* 09FDB0 802E05B0 8EA90000 */ lw $t1, ($s5) -/* 09FDB4 802E05B4 03D80019 */ multu $fp, $t8 -/* 09FDB8 802E05B8 0003C900 */ sll $t9, $v1, 4 -/* 09FDBC 802E05BC 01395821 */ addu $t3, $t1, $t9 -/* 09FDC0 802E05C0 3C0F8022 */ lui $t7, %hi(gBankLoadStatus) -/* 09FDC4 802E05C4 3C011000 */ lui $at, 0x1000 -/* 09FDC8 802E05C8 00001012 */ mflo $v0 -/* 09FDCC 802E05CC 00026100 */ sll $t4, $v0, 4 -/* 09FDD0 802E05D0 016C6821 */ addu $t5, $t3, $t4 -/* 09FDD4 802E05D4 91A40002 */ lbu $a0, 2($t5) -/* 09FDD8 802E05D8 01E47821 */ addu $t7, $t7, $a0 -/* 09FDDC 802E05DC 91EF2C18 */ lbu $t7, %lo(gBankLoadStatus)($t7) -/* 09FDE0 802E05E0 29EE0002 */ slti $t6, $t7, 2 -/* 09FDE4 802E05E4 39CE0001 */ xori $t6, $t6, 1 -/* 09FDE8 802E05E8 166E0010 */ bne $s3, $t6, .L80200FDC -/* 09FDEC 802E05EC 00117A00 */ sll $t7, $s1, 8 -/* 09FDF0 802E05F0 00760019 */ multu $v1, $s6 -/* 09FDF4 802E05F4 8EF90000 */ lw $t9, ($s7) -/* 09FDF8 802E05F8 8FAD00C4 */ lw $t5, 0xc4($sp) -/* 09FDFC 802E05FC 00625821 */ addu $t3, $v1, $v0 -/* 09FE00 802E0600 000B6100 */ sll $t4, $t3, 4 -/* 09FE04 802E0604 01892821 */ addu $a1, $t4, $t1 -/* 09FE08 802E0608 8FA700C0 */ lw $a3, 0xc0($sp) -/* 09FE0C 802E060C AFB40014 */ sw $s4, 0x14($sp) -/* 09FE10 802E0610 AFAD0010 */ sw $t5, 0x10($sp) -/* 09FE14 802E0614 0000C012 */ mflo $t8 -/* 09FE18 802E0618 03192021 */ addu $a0, $t8, $t9 -/* 09FE1C 802E061C 0C0B81BC */ jal synthesis_process_note -/* 09FE20 802E0620 24860010 */ addiu $a2, $a0, 0x10 -/* 09FE24 802E0624 10000005 */ b .L80200FEC -/* 09FE28 802E0628 0040A025 */ move $s4, $v0 -.L80200FDC: -/* 09FE2C 802E062C 008F7021 */ addu $t6, $a0, $t7 -/* 09FE30 802E0630 01C1C021 */ addu $t8, $t6, $at -/* 09FE34 802E0634 3C018023 */ lui $at, %hi(gAudioErrorFlags) # $at, 0x8023 -/* 09FE38 802E0638 AC3898F0 */ sw $t8, %lo(gAudioErrorFlags)($at) -.L80200FEC: -/* 09FE3C 802E063C 26310001 */ addiu $s1, $s1, 1 -/* 09FE40 802E0640 0232082A */ slt $at, $s1, $s2 -/* 09FE44 802E0644 1420FFD7 */ bnez $at, .L80200F54 -/* 09FE48 802E0648 26100001 */ addiu $s0, $s0, 1 -.L80200FFC: -/* 09FE4C 802E064C 3C080800 */ lui $t0, 0x800 -/* 09FE50 802E0650 02802025 */ move $a0, $s4 -/* 09FE54 802E0654 AC880000 */ sw $t0, ($a0) -/* 09FE58 802E0658 8FA300C4 */ lw $v1, 0xc4($sp) -/* 09FE5C 802E065C 26940008 */ addiu $s4, $s4, 8 -/* 09FE60 802E0660 02802825 */ move $a1, $s4 -/* 09FE64 802E0664 0003C840 */ sll $t9, $v1, 1 -/* 09FE68 802E0668 332BFFFF */ andi $t3, $t9, 0xffff -/* 09FE6C 802E066C AC8B0004 */ sw $t3, 4($a0) -/* 09FE70 802E0670 26940008 */ addiu $s4, $s4, 8 -/* 09FE74 802E0674 3C0D04C0 */ lui $t5, (0x04C00600 >> 16) # lui $t5, 0x4c0 -/* 09FE78 802E0678 35AD0600 */ ori $t5, (0x04C00600 & 0xFFFF) # ori $t5, $t5, 0x600 -/* 09FE7C 802E067C 3C0C0D00 */ lui $t4, 0xd00 -/* 09FE80 802E0680 02803025 */ move $a2, $s4 -/* 09FE84 802E0684 ACAC0000 */ sw $t4, ($a1) -/* 09FE88 802E0688 ACAD0004 */ sw $t5, 4($a1) -/* 09FE8C 802E068C 00197840 */ sll $t7, $t9, 1 -/* 09FE90 802E0690 31EEFFFF */ andi $t6, $t7, 0xffff -/* 09FE94 802E0694 26940008 */ addiu $s4, $s4, 8 -/* 09FE98 802E0698 ACCE0004 */ sw $t6, 4($a2) -/* 09FE9C 802E069C ACC80000 */ sw $t0, ($a2) -/* 09FEA0 802E06A0 02803825 */ move $a3, $s4 -/* 09FEA4 802E06A4 3C180600 */ lui $t8, 0x600 -/* 09FEA8 802E06A8 ACF80000 */ sw $t8, ($a3) -/* 09FEAC 802E06AC 8FB900C0 */ lw $t9, 0xc0($sp) -/* 09FEB0 802E06B0 3C018000 */ lui $at, 0x8000 -/* 09FEB4 802E06B4 26820008 */ addiu $v0, $s4, 8 -/* 09FEB8 802E06B8 03215821 */ addu $t3, $t9, $at -/* 09FEBC 802E06BC ACEB0004 */ sw $t3, 4($a3) -/* 09FEC0 802E06C0 8FBF0044 */ lw $ra, 0x44($sp) -/* 09FEC4 802E06C4 8FBE0040 */ lw $fp, 0x40($sp) -/* 09FEC8 802E06C8 8FB7003C */ lw $s7, 0x3c($sp) -/* 09FECC 802E06CC 8FB60038 */ lw $s6, 0x38($sp) -/* 09FED0 802E06D0 8FB50034 */ lw $s5, 0x34($sp) -/* 09FED4 802E06D4 8FB40030 */ lw $s4, 0x30($sp) -/* 09FED8 802E06D8 8FB3002C */ lw $s3, 0x2c($sp) -/* 09FEDC 802E06DC 8FB20028 */ lw $s2, 0x28($sp) -/* 09FEE0 802E06E0 8FB10024 */ lw $s1, 0x24($sp) -/* 09FEE4 802E06E4 8FB00020 */ lw $s0, 0x20($sp) -/* 09FEE8 802E06E8 03E00008 */ jr $ra -/* 09FEEC 802E06EC 27BD00C0 */ addiu $sp, $sp, 0xc0 diff --git a/asm/non_matchings/eu/audio/synthesis_execute.s b/asm/non_matchings/eu/audio/synthesis_execute.s deleted file mode 100644 index 4b1fd3ef..00000000 --- a/asm/non_matchings/eu/audio/synthesis_execute.s +++ /dev/null @@ -1,178 +0,0 @@ -glabel synthesis_execute -/* 09F2FC 802DFAFC 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 09F300 802DFB00 AFB60030 */ sw $s6, 0x30($sp) -/* 09F304 802DFB04 3C168023 */ lui $s6, %hi(gAudioBufferParameters) # $s6, 0x8023 -/* 09F308 802DFB08 26D697E0 */ addiu $s6, %lo(gAudioBufferParameters) # addiu $s6, $s6, -0x6820 -/* 09F30C 802DFB0C AFB40028 */ sw $s4, 0x28($sp) -/* 09F310 802DFB10 86D4000C */ lh $s4, 0xc($s6) -/* 09F314 802DFB14 AFB70034 */ sw $s7, 0x34($sp) -/* 09F318 802DFB18 AFB1001C */ sw $s1, 0x1c($sp) -/* 09F31C 802DFB1C 00C08825 */ move $s1, $a2 -/* 09F320 802DFB20 00E0B825 */ move $s7, $a3 -/* 09F324 802DFB24 AFBF003C */ sw $ra, 0x3c($sp) -/* 09F328 802DFB28 AFBE0038 */ sw $fp, 0x38($sp) -/* 09F32C 802DFB2C AFB5002C */ sw $s5, 0x2c($sp) -/* 09F330 802DFB30 AFB30024 */ sw $s3, 0x24($sp) -/* 09F334 802DFB34 AFB20020 */ sw $s2, 0x20($sp) -/* 09F338 802DFB38 AFB00018 */ sw $s0, 0x18($sp) -/* 09F33C 802DFB3C AFA40060 */ sw $a0, 0x60($sp) -/* 09F340 802DFB40 1A800009 */ blez $s4, .L80200518 -/* 09F344 802DFB44 AFA50064 */ sw $a1, 0x64($sp) -.L802004F8: -/* 09F348 802DFB48 2690FFFF */ addiu $s0, $s4, -1 -/* 09F34C 802DFB4C 0C0BA59D */ jal process_sequences -/* 09F350 802DFB50 02002025 */ move $a0, $s0 -/* 09F354 802DFB54 86CE000C */ lh $t6, 0xc($s6) -/* 09F358 802DFB58 0C0B7E91 */ jal synthesis_load_note_subs_eu -/* 09F35C 802DFB5C 01D42023 */ subu $a0, $t6, $s4 -/* 09F360 802DFB60 1E00FFF9 */ bgtz $s0, .L802004F8 -/* 09F364 802DFB64 0200A025 */ move $s4, $s0 -.L80200518: -/* 09F368 802DFB68 8FAF0060 */ lw $t7, 0x60($sp) -/* 09F36C 802DFB6C 3C190700 */ lui $t9, 0x700 -/* 09F370 802DFB70 0220F025 */ move $fp, $s1 -/* 09F374 802DFB74 25F80008 */ addiu $t8, $t7, 8 -/* 09F378 802DFB78 AFB80048 */ sw $t8, 0x48($sp) -/* 09F37C 802DFB7C ADE00004 */ sw $zero, 4($t7) -/* 09F380 802DFB80 ADF90000 */ sw $t9, ($t7) -/* 09F384 802DFB84 86D4000C */ lh $s4, 0xc($s6) -/* 09F388 802DFB88 8FB50040 */ lw $s5, 0x40($sp) -/* 09F38C 802DFB8C 01E01025 */ move $v0, $t7 -/* 09F390 802DFB90 1A800056 */ blez $s4, .L8020069C -.L80200544: -/* 09F394 802DFB94 24010001 */ li $at, 1 -/* 09F398 802DFB98 86D2000C */ lh $s2, 0xc($s6) -/* 09F39C 802DFB9C 1681000B */ bne $s4, $at, .L8020057C -/* 09F3A0 802DFBA0 00008825 */ move $s1, $zero -/* 09F3A4 802DFBA4 3C098022 */ lui $t1, %hi(gLeftVolRampings) # $t1, 0x8022 -/* 09F3A8 802DFBA8 3C0B8022 */ lui $t3, %hi(gRightVolRampings) # $t3, 0x8022 -/* 09F3AC 802DFBAC 256BF5E8 */ addiu $t3, %lo(gRightVolRampings) # addiu $t3, $t3, -0xa18 -/* 09F3B0 802DFBB0 2529C5E8 */ addiu $t1, %lo(gLeftVolRampings) # addiu $t1, $t1, -0x3a18 -/* 09F3B4 802DFBB4 00154300 */ sll $t0, $s5, 0xc -/* 09F3B8 802DFBB8 00155300 */ sll $t2, $s5, 0xc -/* 09F3BC 802DFBBC 014B2021 */ addu $a0, $t2, $t3 -/* 09F3C0 802DFBC0 01091821 */ addu $v1, $t0, $t1 -/* 09F3C4 802DFBC4 10000026 */ b .L80200610 -/* 09F3C8 802DFBC8 02E09825 */ move $s3, $s7 -.L8020057C: -/* 09F3CC 802DFBCC 02F4001A */ div $zero, $s7, $s4 -/* 09F3D0 802DFBD0 16800002 */ bnez $s4, .L8020058C -/* 09F3D4 802DFBD4 00000000 */ nop -/* 09F3D8 802DFBD8 0007000D */ break 7 -.L8020058C: -/* 09F3DC 802DFBDC 2401FFFF */ li $at, -1 -/* 09F3E0 802DFBE0 16810004 */ bne $s4, $at, .L802005A4 -/* 09F3E4 802DFBE4 3C018000 */ lui $at, 0x8000 -/* 09F3E8 802DFBE8 16E10002 */ bne $s7, $at, .L802005A4 -/* 09F3EC 802DFBEC 00000000 */ nop -/* 09F3F0 802DFBF0 0006000D */ break 6 -.L802005A4: -/* 09F3F4 802DFBF4 86C50010 */ lh $a1, 0x10($s6) -/* 09F3F8 802DFBF8 00001012 */ mflo $v0 -/* 09F3FC 802DFBFC 24150002 */ li $s5, 2 -/* 09F400 802DFC00 0045082A */ slt $at, $v0, $a1 -/* 09F404 802DFC04 14200006 */ bnez $at, .L802005D0 -/* 09F408 802DFC08 00A09825 */ move $s3, $a1 -/* 09F40C 802DFC0C 3C038022 */ lui $v1, %hi(gLeftVolRampings + 0x2000) # $v1, 0x8022 -/* 09F410 802DFC10 3C048022 */ lui $a0, %hi(gRightVolRampings + 0x2000) # $a0, 0x8022 -/* 09F414 802DFC14 248415E8 */ addiu $a0, %lo(gRightVolRampings + 0x2000) # addiu $a0, $a0, 0x15e8 -/* 09F418 802DFC18 10000011 */ b .L80200610 -/* 09F41C 802DFC1C 2463E5E8 */ addiu $v1, %lo(gLeftVolRampings + 0x2000) # addiu $v1, $v1, -0x1a18 -.L802005D0: -/* 09F420 802DFC20 86C50012 */ lh $a1, 0x12($s6) -/* 09F424 802DFC24 3C038022 */ lui $v1, %hi(gLeftVolRampings + 0x1000) # $v1, 0x8022 -/* 09F428 802DFC28 2463D5E8 */ addiu $v1, %lo(gLeftVolRampings + 0x1000) # addiu $v1, $v1, -0x2a18 -/* 09F42C 802DFC2C 00A2082A */ slt $at, $a1, $v0 -/* 09F430 802DFC30 14200008 */ bnez $at, .L80200604 -/* 09F434 802DFC34 24150001 */ li $s5, 1 -/* 09F438 802DFC38 3C038022 */ lui $v1, %hi(gLeftVolRampings) # $v1, 0x8022 -/* 09F43C 802DFC3C 3C048022 */ lui $a0, %hi(gRightVolRampings) # $a0, 0x8022 -/* 09F440 802DFC40 2484F5E8 */ addiu $a0, %lo(gRightVolRampings) # addiu $a0, $a0, -0xa18 -/* 09F444 802DFC44 2463C5E8 */ addiu $v1, %lo(gLeftVolRampings) # addiu $v1, $v1, -0x3a18 -/* 09F448 802DFC48 00A09825 */ move $s3, $a1 -/* 09F44C 802DFC4C 10000004 */ b .L80200610 -/* 09F450 802DFC50 0000A825 */ move $s5, $zero -.L80200604: -/* 09F454 802DFC54 3C048022 */ lui $a0, %hi(gRightVolRampings + 0x1000) # $a0, 0x8022 -/* 09F458 802DFC58 248405E8 */ addiu $a0, %lo(gRightVolRampings + 0x1000) # addiu $a0, $a0, 0x5e8 -/* 09F45C 802DFC5C 86D3000E */ lh $s3, 0xe($s6) -.L80200610: -/* 09F460 802DFC60 3C028022 */ lui $v0, %hi(gNumSynthesisReverbs) # $v0, 0x8022 -/* 09F464 802DFC64 8042C5E3 */ lb $v0, %lo(gNumSynthesisReverbs)($v0) -/* 09F468 802DFC68 3C018022 */ lui $at, %hi(gCurrentLeftVolRamping) # $at, 0x8022 -/* 09F46C 802DFC6C AC2325E8 */ sw $v1, %lo(gCurrentLeftVolRamping)($at) -/* 09F470 802DFC70 3C018022 */ lui $at, %hi(gCurrentRightVolRamping) # $at, 0x8022 -/* 09F474 802DFC74 18400011 */ blez $v0, .L8020066C -/* 09F478 802DFC78 AC2425EC */ sw $a0, %lo(gCurrentRightVolRamping)($at) -/* 09F47C 802DFC7C 3C108022 */ lui $s0, %hi(gSynthesisReverbs) # $s0, 0x8022 -/* 09F480 802DFC80 2610C1B0 */ addiu $s0, %lo(gSynthesisReverbs) # addiu $s0, $s0, -0x3e50 -.L80200634: -/* 09F484 802DFC84 920C0001 */ lbu $t4, 1($s0) -/* 09F488 802DFC88 02602025 */ move $a0, $s3 -/* 09F48C 802DFC8C 02542823 */ subu $a1, $s2, $s4 -/* 09F490 802DFC90 51800007 */ beql $t4, $zero, .L80200660 -/* 09F494 802DFC94 26310001 */ addiu $s1, $s1, 1 -/* 09F498 802DFC98 0C0B7D94 */ jal prepare_reverb_ring_buffer -/* 09F49C 802DFC9C 02203025 */ move $a2, $s1 -/* 09F4A0 802DFCA0 3C028022 */ lui $v0, %hi(gNumSynthesisReverbs) # $v0, 0x8022 -/* 09F4A4 802DFCA4 8042C5E3 */ lb $v0, %lo(gNumSynthesisReverbs)($v0) -/* 09F4A8 802DFCA8 86D2000C */ lh $s2, 0xc($s6) -/* 09F4AC 802DFCAC 26310001 */ addiu $s1, $s1, 1 -.L80200660: -/* 09F4B0 802DFCB0 0222082A */ slt $at, $s1, $v0 -/* 09F4B4 802DFCB4 1420FFF3 */ bnez $at, .L80200634 -/* 09F4B8 802DFCB8 26100108 */ addiu $s0, $s0, 0x108 -.L8020066C: -/* 09F4BC 802DFCBC 03C02025 */ move $a0, $fp -/* 09F4C0 802DFCC0 02602825 */ move $a1, $s3 -/* 09F4C4 802DFCC4 8FA60048 */ lw $a2, 0x48($sp) -/* 09F4C8 802DFCC8 0C0B808A */ jal synthesis_do_one_audio_update -/* 09F4CC 802DFCCC 02543823 */ subu $a3, $s2, $s4 -/* 09F4D0 802DFCD0 2694FFFF */ addiu $s4, $s4, -1 -/* 09F4D4 802DFCD4 00136880 */ sll $t5, $s3, 2 -/* 09F4D8 802DFCD8 AFA20048 */ sw $v0, 0x48($sp) -/* 09F4DC 802DFCDC 02F3B823 */ subu $s7, $s7, $s3 -/* 09F4E0 802DFCE0 1E80FFAC */ bgtz $s4, .L80200544 -/* 09F4E4 802DFCE4 03CDF021 */ addu $fp, $fp, $t5 -/* 09F4E8 802DFCE8 AFB50040 */ sw $s5, 0x40($sp) -.L8020069C: -/* 09F4EC 802DFCEC 3C028022 */ lui $v0, %hi(gNumSynthesisReverbs) # $v0, 0x8022 -/* 09F4F0 802DFCF0 8042C5E3 */ lb $v0, %lo(gNumSynthesisReverbs)($v0) -/* 09F4F4 802DFCF4 3C0E8022 */ lui $t6, %hi(gSynthesisReverbs) -/* 09F4F8 802DFCF8 25D0C1B0 */ addiu $s0, $t6, %lo(gSynthesisReverbs) -/* 09F4FC 802DFCFC 1840000E */ blez $v0, .L802006E8 -/* 09F500 802DFD00 00027940 */ sll $t7, $v0, 5 -/* 09F504 802DFD04 01E27821 */ addu $t7, $t7, $v0 -/* 09F508 802DFD08 000F78C0 */ sll $t7, $t7, 3 -/* 09F50C 802DFD0C 01F01821 */ addu $v1, $t7, $s0 -.L802006C0: -/* 09F510 802DFD10 92020002 */ lbu $v0, 2($s0) -/* 09F514 802DFD14 10400002 */ beqz $v0, .L802006D0 -/* 09F518 802DFD18 2458FFFF */ addiu $t8, $v0, -1 -/* 09F51C 802DFD1C A2180002 */ sb $t8, 2($s0) -.L802006D0: -/* 09F520 802DFD20 92190003 */ lbu $t9, 3($s0) -/* 09F524 802DFD24 26100108 */ addiu $s0, $s0, 0x108 -/* 09F528 802DFD28 0203082B */ sltu $at, $s0, $v1 -/* 09F52C 802DFD2C 3B280001 */ xori $t0, $t9, 1 -/* 09F530 802DFD30 1420FFF7 */ bnez $at, .L802006C0 -/* 09F534 802DFD34 A208FEFB */ sb $t0, -0x105($s0) -.L802006E8: -/* 09F538 802DFD38 8FA20048 */ lw $v0, 0x48($sp) -/* 09F53C 802DFD3C 8FAA0060 */ lw $t2, 0x60($sp) -/* 09F540 802DFD40 8FAD0064 */ lw $t5, 0x64($sp) -/* 09F544 802DFD44 004A5823 */ subu $t3, $v0, $t2 -/* 09F548 802DFD48 000B60C3 */ sra $t4, $t3, 3 -/* 09F54C 802DFD4C ADAC0000 */ sw $t4, ($t5) -/* 09F550 802DFD50 8FBF003C */ lw $ra, 0x3c($sp) -/* 09F554 802DFD54 8FBE0038 */ lw $fp, 0x38($sp) -/* 09F558 802DFD58 8FB70034 */ lw $s7, 0x34($sp) -/* 09F55C 802DFD5C 8FB60030 */ lw $s6, 0x30($sp) -/* 09F560 802DFD60 8FB5002C */ lw $s5, 0x2c($sp) -/* 09F564 802DFD64 8FB40028 */ lw $s4, 0x28($sp) -/* 09F568 802DFD68 8FB30024 */ lw $s3, 0x24($sp) -/* 09F56C 802DFD6C 8FB20020 */ lw $s2, 0x20($sp) -/* 09F570 802DFD70 8FB1001C */ lw $s1, 0x1c($sp) -/* 09F574 802DFD74 8FB00018 */ lw $s0, 0x18($sp) -/* 09F578 802DFD78 03E00008 */ jr $ra -/* 09F57C 802DFD7C 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/non_matchings/eu/audio/synthesis_resample_and_mix_reverb.s b/asm/non_matchings/eu/audio/synthesis_resample_and_mix_reverb.s deleted file mode 100644 index 46b68a81..00000000 --- a/asm/non_matchings/eu/audio/synthesis_resample_and_mix_reverb.s +++ /dev/null @@ -1,220 +0,0 @@ -glabel synthesis_resample_and_mix_reverb -/* 09F580 802DFD80 27BDFFA0 */ addiu $sp, $sp, -0x60 -/* 09F584 802DFD84 AFB10020 */ sw $s1, 0x20($sp) -/* 09F588 802DFD88 00068C00 */ sll $s1, $a2, 0x10 -/* 09F58C 802DFD8C 00117403 */ sra $t6, $s1, 0x10 -/* 09F590 802DFD90 000EC940 */ sll $t9, $t6, 5 -/* 09F594 802DFD94 032EC821 */ addu $t9, $t9, $t6 -/* 09F598 802DFD98 3C0D8022 */ lui $t5, %hi(gSynthesisReverbs) # $t5, 0x8022 -/* 09F59C 802DFD9C 25ADC1B0 */ addiu $t5, %lo(gSynthesisReverbs) # addiu $t5, $t5, -0x3e50 -/* 09F5A0 802DFDA0 0019C8C0 */ sll $t9, $t9, 3 -/* 09F5A4 802DFDA4 01C08825 */ move $s1, $t6 -/* 09F5A8 802DFDA8 032D1821 */ addu $v1, $t9, $t5 -/* 09F5AC 802DFDAC 906E0003 */ lbu $t6, 3($v1) -/* 09F5B0 802DFDB0 AFA7006C */ sw $a3, 0x6c($sp) -/* 09F5B4 802DFDB4 00077C00 */ sll $t7, $a3, 0x10 -/* 09F5B8 802DFDB8 000F3C03 */ sra $a3, $t7, 0x10 -/* 09F5BC 802DFDBC 000E7880 */ sll $t7, $t6, 2 -/* 09F5C0 802DFDC0 01EE7823 */ subu $t7, $t7, $t6 -/* 09F5C4 802DFDC4 000F78C0 */ sll $t7, $t7, 3 -/* 09F5C8 802DFDC8 01EE7821 */ addu $t7, $t7, $t6 -/* 09F5CC 802DFDCC AFBF0024 */ sw $ra, 0x24($sp) -/* 09F5D0 802DFDD0 AFB0001C */ sw $s0, 0x1c($sp) -/* 09F5D4 802DFDD4 AFA50064 */ sw $a1, 0x64($sp) -/* 09F5D8 802DFDD8 AFA60068 */ sw $a2, 0x68($sp) -/* 09F5DC 802DFDDC 3C0D0200 */ lui $t5, (0x02000740 >> 16) # lui $t5, 0x200 -/* 09F5E0 802DFDE0 000F7880 */ sll $t7, $t7, 2 -/* 09F5E4 802DFDE4 35AD0740 */ ori $t5, (0x02000740 & 0xFFFF) # ori $t5, $t5, 0x740 -/* 09F5E8 802DFDE8 240E0280 */ li $t6, 640 -/* 09F5EC 802DFDEC 006FC021 */ addu $t8, $v1, $t7 -/* 09F5F0 802DFDF0 0007C880 */ sll $t9, $a3, 2 -/* 09F5F4 802DFDF4 AC8E0004 */ sw $t6, 4($a0) -/* 09F5F8 802DFDF8 AC8D0000 */ sw $t5, ($a0) -/* 09F5FC 802DFDFC 906F0004 */ lbu $t7, 4($v1) -/* 09F600 802DFE00 0327C821 */ addu $t9, $t9, $a3 -/* 09F604 802DFE04 0019C880 */ sll $t9, $t9, 2 -/* 09F608 802DFE08 03194021 */ addu $t0, $t8, $t9 -/* 09F60C 802DFE0C 24010001 */ li $at, 1 -/* 09F610 802DFE10 25080030 */ addiu $t0, $t0, 0x30 -/* 09F614 802DFE14 15E10033 */ bne $t7, $at, .L80200894 -/* 09F618 802DFE18 24900008 */ addiu $s0, $a0, 8 -/* 09F61C 802DFE1C 9506000E */ lhu $a2, 0xe($t0) -/* 09F620 802DFE20 85070010 */ lh $a3, 0x10($t0) -/* 09F624 802DFE24 AFA8005C */ sw $t0, 0x5c($sp) -/* 09F628 802DFE28 AFA30028 */ sw $v1, 0x28($sp) -/* 09F62C 802DFE2C AFB10010 */ sw $s1, 0x10($sp) -/* 09F630 802DFE30 02002025 */ move $a0, $s0 -/* 09F634 802DFE34 0C0B7E39 */ jal synthesis_load_reverb_ring_buffer -/* 09F638 802DFE38 24050740 */ li $a1, 1856 -/* 09F63C 802DFE3C 8FA8005C */ lw $t0, 0x5c($sp) -/* 09F640 802DFE40 00408025 */ move $s0, $v0 -/* 09F644 802DFE44 8FA30028 */ lw $v1, 0x28($sp) -/* 09F648 802DFE48 85070012 */ lh $a3, 0x12($t0) -/* 09F64C 802DFE4C 02002025 */ move $a0, $s0 -/* 09F650 802DFE50 00003025 */ move $a2, $zero -/* 09F654 802DFE54 50E0000A */ beql $a3, $zero, .L80200830 -/* 09F658 802DFE58 3C0A0800 */ lui $t2, 0x800 -/* 09F65C 802DFE5C 85050010 */ lh $a1, 0x10($t0) -/* 09F660 802DFE60 AFA30028 */ sw $v1, 0x28($sp) -/* 09F664 802DFE64 AFB10010 */ sw $s1, 0x10($sp) -/* 09F668 802DFE68 24A50740 */ addiu $a1, $a1, 0x740 -/* 09F66C 802DFE6C 30B8FFFF */ andi $t8, $a1, 0xffff -/* 09F670 802DFE70 0C0B7E39 */ jal synthesis_load_reverb_ring_buffer -/* 09F674 802DFE74 03002825 */ move $a1, $t8 -/* 09F678 802DFE78 8FA30028 */ lw $v1, 0x28($sp) -/* 09F67C 802DFE7C 3C0A0800 */ lui $t2, 0x800 -.L80200830: -/* 09F680 802DFE80 24500008 */ addiu $s0, $v0, 8 -/* 09F684 802DFE84 24190280 */ li $t9, 640 -/* 09F688 802DFE88 AC590004 */ sw $t9, 4($v0) -/* 09F68C 802DFE8C AC4A0000 */ sw $t2, ($v0) -/* 09F690 802DFE90 02002825 */ move $a1, $s0 -/* 09F694 802DFE94 3C0D0C00 */ lui $t5, (0x0C007FFF >> 16) # lui $t5, 0xc00 -/* 09F698 802DFE98 3C0E0740 */ lui $t6, (0x074004C0 >> 16) # lui $t6, 0x740 -/* 09F69C 802DFE9C 35CE04C0 */ ori $t6, (0x074004C0 & 0xFFFF) # ori $t6, $t6, 0x4c0 -/* 09F6A0 802DFEA0 35AD7FFF */ ori $t5, (0x0C007FFF & 0xFFFF) # ori $t5, $t5, 0x7fff -/* 09F6A4 802DFEA4 ACAD0000 */ sw $t5, ($a1) -/* 09F6A8 802DFEA8 ACAE0004 */ sw $t6, 4($a1) -/* 09F6AC 802DFEAC 946F0008 */ lhu $t7, 8($v1) -/* 09F6B0 802DFEB0 34018000 */ li $at, 32768 -/* 09F6B4 802DFEB4 26100008 */ addiu $s0, $s0, 8 -/* 09F6B8 802DFEB8 01E1C021 */ addu $t8, $t7, $at -/* 09F6BC 802DFEBC 3319FFFF */ andi $t9, $t8, 0xffff -/* 09F6C0 802DFEC0 3C010C00 */ lui $at, 0xc00 -/* 09F6C4 802DFEC4 02003025 */ move $a2, $s0 -/* 09F6C8 802DFEC8 3C0E0740 */ lui $t6, (0x07400740 >> 16) # lui $t6, 0x740 -/* 09F6CC 802DFECC 35CE0740 */ ori $t6, (0x07400740 & 0xFFFF) # ori $t6, $t6, 0x740 -/* 09F6D0 802DFED0 03216825 */ or $t5, $t9, $at -/* 09F6D4 802DFED4 ACCD0000 */ sw $t5, ($a2) -/* 09F6D8 802DFED8 ACCE0004 */ sw $t6, 4($a2) -/* 09F6DC 802DFEDC 10000078 */ b .L80200A70 -/* 09F6E0 802DFEE0 26100008 */ addiu $s0, $s0, 8 -.L80200894: -/* 09F6E4 802DFEE4 8D02000C */ lw $v0, 0xc($t0) -/* 09F6E8 802DFEE8 850D0010 */ lh $t5, 0x10($t0) -/* 09F6EC 802DFEEC 2401FFF0 */ li $at, -16 -/* 09F6F0 802DFEF0 304F0007 */ andi $t7, $v0, 7 -/* 09F6F4 802DFEF4 000FC440 */ sll $t8, $t7, 0x11 -/* 09F6F8 802DFEF8 0018CC03 */ sra $t9, $t8, 0x10 -/* 09F6FC 802DFEFC 032D5021 */ addu $t2, $t9, $t5 -/* 09F700 802DFF00 254A000F */ addiu $t2, $t2, 0xf -/* 09F704 802DFF04 03204825 */ move $t1, $t9 -/* 09F708 802DFF08 314EFFF0 */ andi $t6, $t2, 0xfff0 -/* 09F70C 802DFF0C 000E7C00 */ sll $t7, $t6, 0x10 -/* 09F710 802DFF10 000FC403 */ sra $t8, $t7, 0x10 -/* 09F714 802DFF14 03005025 */ move $t2, $t8 -/* 09F718 802DFF18 A7AA0058 */ sh $t2, 0x58($sp) -/* 09F71C 802DFF1C A7A9005A */ sh $t1, 0x5a($sp) -/* 09F720 802DFF20 AFA8005C */ sw $t0, 0x5c($sp) -/* 09F724 802DFF24 AFA30028 */ sw $v1, 0x28($sp) -/* 09F728 802DFF28 AFB10010 */ sw $s1, 0x10($sp) -/* 09F72C 802DFF2C 02002025 */ move $a0, $s0 -/* 09F730 802DFF30 24050020 */ li $a1, 32 -/* 09F734 802DFF34 05210003 */ bgez $t1, .L802008F4 -/* 09F738 802DFF38 0009C843 */ sra $t9, $t1, 1 -/* 09F73C 802DFF3C 25210001 */ addiu $at, $t1, 1 -/* 09F740 802DFF40 0001C843 */ sra $t9, $at, 1 -.L802008F4: -/* 09F744 802DFF44 00593023 */ subu $a2, $v0, $t9 -/* 09F748 802DFF48 30CDFFFF */ andi $t5, $a2, 0xffff -/* 09F74C 802DFF4C 01A03025 */ move $a2, $t5 -/* 09F750 802DFF50 0C0B7E39 */ jal synthesis_load_reverb_ring_buffer -/* 09F754 802DFF54 24070140 */ li $a3, 320 -/* 09F758 802DFF58 8FA8005C */ lw $t0, 0x5c($sp) -/* 09F75C 802DFF5C 00408025 */ move $s0, $v0 -/* 09F760 802DFF60 8FA30028 */ lw $v1, 0x28($sp) -/* 09F764 802DFF64 850E0012 */ lh $t6, 0x12($t0) -/* 09F768 802DFF68 87A9005A */ lh $t1, 0x5a($sp) -/* 09F76C 802DFF6C 87AA0058 */ lh $t2, 0x58($sp) -/* 09F770 802DFF70 11C0000D */ beqz $t6, .L80200958 -/* 09F774 802DFF74 02002025 */ move $a0, $s0 -/* 09F778 802DFF78 25450020 */ addiu $a1, $t2, 0x20 -/* 09F77C 802DFF7C 30AFFFFF */ andi $t7, $a1, 0xffff -/* 09F780 802DFF80 24180140 */ li $t8, 320 -/* 09F784 802DFF84 030A3823 */ subu $a3, $t8, $t2 -/* 09F788 802DFF88 01E02825 */ move $a1, $t7 -/* 09F78C 802DFF8C 00003025 */ move $a2, $zero -/* 09F790 802DFF90 AFB10010 */ sw $s1, 0x10($sp) -/* 09F794 802DFF94 AFA30028 */ sw $v1, 0x28($sp) -/* 09F798 802DFF98 0C0B7E39 */ jal synthesis_load_reverb_ring_buffer -/* 09F79C 802DFF9C A7A9005A */ sh $t1, 0x5a($sp) -/* 09F7A0 802DFFA0 8FA30028 */ lw $v1, 0x28($sp) -/* 09F7A4 802DFFA4 87A9005A */ lh $t1, 0x5a($sp) -.L80200958: -/* 09F7A8 802DFFA8 25390020 */ addiu $t9, $t1, 0x20 -/* 09F7AC 802DFFAC 3C0A0800 */ lui $t2, 0x800 -/* 09F7B0 802DFFB0 332DFFFF */ andi $t5, $t9, 0xffff -/* 09F7B4 802DFFB4 01AA7025 */ or $t6, $t5, $t2 -/* 09F7B8 802DFFB8 AC4E0000 */ sw $t6, ($v0) -/* 09F7BC 802DFFBC 8FA50064 */ lw $a1, 0x64($sp) -/* 09F7C0 802DFFC0 3C010740 */ lui $at, 0x740 -/* 09F7C4 802DFFC4 3C0B0500 */ lui $t3, 0x500 -/* 09F7C8 802DFFC8 00057840 */ sll $t7, $a1, 1 -/* 09F7CC 802DFFCC 31E5FFFF */ andi $a1, $t7, 0xffff -/* 09F7D0 802DFFD0 00A1C825 */ or $t9, $a1, $at -/* 09F7D4 802DFFD4 AC590004 */ sw $t9, 4($v0) -/* 09F7D8 802DFFD8 90790000 */ lbu $t9, ($v1) -/* 09F7DC 802DFFDC 946E000A */ lhu $t6, 0xa($v1) -/* 09F7E0 802DFFE0 24500008 */ addiu $s0, $v0, 8 -/* 09F7E4 802DFFE4 00196C00 */ sll $t5, $t9, 0x10 -/* 09F7E8 802DFFE8 01CB7825 */ or $t7, $t6, $t3 -/* 09F7EC 802DFFEC 01ED7025 */ or $t6, $t7, $t5 -/* 09F7F0 802DFFF0 02003025 */ move $a2, $s0 -/* 09F7F4 802DFFF4 ACCE0000 */ sw $t6, ($a2) -/* 09F7F8 802DFFF8 8C780020 */ lw $t8, 0x20($v1) -/* 09F7FC 802DFFFC 3C0C8000 */ lui $t4, 0x8000 -/* 09F800 802E0000 26100008 */ addiu $s0, $s0, 8 -/* 09F804 802E0004 252F0160 */ addiu $t7, $t1, 0x160 -/* 09F808 802E0008 030CC821 */ addu $t9, $t8, $t4 -/* 09F80C 802E000C ACD90004 */ sw $t9, 4($a2) -/* 09F810 802E0010 31EDFFFF */ andi $t5, $t7, 0xffff -/* 09F814 802E0014 02003825 */ move $a3, $s0 -/* 09F818 802E0018 3C010880 */ lui $at, 0x880 -/* 09F81C 802E001C 00A1C025 */ or $t8, $a1, $at -/* 09F820 802E0020 01AA7025 */ or $t6, $t5, $t2 -/* 09F824 802E0024 ACEE0000 */ sw $t6, ($a3) -/* 09F828 802E0028 ACF80004 */ sw $t8, 4($a3) -/* 09F82C 802E002C 90780000 */ lbu $t8, ($v1) -/* 09F830 802E0030 946F000A */ lhu $t7, 0xa($v1) -/* 09F834 802E0034 26100008 */ addiu $s0, $s0, 8 -/* 09F838 802E0038 0018CC00 */ sll $t9, $t8, 0x10 -/* 09F83C 802E003C 01EB6825 */ or $t5, $t7, $t3 -/* 09F840 802E0040 01B97825 */ or $t7, $t5, $t9 -/* 09F844 802E0044 02004025 */ move $t0, $s0 -/* 09F848 802E0048 AD0F0000 */ sw $t7, ($t0) -/* 09F84C 802E004C 8C6E0024 */ lw $t6, 0x24($v1) -/* 09F850 802E0050 26100008 */ addiu $s0, $s0, 8 -/* 09F854 802E0054 02001025 */ move $v0, $s0 -/* 09F858 802E0058 01CCC021 */ addu $t8, $t6, $t4 -/* 09F85C 802E005C AD180004 */ sw $t8, 4($t0) -/* 09F860 802E0060 26100008 */ addiu $s0, $s0, 8 -/* 09F864 802E0064 240D0280 */ li $t5, 640 -/* 09F868 802E0068 AC4D0004 */ sw $t5, 4($v0) -/* 09F86C 802E006C AC4A0000 */ sw $t2, ($v0) -/* 09F870 802E0070 02002025 */ move $a0, $s0 -/* 09F874 802E0074 3C0F0740 */ lui $t7, (0x074004C0 >> 16) # lui $t7, 0x740 -/* 09F878 802E0078 3C190C00 */ lui $t9, (0x0C007FFF >> 16) # lui $t9, 0xc00 -/* 09F87C 802E007C 37397FFF */ ori $t9, (0x0C007FFF & 0xFFFF) # ori $t9, $t9, 0x7fff -/* 09F880 802E0080 35EF04C0 */ ori $t7, (0x074004C0 & 0xFFFF) # ori $t7, $t7, 0x4c0 -/* 09F884 802E0084 AC8F0004 */ sw $t7, 4($a0) -/* 09F888 802E0088 AC990000 */ sw $t9, ($a0) -/* 09F88C 802E008C 946E0008 */ lhu $t6, 8($v1) -/* 09F890 802E0090 34018000 */ li $at, 32768 -/* 09F894 802E0094 26100008 */ addiu $s0, $s0, 8 -/* 09F898 802E0098 01C1C021 */ addu $t8, $t6, $at -/* 09F89C 802E009C 02002825 */ move $a1, $s0 -/* 09F8A0 802E00A0 330DFFFF */ andi $t5, $t8, 0xffff -/* 09F8A4 802E00A4 3C010C00 */ lui $at, 0xc00 -/* 09F8A8 802E00A8 3C0F0740 */ lui $t7, (0x07400740 >> 16) # lui $t7, 0x740 -/* 09F8AC 802E00AC 35EF0740 */ ori $t7, (0x07400740 & 0xFFFF) # ori $t7, $t7, 0x740 -/* 09F8B0 802E00B0 01A1C825 */ or $t9, $t5, $at -/* 09F8B4 802E00B4 ACB90000 */ sw $t9, ($a1) -/* 09F8B8 802E00B8 ACAF0004 */ sw $t7, 4($a1) -/* 09F8BC 802E00BC 26100008 */ addiu $s0, $s0, 8 -.L80200A70: -/* 09F8C0 802E00C0 8FBF0024 */ lw $ra, 0x24($sp) -/* 09F8C4 802E00C4 02001025 */ move $v0, $s0 -/* 09F8C8 802E00C8 8FB0001C */ lw $s0, 0x1c($sp) -/* 09F8CC 802E00CC 8FB10020 */ lw $s1, 0x20($sp) -/* 09F8D0 802E00D0 03E00008 */ jr $ra -/* 09F8D4 802E00D4 27BD0060 */ addiu $sp, $sp, 0x60 diff --git a/asm/non_matchings/eu/handle_dialog_text_and_pages.s b/asm/non_matchings/eu/handle_dialog_text_and_pages.s deleted file mode 100644 index 1e154028..00000000 --- a/asm/non_matchings/eu/handle_dialog_text_and_pages.s +++ /dev/null @@ -1,370 +0,0 @@ -.late_rodata -.late_rodata_alignment 8 -glabel jtbl_803059A0 -.word L_EU_802AFB00, L_EU_802AFB18, L_EU_802AFB50, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFB88, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFB9C, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AF99C, L_EU_802AF990 - -glabel jtbl_80305A60 -.word L_EU_802AF9CC, L_EU_802AF9CC, L_EU_802AF9CC, L_EU_802AFBD0 -.word L_EU_802AF9EC, L_EU_802AF9EC, L_EU_802AF9EC, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFA0C, L_EU_802AFA0C, L_EU_802AFA0C, L_EU_802AFA0C -.word L_EU_802AFA2C, L_EU_802AFA2C, L_EU_802AFA2C, L_EU_802AFA2C -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFA4C, L_EU_802AFA4C, L_EU_802AFA4C, L_EU_802AFBD0 -.word L_EU_802AFA6C, L_EU_802AFA6C, L_EU_802AFA6C, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFA8C, L_EU_802AFA8C, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFAAC, L_EU_802AFAAC, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFBD0, L_EU_802AFAEC, L_EU_802AFBD0 -.word L_EU_802AFBD0, L_EU_802AFACC, L_EU_802AFACC - -.text -glabel handle_dialog_text_and_pages # EU: func_802AF808 -/* 06F008 802AF808 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 06F00C 802AF80C AFB50034 */ sw $s5, 0x34($sp) -/* 06F010 802AF810 0006AE00 */ sll $s5, $a2, 0x18 -/* 06F014 802AF814 00157603 */ sra $t6, $s5, 0x18 -/* 06F018 802AF818 AFBF0044 */ sw $ra, 0x44($sp) -/* 06F01C 802AF81C AFBE0040 */ sw $fp, 0x40($sp) -/* 06F020 802AF820 AFB7003C */ sw $s7, 0x3c($sp) -/* 06F024 802AF824 AFB60038 */ sw $s6, 0x38($sp) -/* 06F028 802AF828 AFB40030 */ sw $s4, 0x30($sp) -/* 06F02C 802AF82C AFB3002C */ sw $s3, 0x2c($sp) -/* 06F030 802AF830 AFB20028 */ sw $s2, 0x28($sp) -/* 06F034 802AF834 AFB10024 */ sw $s1, 0x24($sp) -/* 06F038 802AF838 AFB00020 */ sw $s0, 0x20($sp) -/* 06F03C 802AF83C AFA40070 */ sw $a0, 0x70($sp) -/* 06F040 802AF840 AFA60078 */ sw $a2, 0x78($sp) -/* 06F044 802AF844 00A08825 */ move $s1, $a1 -/* 06F048 802AF848 01C0A825 */ move $s5, $t6 -/* 06F04C 802AF84C 0C09A4BC */ jal segmented_to_virtual -/* 06F050 802AF850 8CA4000C */ lw $a0, 0xc($a1) -/* 06F054 802AF854 3C088030 */ lui $t0, %hi(gDialogBoxState) # $t0, 0x8030 -/* 06F058 802AF858 2508D630 */ addiu $t0, %lo(gDialogBoxState) # addiu $t0, $t0, -0x29d0 -/* 06F05C 802AF85C 81180000 */ lb $t8, ($t0) -/* 06F060 802AF860 240F0001 */ li $t7, 1 -/* 06F064 802AF864 24070002 */ li $a3, 2 -/* 06F068 802AF868 AFA20060 */ sw $v0, 0x60($sp) -/* 06F06C 802AF86C A3A0005D */ sb $zero, 0x5d($sp) -/* 06F070 802AF870 A3AF005B */ sb $t7, 0x5b($sp) -/* 06F074 802AF874 24130001 */ li $s3, 1 -/* 06F078 802AF878 14F80005 */ bne $a3, $t8, .L802AF890 -/* 06F07C 802AF87C 82360004 */ lb $s6, 4($s1) -/* 06F080 802AF880 0016C840 */ sll $t9, $s6, 1 -/* 06F084 802AF884 27290001 */ addiu $t1, $t9, 1 -/* 06F088 802AF888 10000003 */ b .L802AF898 -/* 06F08C 802AF88C A3A9005E */ sb $t1, 0x5e($sp) -.L802AF890: -/* 06F090 802AF890 26CA0001 */ addiu $t2, $s6, 1 -/* 06F094 802AF894 A3AA005E */ sb $t2, 0x5e($sp) -.L802AF898: -/* 06F098 802AF898 3C068031 */ lui $a2, %hi(gDisplayListHead) # $a2, 0x8031 -/* 06F09C 802AF89C 24C692A8 */ addiu $a2, %lo(gDisplayListHead) # addiu $a2, $a2, -0x6d58 -/* 06F0A0 802AF8A0 8CC30000 */ lw $v1, ($a2) -/* 06F0A4 802AF8A4 3C0D0200 */ lui $t5, %hi(dl_ia_text_begin) # $t5, 0x200 -/* 06F0A8 802AF8A8 25AD73B0 */ addiu $t5, %lo(dl_ia_text_begin) # addiu $t5, $t5, 0x73b0 -/* 06F0AC 802AF8AC 246B0008 */ addiu $t3, $v1, 8 -/* 06F0B0 802AF8B0 ACCB0000 */ sw $t3, ($a2) -/* 06F0B4 802AF8B4 3C0C0600 */ lui $t4, 0x600 -/* 06F0B8 802AF8B8 3C128033 */ lui $s2, %hi(gDialogX) # $s2, 0x8033 -/* 06F0BC 802AF8BC 3C178030 */ lui $s7, %hi(gDialogTextPos) # $s7, 0x8030 -/* 06F0C0 802AF8C0 AC6C0000 */ sw $t4, ($v1) -/* 06F0C4 802AF8C4 AC6D0004 */ sw $t5, 4($v1) -/* 06F0C8 802AF8C8 2652F69A */ addiu $s2, %lo(gDialogX) # addiu $s2, $s2, -0x966 -/* 06F0CC 802AF8CC 86F7D64C */ lh $s7, %lo(gDialogTextPos)($s7) -/* 06F0D0 802AF8D0 A6400000 */ sh $zero, ($s2) -/* 06F0D4 802AF8D4 240E000E */ li $t6, 14 -/* 06F0D8 802AF8D8 3C018033 */ lui $at, %hi(gDialogY) # $at, 0x8033 -/* 06F0DC 802AF8DC A42EF69C */ sh $t6, %lo(gDialogY)($at) -/* 06F0E0 802AF8E0 810F0000 */ lb $t7, ($t0) -/* 06F0E4 802AF8E4 3C1E8033 */ lui $fp, %hi(gDialogY) # $fp, 0x8033 -/* 06F0E8 802AF8E8 27DEF69C */ addiu $fp, %lo(gDialogY) # addiu $fp, $fp, -0x964 -/* 06F0EC 802AF8EC 14EF0005 */ bne $a3, $t7, .L802AF904 -/* 06F0F0 802AF8F0 3C198030 */ lui $t9, %hi(gDialogScrollOffsetY) # $t9, 0x8030 -/* 06F0F4 802AF8F4 87D80000 */ lh $t8, ($fp) -/* 06F0F8 802AF8F8 8739D63C */ lh $t9, %lo(gDialogScrollOffsetY)($t9) -/* 06F0FC 802AF8FC 03194823 */ subu $t1, $t8, $t9 -/* 06F100 802AF900 A7C90000 */ sh $t1, ($fp) -.L802AF904: -/* 06F104 802AF904 83AA005D */ lb $t2, 0x5d($sp) -/* 06F108 802AF908 3C1E8033 */ lui $fp, %hi(gDialogY) # $fp, 0x8033 -/* 06F10C 802AF90C 27DEF69C */ addiu $fp, %lo(gDialogY) # addiu $fp, $fp, -0x964 -/* 06F110 802AF910 154000C8 */ bnez $t2, .L802AFC34 -/* 06F114 802AF914 3C148030 */ lui $s4, %hi(gDialogCharWidths) # $s4, 0x8030 -/* 06F118 802AF918 2694D530 */ addiu $s4, %lo(gDialogCharWidths) # addiu $s4, $s4, -0x2ad0 -.L802AF91C: -/* 06F11C 802AF91C 00132E00 */ sll $a1, $s3, 0x18 -/* 06F120 802AF920 00055E03 */ sra $t3, $a1, 0x18 -/* 06F124 802AF924 01602825 */ move $a1, $t3 -/* 06F128 802AF928 0C0ABBFE */ jal change_and_flash_dialog_text_color_lines # func_802AEFF8 -/* 06F12C 802AF92C 83A40073 */ lb $a0, 0x73($sp) -/* 06F130 802AF930 8FAC0060 */ lw $t4, 0x60($sp) -/* 06F134 802AF934 02EC6821 */ addu $t5, $s7, $t4 -/* 06F138 802AF938 91B00000 */ lbu $s0, ($t5) -/* 06F13C 802AF93C 2A0100A3 */ slti $at, $s0, 0xa3 -/* 06F140 802AF940 1420000A */ bnez $at, .L802AF96C -/* 06F144 802AF944 02001025 */ move $v0, $s0 -/* 06F148 802AF948 244EFF30 */ addiu $t6, $v0, -0xd0 -/* 06F14C 802AF94C 2DC10030 */ sltiu $at, $t6, 0x30 -/* 06F150 802AF950 1020009F */ beqz $at, .L802AFBD0 -/* 06F154 802AF954 000E7080 */ sll $t6, $t6, 2 -/* 06F158 802AF958 3C018030 */ lui $at, %hi(jtbl_803059A0) # 0x8030 -/* 06F15C 802AF95C 002E0821 */ addu $at, $at, $t6 -/* 06F160 802AF960 8C2E59A0 */ lw $t6, %lo(jtbl_803059A0)($at) # 0x59a0($at) -/* 06F164 802AF964 01C00008 */ jr $t6 -/* 06F168 802AF968 00000000 */ nop -.L802AF96C: -/* 06F16C 802AF96C 244FFFA0 */ addiu $t7, $v0, -0x60 -/* 06F170 802AF970 2DE10043 */ sltiu $at, $t7, 0x43 -/* 06F174 802AF974 10200096 */ beqz $at, .L802AFBD0 -/* 06F178 802AF978 000F7880 */ sll $t7, $t7, 2 -/* 06F17C 802AF97C 3C018030 */ lui $at, %hi(jtbl_80305A60) # 0x8030 -/* 06F180 802AF980 002F0821 */ addu $at, $at, $t7 -/* 06F184 802AF984 8C2F5A60 */ lw $t7, %lo(jtbl_80305A60)($at) # 0x5a60($at) -/* 06F188 802AF988 01E00008 */ jr $t7 -/* 06F18C 802AF98C 00000000 */ nop -glabel L_EU_802AF990 -/* 06F190 802AF990 24180002 */ li $t8, 2 -/* 06F194 802AF994 1000009D */ b .L802AFC0C -/* 06F198 802AF998 A3B8005D */ sb $t8, 0x5d($sp) -glabel L_EU_802AF99C -/* 06F19C 802AF99C 26730001 */ addiu $s3, $s3, 1 -/* 06F1A0 802AF9A0 0013CE00 */ sll $t9, $s3, 0x18 -/* 06F1A4 802AF9A4 00199E03 */ sra $s3, $t9, 0x18 -/* 06F1A8 802AF9A8 00132600 */ sll $a0, $s3, 0x18 -/* 06F1AC 802AF9AC 00045603 */ sra $t2, $a0, 0x18 -/* 06F1B0 802AF9B0 01402025 */ move $a0, $t2 -/* 06F1B4 802AF9B4 83A5005E */ lb $a1, 0x5e($sp) -/* 06F1B8 802AF9B8 27A6005D */ addiu $a2, $sp, 0x5d -/* 06F1BC 802AF9BC 0C0ABD0B */ jal handle_dialog_scroll_page_state # func_802AF42C -/* 06F1C0 802AF9C0 27A7005B */ addiu $a3, $sp, 0x5b -/* 06F1C4 802AF9C4 10000091 */ b .L802AFC0C -/* 06F1C8 802AF9C8 A6400000 */ sh $zero, ($s2) -glabel L_EU_802AF9CC -/* 06F1CC 802AF9CC 00403025 */ move $a2, $v0 -/* 06F1D0 802AF9D0 30CB000F */ andi $t3, $a2, 0xf -/* 06F1D4 802AF9D4 01603025 */ move $a2, $t3 -/* 06F1D8 802AF9D8 02202025 */ move $a0, $s1 -/* 06F1DC 802AF9DC 0C0ABDB5 */ jal render_dialog_lowercase_diacritic -/* 06F1E0 802AF9E0 24050024 */ li $a1, 36 -/* 06F1E4 802AF9E4 1000008A */ b .L802AFC10 -/* 06F1E8 802AF9E8 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AF9EC -/* 06F1EC 802AF9EC 00403025 */ move $a2, $v0 -/* 06F1F0 802AF9F0 30CC000F */ andi $t4, $a2, 0xf -/* 06F1F4 802AF9F4 01803025 */ move $a2, $t4 -/* 06F1F8 802AF9F8 02202025 */ move $a0, $s1 -/* 06F1FC 802AF9FC 0C0ABDD6 */ jal render_dialog_uppercase_diacritic -/* 06F200 802AFA00 2405000A */ li $a1, 10 -/* 06F204 802AFA04 10000082 */ b .L802AFC10 -/* 06F208 802AFA08 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFA0C -/* 06F20C 802AFA0C 00403025 */ move $a2, $v0 -/* 06F210 802AFA10 30CD000F */ andi $t5, $a2, 0xf -/* 06F214 802AFA14 01A03025 */ move $a2, $t5 -/* 06F218 802AFA18 02202025 */ move $a0, $s1 -/* 06F21C 802AFA1C 0C0ABDB5 */ jal render_dialog_lowercase_diacritic -/* 06F220 802AFA20 24050028 */ li $a1, 40 -/* 06F224 802AFA24 1000007A */ b .L802AFC10 -/* 06F228 802AFA28 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFA2C -/* 06F22C 802AFA2C 00403025 */ move $a2, $v0 -/* 06F230 802AFA30 30CE000F */ andi $t6, $a2, 0xf -/* 06F234 802AFA34 01C03025 */ move $a2, $t6 -/* 06F238 802AFA38 02202025 */ move $a0, $s1 -/* 06F23C 802AFA3C 0C0ABDD6 */ jal render_dialog_uppercase_diacritic -/* 06F240 802AFA40 2405000E */ li $a1, 14 -/* 06F244 802AFA44 10000072 */ b .L802AFC10 -/* 06F248 802AFA48 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFA4C -/* 06F24C 802AFA4C 00403025 */ move $a2, $v0 -/* 06F250 802AFA50 30CF000F */ andi $t7, $a2, 0xf -/* 06F254 802AFA54 01E03025 */ move $a2, $t7 -/* 06F258 802AFA58 02202025 */ move $a0, $s1 -/* 06F25C 802AFA5C 0C0ABDB5 */ jal render_dialog_lowercase_diacritic -/* 06F260 802AFA60 24050038 */ li $a1, 56 -/* 06F264 802AFA64 1000006A */ b .L802AFC10 -/* 06F268 802AFA68 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFA6C -/* 06F26C 802AFA6C 00403025 */ move $a2, $v0 -/* 06F270 802AFA70 30D8000F */ andi $t8, $a2, 0xf -/* 06F274 802AFA74 03003025 */ move $a2, $t8 -/* 06F278 802AFA78 02202025 */ move $a0, $s1 -/* 06F27C 802AFA7C 0C0ABDD6 */ jal render_dialog_uppercase_diacritic -/* 06F280 802AFA80 2405001E */ li $a1, 30 -/* 06F284 802AFA84 10000062 */ b .L802AFC10 -/* 06F288 802AFA88 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFA8C -/* 06F28C 802AFA8C 00403025 */ move $a2, $v0 -/* 06F290 802AFA90 30D9000F */ andi $t9, $a2, 0xf -/* 06F294 802AFA94 03203025 */ move $a2, $t9 -/* 06F298 802AFA98 02202025 */ move $a0, $s1 -/* 06F29C 802AFA9C 0C0ABDB5 */ jal render_dialog_lowercase_diacritic -/* 06F2A0 802AFAA0 24050032 */ li $a1, 50 -/* 06F2A4 802AFAA4 1000005A */ b .L802AFC10 -/* 06F2A8 802AFAA8 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFAAC -/* 06F2AC 802AFAAC 00403025 */ move $a2, $v0 -/* 06F2B0 802AFAB0 30C9000F */ andi $t1, $a2, 0xf -/* 06F2B4 802AFAB4 01203025 */ move $a2, $t1 -/* 06F2B8 802AFAB8 02202025 */ move $a0, $s1 -/* 06F2BC 802AFABC 0C0ABDD6 */ jal render_dialog_uppercase_diacritic -/* 06F2C0 802AFAC0 24050018 */ li $a1, 24 -/* 06F2C4 802AFAC4 10000052 */ b .L802AFC10 -/* 06F2C8 802AFAC8 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFACC -/* 06F2CC 802AFACC 00403025 */ move $a2, $v0 -/* 06F2D0 802AFAD0 30CA000F */ andi $t2, $a2, 0xf -/* 06F2D4 802AFAD4 01403025 */ move $a2, $t2 -/* 06F2D8 802AFAD8 02202025 */ move $a0, $s1 -/* 06F2DC 802AFADC 0C0ABDB5 */ jal render_dialog_lowercase_diacritic -/* 06F2E0 802AFAE0 240500EB */ li $a1, 235 -/* 06F2E4 802AFAE4 1000004A */ b .L802AFC10 -/* 06F2E8 802AFAE8 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFAEC -/* 06F2EC 802AFAEC 864B0000 */ lh $t3, ($s2) -/* 06F2F0 802AFAF0 928C009E */ lbu $t4, 0x9e($s4) -/* 06F2F4 802AFAF4 016C6821 */ addu $t5, $t3, $t4 -/* 06F2F8 802AFAF8 10000044 */ b .L802AFC0C -/* 06F2FC 802AFAFC A64D0000 */ sh $t5, ($s2) -glabel L_EU_802AFB00 -/* 06F300 802AFB00 928F009E */ lbu $t7, 0x9e($s4) -/* 06F304 802AFB04 864E0000 */ lh $t6, ($s2) -/* 06F308 802AFB08 000FC040 */ sll $t8, $t7, 1 -/* 06F30C 802AFB0C 01D8C821 */ addu $t9, $t6, $t8 -/* 06F310 802AFB10 1000003E */ b .L802AFC0C -/* 06F314 802AFB14 A6590000 */ sh $t9, ($s2) -glabel L_EU_802AFB18 -/* 06F318 802AFB18 00132E00 */ sll $a1, $s3, 0x18 -/* 06F31C 802AFB1C 00163600 */ sll $a2, $s6, 0x18 -/* 06F320 802AFB20 00065603 */ sra $t2, $a2, 0x18 -/* 06F324 802AFB24 00054E03 */ sra $t1, $a1, 0x18 -/* 06F328 802AFB28 01202825 */ move $a1, $t1 -/* 06F32C 802AFB2C 01403025 */ move $a2, $t2 -/* 06F330 802AFB30 00002025 */ move $a0, $zero -/* 06F334 802AFB34 83A7005B */ lb $a3, 0x5b($sp) -/* 06F338 802AFB38 AFB50010 */ sw $s5, 0x10($sp) -/* 06F33C 802AFB3C 0C0ABD64 */ jal render_multi_text_string_lines -/* 06F340 802AFB40 AFB10014 */ sw $s1, 0x14($sp) -/* 06F344 802AFB44 240B0001 */ li $t3, 1 -/* 06F348 802AFB48 10000030 */ b .L802AFC0C -/* 06F34C 802AFB4C A3AB005B */ sb $t3, 0x5b($sp) -glabel L_EU_802AFB50 -/* 06F350 802AFB50 00132E00 */ sll $a1, $s3, 0x18 -/* 06F354 802AFB54 00163600 */ sll $a2, $s6, 0x18 -/* 06F358 802AFB58 00066E03 */ sra $t5, $a2, 0x18 -/* 06F35C 802AFB5C 00056603 */ sra $t4, $a1, 0x18 -/* 06F360 802AFB60 01802825 */ move $a1, $t4 -/* 06F364 802AFB64 01A03025 */ move $a2, $t5 -/* 06F368 802AFB68 24040001 */ li $a0, 1 -/* 06F36C 802AFB6C 83A7005B */ lb $a3, 0x5b($sp) -/* 06F370 802AFB70 AFB50010 */ sw $s5, 0x10($sp) -/* 06F374 802AFB74 0C0ABD64 */ jal render_multi_text_string_lines -/* 06F378 802AFB78 AFB10014 */ sw $s1, 0x14($sp) -/* 06F37C 802AFB7C 240F0001 */ li $t7, 1 -/* 06F380 802AFB80 10000022 */ b .L802AFC0C -/* 06F384 802AFB84 A3AF005B */ sb $t7, 0x5b($sp) -glabel L_EU_802AFB88 -/* 06F388 802AFB88 02202025 */ move $a0, $s1 -/* 06F38C 802AFB8C 0C0ABD1E */ jal render_star_count_dialog_text -/* 06F390 802AFB90 27A5005B */ addiu $a1, $sp, 0x5b -/* 06F394 802AFB94 1000001E */ b .L802AFC10 -/* 06F398 802AFB98 83A9005D */ lb $t1, 0x5d($sp) -glabel L_EU_802AFB9C -/* 06F39C 802AFB9C 87C60000 */ lh $a2, ($fp) -/* 06F3A0 802AFBA0 02202025 */ move $a0, $s1 -/* 06F3A4 802AFBA4 86450000 */ lh $a1, ($s2) -/* 06F3A8 802AFBA8 24C60008 */ addiu $a2, $a2, 8 -/* 06F3AC 802AFBAC 00067400 */ sll $t6, $a2, 0x10 -/* 06F3B0 802AFBB0 000E3403 */ sra $a2, $t6, 0x10 -/* 06F3B4 802AFBB4 0C0ABC6E */ jal render_generic_dialog_char_at_pos -/* 06F3B8 802AFBB8 240700F6 */ li $a3, 246 -/* 06F3BC 802AFBBC 86590000 */ lh $t9, ($s2) -/* 06F3C0 802AFBC0 928900F6 */ lbu $t1, 0xf6($s4) -/* 06F3C4 802AFBC4 03295021 */ addu $t2, $t9, $t1 -/* 06F3C8 802AFBC8 10000010 */ b .L802AFC0C -/* 06F3CC 802AFBCC A64A0000 */ sh $t2, ($s2) -glabel L_EU_802AFBD0 -.L802AFBD0: -/* 06F3D0 802AFBD0 0275082A */ slt $at, $s3, $s5 -/* 06F3D4 802AFBD4 14200008 */ bnez $at, .L802AFBF8 -/* 06F3D8 802AFBD8 02B65821 */ addu $t3, $s5, $s6 -/* 06F3DC 802AFBDC 0173082A */ slt $at, $t3, $s3 -/* 06F3E0 802AFBE0 14200005 */ bnez $at, .L802AFBF8 -/* 06F3E4 802AFBE4 02202025 */ move $a0, $s1 -/* 06F3E8 802AFBE8 86450000 */ lh $a1, ($s2) -/* 06F3EC 802AFBEC 87C60000 */ lh $a2, ($fp) -/* 06F3F0 802AFBF0 0C0ABC6E */ jal render_generic_dialog_char_at_pos -/* 06F3F4 802AFBF4 320700FF */ andi $a3, $s0, 0xff -.L802AFBF8: -/* 06F3F8 802AFBF8 02906821 */ addu $t5, $s4, $s0 -/* 06F3FC 802AFBFC 91AF0000 */ lbu $t7, ($t5) -/* 06F400 802AFC00 864C0000 */ lh $t4, ($s2) -/* 06F404 802AFC04 018F7021 */ addu $t6, $t4, $t7 -/* 06F408 802AFC08 A64E0000 */ sh $t6, ($s2) -.L802AFC0C: -/* 06F40C 802AFC0C 83A9005D */ lb $t1, 0x5d($sp) -.L802AFC10: -/* 06F410 802AFC10 26F70001 */ addiu $s7, $s7, 1 -/* 06F414 802AFC14 0017C400 */ sll $t8, $s7, 0x10 -/* 06F418 802AFC18 1120FF40 */ beqz $t1, .L802AF91C -/* 06F41C 802AFC1C 0018BC03 */ sra $s7, $t8, 0x10 -/* 06F420 802AFC20 3C088030 */ lui $t0, %hi(gDialogBoxState) # $t0, 0x8030 -/* 06F424 802AFC24 3C068031 */ lui $a2, %hi(gDisplayListHead) # $a2, 0x8031 -/* 06F428 802AFC28 24C692A8 */ addiu $a2, %lo(gDisplayListHead) # addiu $a2, $a2, -0x6d58 -/* 06F42C 802AFC2C 2508D630 */ addiu $t0, %lo(gDialogBoxState) # addiu $t0, $t0, -0x29d0 -/* 06F430 802AFC30 24070002 */ li $a3, 2 -.L802AFC34: -/* 06F434 802AFC34 8CC30000 */ lw $v1, ($a2) -/* 06F438 802AFC38 3C0D0200 */ lui $t5, %hi(dl_ia_text_end) # $t5, 0x200 -/* 06F43C 802AFC3C 25AD7418 */ addiu $t5, %lo(dl_ia_text_end) # addiu $t5, $t5, 0x7418 -/* 06F440 802AFC40 246A0008 */ addiu $t2, $v1, 8 -/* 06F444 802AFC44 ACCA0000 */ sw $t2, ($a2) -/* 06F448 802AFC48 3C0B0600 */ lui $t3, 0x600 -/* 06F44C 802AFC4C AC6B0000 */ sw $t3, ($v1) -/* 06F450 802AFC50 AC6D0004 */ sw $t5, 4($v1) -/* 06F454 802AFC54 810C0000 */ lb $t4, ($t0) -/* 06F458 802AFC58 24010001 */ li $at, 1 -/* 06F45C 802AFC5C 83AF005D */ lb $t7, 0x5d($sp) -/* 06F460 802AFC60 55810009 */ bnel $t4, $at, .L802AFC88 -/* 06F464 802AFC64 8FBF0044 */ lw $ra, 0x44($sp) -/* 06F468 802AFC68 15E70005 */ bne $t7, $a3, .L802AFC80 -/* 06F46C 802AFC6C 3C018030 */ lui $at, %hi(gLastDialogPageStrPos) -/* 06F470 802AFC70 240EFFFF */ li $t6, -1 -/* 06F474 802AFC74 3C018030 */ lui $at, %hi(gLastDialogPageStrPos) # $at, 0x8030 -/* 06F478 802AFC78 10000002 */ b .L802AFC84 -/* 06F47C 802AFC7C A42ED648 */ sh $t6, %lo(gLastDialogPageStrPos)($at) -.L802AFC80: -/* 06F480 802AFC80 A437D648 */ sh $s7, %lo(gLastDialogPageStrPos)($at) -.L802AFC84: -/* 06F484 802AFC84 8FBF0044 */ lw $ra, 0x44($sp) -.L802AFC88: -/* 06F488 802AFC88 3C018033 */ lui $at, %hi(gLastDialogLineNum) # $at, 0x8033 -/* 06F48C 802AFC8C A033F692 */ sb $s3, %lo(gLastDialogLineNum)($at) -/* 06F490 802AFC90 8FB3002C */ lw $s3, 0x2c($sp) -/* 06F494 802AFC94 8FB00020 */ lw $s0, 0x20($sp) -/* 06F498 802AFC98 8FB10024 */ lw $s1, 0x24($sp) -/* 06F49C 802AFC9C 8FB20028 */ lw $s2, 0x28($sp) -/* 06F4A0 802AFCA0 8FB40030 */ lw $s4, 0x30($sp) -/* 06F4A4 802AFCA4 8FB50034 */ lw $s5, 0x34($sp) -/* 06F4A8 802AFCA8 8FB60038 */ lw $s6, 0x38($sp) -/* 06F4AC 802AFCAC 8FB7003C */ lw $s7, 0x3c($sp) -/* 06F4B0 802AFCB0 8FBE0040 */ lw $fp, 0x40($sp) -/* 06F4B4 802AFCB4 03E00008 */ jr $ra -/* 06F4B8 802AFCB8 27BD0070 */ addiu $sp, $sp, 0x70 - diff --git a/asm/non_matchings/eu/libultra_unk_802aeeb0.s b/asm/non_matchings/eu/libultra_unk_802aeeb0.s deleted file mode 100644 index 825fbb53..00000000 --- a/asm/non_matchings/eu/libultra_unk_802aeeb0.s +++ /dev/null @@ -1,55 +0,0 @@ - -glabel func_802aeeb0 -/* 0AEEB0 80200000 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0AEEB4 80200004 AFBF0014 */ sw $ra, 0x14($sp) -/* 0AEEB8 80200008 0C0BD400 */ jal __osDisableInt -/* 0AEEBC 8020000C AFA40020 */ sw $a0, 0x20($sp) -/* 0AEEC0 80200010 3C0F8030 */ lui $t7, %hi(D_80334914) # $t7, 0x8030 -/* 0AEEC4 80200014 8DEF2EE4 */ lw $t7, %lo(D_80334914)($t7) -/* 0AEEC8 80200018 8FAE0020 */ lw $t6, 0x20($sp) -/* 0AEECC 8020001C AFA2001C */ sw $v0, 0x1c($sp) -/* 0AEED0 80200020 3C188030 */ lui $t8, %hi(D_80334914) # $t8, 0x8030 -/* 0AEED4 80200024 ADEE0004 */ sw $t6, 4($t7) -/* 0AEED8 80200028 8F182EE4 */ lw $t8, %lo(D_80334914)($t8) -/* 0AEEDC 8020002C 97190000 */ lhu $t9, ($t8) -/* 0AEEE0 80200030 37280010 */ ori $t0, $t9, 0x10 -/* 0AEEE4 80200034 A7080000 */ sh $t0, ($t8) -/* 0AEEE8 80200038 0C0BD408 */ jal __osRestoreInt -/* 0AEEEC 8020003C 8FA4001C */ lw $a0, 0x1c($sp) -/* 0AEEF0 80200040 8FBF0014 */ lw $ra, 0x14($sp) -/* 0AEEF4 80200044 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0AEEF8 80200048 03E00008 */ jr $ra -/* 0AEEFC 8020004C 00000000 */ nop - -glabel func_802aef00 -/* 0AEF00 80200050 3C028030 */ lui $v0, %hi(D_8033489C) -/* 0AEF04 80200054 03E00008 */ jr $ra -/* 0AEF08 80200058 8C422EFC */ lw $v0, %lo(D_8033489C)($v0) - -glabel func_802aef0c -/* 0AEF0C 8020005C 00000000 */ nop -/* 0AEF10 80200060 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0AEF14 80200064 AFBF001C */ sw $ra, 0x1c($sp) -/* 0AEF18 80200068 AFA40028 */ sw $a0, 0x28($sp) -/* 0AEF1C 8020006C AFA5002C */ sw $a1, 0x2c($sp) -/* 0AEF20 80200070 AFA60030 */ sw $a2, 0x30($sp) -/* 0AEF24 80200074 0C0BD400 */ jal __osDisableInt -/* 0AEF28 80200078 AFB00018 */ sw $s0, 0x18($sp) -/* 0AEF2C 8020007C 8FAE0028 */ lw $t6, 0x28($sp) -/* 0AEF30 80200080 3C188033 */ lui $t8, %hi(D_80363830) # $t8, 0x8033 -/* 0AEF34 80200084 8FA8002C */ lw $t0, 0x2c($sp) -/* 0AEF38 80200088 271836D0 */ addiu $t8, %lo(D_80363830) # addiu $t8, $t8, 0x36d0 -/* 0AEF3C 8020008C 000E78C0 */ sll $t7, $t6, 3 -/* 0AEF40 80200090 01F8C821 */ addu $t9, $t7, $t8 -/* 0AEF44 80200094 AFB90020 */ sw $t9, 0x20($sp) -/* 0AEF48 80200098 AF280000 */ sw $t0, ($t9) -/* 0AEF4C 8020009C 8FAA0020 */ lw $t2, 0x20($sp) -/* 0AEF50 802000A0 8FA90030 */ lw $t1, 0x30($sp) -/* 0AEF54 802000A4 00408025 */ move $s0, $v0 -/* 0AEF58 802000A8 02002025 */ move $a0, $s0 -/* 0AEF5C 802000AC 0C0BD408 */ jal __osRestoreInt -/* 0AEF60 802000B0 AD490004 */ sw $t1, 4($t2) -/* 0AEF64 802000B4 8FBF001C */ lw $ra, 0x1c($sp) -/* 0AEF68 802000B8 8FB00018 */ lw $s0, 0x18($sp) -/* 0AEF6C 802000BC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0AEF70 802000C0 03E00008 */ jr $ra diff --git a/asm/non_matchings/eu/libultra_unk_802aef80.s b/asm/non_matchings/eu/libultra_unk_802aef80.s deleted file mode 100644 index 5d7aa558..00000000 --- a/asm/non_matchings/eu/libultra_unk_802aef80.s +++ /dev/null @@ -1,87 +0,0 @@ -glabel func_802aef80 -/* 0AEF80 80200000 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0AEF84 80200004 AFBF001C */ sw $ra, 0x1c($sp) -/* 0AEF88 80200008 AFA40028 */ sw $a0, 0x28($sp) -/* 0AEF8C 8020000C AFA5002C */ sw $a1, 0x2c($sp) -/* 0AEF90 80200010 AFA60030 */ sw $a2, 0x30($sp) -/* 0AEF94 80200014 AFB10018 */ sw $s1, 0x18($sp) -/* 0AEF98 80200018 0C0BD400 */ jal __osDisableInt -/* 0AEF9C 8020001C AFB00014 */ sw $s0, 0x14($sp) -/* 0AEFA0 80200020 8FAE0028 */ lw $t6, 0x28($sp) -/* 0AEFA4 80200024 00408025 */ move $s0, $v0 -/* 0AEFA8 80200028 8DCF0008 */ lw $t7, 8($t6) -/* 0AEFAC 8020002C 15E00012 */ bnez $t7, .L80200078 -/* 0AEFB0 80200030 00000000 */ nop -.L80200034: -/* 0AEFB4 80200034 8FB80030 */ lw $t8, 0x30($sp) -/* 0AEFB8 80200038 17000005 */ bnez $t8, .L80200050 -/* 0AEFBC 8020003C 00000000 */ nop -/* 0AEFC0 80200040 0C0BD408 */ jal __osRestoreInt -/* 0AEFC4 80200044 02002025 */ move $a0, $s0 -/* 0AEFC8 80200048 10000036 */ b .L80200124 -/* 0AEFCC 8020004C 2402FFFF */ li $v0, -1 -.L80200050: -/* 0AEFD0 80200050 3C088030 */ lui $t0, %hi(D_803348A0) # $t0, 0x8030 -/* 0AEFD4 80200054 8D082F00 */ lw $t0, %lo(D_803348A0)($t0) -/* 0AEFD8 80200058 24190008 */ li $t9, 8 -/* 0AEFDC 8020005C A5190010 */ sh $t9, 0x10($t0) -/* 0AEFE0 80200060 0C0BCFC3 */ jal __osEnqueueAndYield -/* 0AEFE4 80200064 8FA40028 */ lw $a0, 0x28($sp) -/* 0AEFE8 80200068 8FA90028 */ lw $t1, 0x28($sp) -/* 0AEFEC 8020006C 8D2A0008 */ lw $t2, 8($t1) -/* 0AEFF0 80200070 1140FFF0 */ beqz $t2, .L80200034 -/* 0AEFF4 80200074 00000000 */ nop -.L80200078: -/* 0AEFF8 80200078 8FAB002C */ lw $t3, 0x2c($sp) -/* 0AEFFC 8020007C 11600008 */ beqz $t3, .L802000A0 -/* 0AF000 80200080 00000000 */ nop -/* 0AF004 80200084 8FAC0028 */ lw $t4, 0x28($sp) -/* 0AF008 80200088 8D8E000C */ lw $t6, 0xc($t4) -/* 0AF00C 8020008C 8D8D0014 */ lw $t5, 0x14($t4) -/* 0AF010 80200090 000E7880 */ sll $t7, $t6, 2 -/* 0AF014 80200094 01AFC021 */ addu $t8, $t5, $t7 -/* 0AF018 80200098 8F190000 */ lw $t9, ($t8) -/* 0AF01C 8020009C AD790000 */ sw $t9, ($t3) -.L802000A0: -/* 0AF020 802000A0 8FA80028 */ lw $t0, 0x28($sp) -/* 0AF024 802000A4 8D09000C */ lw $t1, 0xc($t0) -/* 0AF028 802000A8 8D0C0010 */ lw $t4, 0x10($t0) -/* 0AF02C 802000AC 252A0001 */ addiu $t2, $t1, 1 -/* 0AF030 802000B0 014C001A */ div $zero, $t2, $t4 -/* 0AF034 802000B4 00007010 */ mfhi $t6 -/* 0AF038 802000B8 AD0E000C */ sw $t6, 0xc($t0) -/* 0AF03C 802000BC 8FAD0028 */ lw $t5, 0x28($sp) -/* 0AF040 802000C0 15800002 */ bnez $t4, .L802000CC -/* 0AF044 802000C4 00000000 */ nop -/* 0AF048 802000C8 0007000D */ break 7 -.L802000CC: -/* 0AF04C 802000CC 2401FFFF */ li $at, -1 -/* 0AF050 802000D0 15810004 */ bne $t4, $at, .L802000E4 -/* 0AF054 802000D4 3C018000 */ lui $at, 0x8000 -/* 0AF058 802000D8 15410002 */ bne $t2, $at, .L802000E4 -/* 0AF05C 802000DC 00000000 */ nop -/* 0AF060 802000E0 0006000D */ break 6 -.L802000E4: -/* 0AF064 802000E4 8DAF0008 */ lw $t7, 8($t5) -/* 0AF068 802000E8 25F8FFFF */ addiu $t8, $t7, -1 -/* 0AF06C 802000EC ADB80008 */ sw $t8, 8($t5) -/* 0AF070 802000F0 8FB90028 */ lw $t9, 0x28($sp) -/* 0AF074 802000F4 8F2B0004 */ lw $t3, 4($t9) -/* 0AF078 802000F8 8D690000 */ lw $t1, ($t3) -/* 0AF07C 802000FC 11200006 */ beqz $t1, .L80200118 -/* 0AF080 80200100 00000000 */ nop -/* 0AF084 80200104 0C0BD015 */ jal __osPopThread -/* 0AF088 80200108 27240004 */ addiu $a0, $t9, 4 -/* 0AF08C 8020010C 00408825 */ move $s1, $v0 -/* 0AF090 80200110 0C0BBEA0 */ jal osStartThread -/* 0AF094 80200114 02202025 */ move $a0, $s1 -.L80200118: -/* 0AF098 80200118 0C0BD408 */ jal __osRestoreInt -/* 0AF09C 8020011C 02002025 */ move $a0, $s0 -/* 0AF0A0 80200120 00001025 */ move $v0, $zero -.L80200124: -/* 0AF0A4 80200124 8FBF001C */ lw $ra, 0x1c($sp) -/* 0AF0A8 80200128 8FB00014 */ lw $s0, 0x14($sp) -/* 0AF0AC 8020012C 8FB10018 */ lw $s1, 0x18($sp) -/* 0AF0B0 80200130 03E00008 */ jr $ra -/* 0AF0B4 80200134 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/eu/play_sequence.s b/asm/non_matchings/eu/play_sequence.s deleted file mode 100644 index e806d0fc..00000000 --- a/asm/non_matchings/eu/play_sequence.s +++ /dev/null @@ -1,86 +0,0 @@ -glabel play_sequence -/* 0AB0E8 80200000 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0AB0EC 80200004 AFA50034 */ sw $a1, 0x34($sp) -/* 0AB0F0 80200008 308700FF */ andi $a3, $a0, 0xff -/* 0AB0F4 8020000C 30AE00FF */ andi $t6, $a1, 0xff -/* 0AB0F8 80200010 01C02825 */ move $a1, $t6 -/* 0AB0FC 80200014 AFBF0014 */ sw $ra, 0x14($sp) -/* 0AB100 80200018 AFA40030 */ sw $a0, 0x30($sp) -/* 0AB104 8020001C AFA60038 */ sw $a2, 0x38($sp) -/* 0AB108 80200020 14E0000C */ bnez $a3, .L480200054 -/* 0AB10C 80200024 00E04025 */ move $t0, $a3 -/* 0AB110 80200028 31CF007F */ andi $t7, $t6, 0x7f -/* 0AB114 8020002C 3C018030 */ lui $at, %hi(sPlayer0CurSeqId) # $at, 0x8030 -/* 0AB118 80200030 A02F04CC */ sb $t7, %lo(sPlayer0CurSeqId)($at) -/* 0AB11C 80200034 240200FF */ li $v0, 255 -/* 0AB120 80200038 3C018030 */ lui $at, %hi(sBackgroundMusicForDynamics) # $at, 0x8030 -/* 0AB124 8020003C A02202E0 */ sb $v0, %lo(sBackgroundMusicForDynamics)($at) -/* 0AB128 80200040 3C018030 */ lui $at, %hi(sCurrentMusicDynamic) # $at, 0x8030 -/* 0AB12C 80200044 A02202DC */ sb $v0, %lo(sCurrentMusicDynamic)($at) -/* 0AB130 80200048 3C018030 */ lui $at, %hi(sMusicDynamicDelay) # $at, 0x8030 -/* 0AB134 8020004C 24180002 */ li $t8, 2 -/* 0AB138 80200050 A03804D0 */ sb $t8, %lo(sMusicDynamicDelay)($at) -.L480200054: -/* 0AB13C 80200054 3C0A8033 */ lui $t2, %hi(D_80360928) # $t2, 0x8033 -/* 0AB140 80200058 254AFF40 */ addiu $t2, %lo(D_80360928) # addiu $t2, $t2, -0xc0 -/* 0AB144 8020005C 0007CA00 */ sll $t9, $a3, 8 -/* 0AB148 80200060 032A1821 */ addu $v1, $t9, $t2 -/* 0AB14C 80200064 00001025 */ move $v0, $zero -/* 0AB150 80200068 00A03025 */ move $a2, $a1 -/* 0AB154 8020006C 30A9007F */ andi $t1, $a1, 0x7f -.L480200070: -/* 0AB158 80200070 00025900 */ sll $t3, $v0, 4 -/* 0AB15C 80200074 24420001 */ addiu $v0, $v0, 1 -/* 0AB160 80200078 304D00FF */ andi $t5, $v0, 0xff -/* 0AB164 8020007C 29A10010 */ slti $at, $t5, 0x10 -/* 0AB168 80200080 006B6021 */ addu $t4, $v1, $t3 -/* 0AB16C 80200084 01A01025 */ move $v0, $t5 -/* 0AB170 80200088 1420FFF9 */ bnez $at, .L480200070 -/* 0AB174 8020008C A580000C */ sh $zero, 0xc($t4) -/* 0AB178 80200090 30E200FF */ andi $v0, $a3, 0xff -/* 0AB17C 80200094 00027400 */ sll $t6, $v0, 0x10 -/* 0AB180 80200098 30C50080 */ andi $a1, $a2, 0x80 -/* 0AB184 8020009C 00057E00 */ sll $t7, $a1, 0x18 -/* 0AB188 802000A0 3C014600 */ lui $at, 0x4600 -/* 0AB18C 802000A4 01C12025 */ or $a0, $t6, $at -/* 0AB190 802000A8 000F2E03 */ sra $a1, $t7, 0x18 -/* 0AB194 802000AC 01C01025 */ move $v0, $t6 -/* 0AB198 802000B0 AFAE001C */ sw $t6, 0x1c($sp) -/* 0AB19C 802000B4 AFA80028 */ sw $t0, 0x28($sp) -/* 0AB1A0 802000B8 0C0BB7DC */ jal func_802ad770 -/* 0AB1A4 802000BC AFA90020 */ sw $t1, 0x20($sp) -/* 0AB1A8 802000C0 8FA90020 */ lw $t1, 0x20($sp) -/* 0AB1AC 802000C4 8FA2001C */ lw $v0, 0x1c($sp) -/* 0AB1B0 802000C8 3C018200 */ lui $at, 0x8200 -/* 0AB1B4 802000CC 312A00FF */ andi $t2, $t1, 0xff -/* 0AB1B8 802000D0 000A5A00 */ sll $t3, $t2, 8 -/* 0AB1BC 802000D4 0041C825 */ or $t9, $v0, $at -/* 0AB1C0 802000D8 032B2025 */ or $a0, $t9, $t3 -/* 0AB1C4 802000DC 0C0BB7D3 */ jal func_802ad74c -/* 0AB1C8 802000E0 97A5003A */ lhu $a1, 0x3a($sp) -/* 0AB1CC 802000E4 8FA80028 */ lw $t0, 0x28($sp) -/* 0AB1D0 802000E8 55000013 */ bnezl $t0, .L480200138 -/* 0AB1D4 802000EC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0AB1D8 802000F0 0C0BB0F2 */ jal func_803200E4 -/* 0AB1DC 802000F4 00002025 */ move $a0, $zero -/* 0AB1E0 802000F8 240100FF */ li $at, 255 -/* 0AB1E4 802000FC 5041000E */ beql $v0, $at, .L480200138 -/* 0AB1E8 80200100 8FBF0014 */ lw $ra, 0x14($sp) -/* 0AB1EC 80200104 44822000 */ mtc1 $v0, $f4 -/* 0AB1F0 80200108 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0AB1F4 8020010C 04410004 */ bgez $v0, .L480200120 -/* 0AB1F8 80200110 468021A0 */ cvt.s.w $f6, $f4 -/* 0AB1FC 80200114 44814000 */ mtc1 $at, $f8 -/* 0AB200 80200118 00000000 */ nop -/* 0AB204 8020011C 46083180 */ add.s $f6, $f6, $f8 -.L480200120: -/* 0AB208 80200120 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 0AB20C 80200124 44815000 */ mtc1 $at, $f10 -/* 0AB210 80200128 3C018022 */ lui $at, %hi(gSequencePlayers + 0x28) # $at, 0x8022 -/* 0AB214 8020012C 460A3403 */ div.s $f16, $f6, $f10 -/* 0AB218 80200130 E4303D90 */ swc1 $f16, %lo(gSequencePlayers + 0x28)($at) -/* 0AB21C 80200134 8FBF0014 */ lw $ra, 0x14($sp) -.L480200138: -/* 0AB220 80200138 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0AB224 8020013C 03E00008 */ jr $ra -/* 0AB228 80200140 00000000 */ nop diff --git a/asm/non_matchings/eu/player_performed_grab_escape_action.s b/asm/non_matchings/eu/player_performed_grab_escape_action.s deleted file mode 100644 index ce1c0548..00000000 --- a/asm/non_matchings/eu/player_performed_grab_escape_action.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel player_performed_grab_escape_action -/* 0D8190 80200000 3C028030 */ lui $v0, %hi(gPlayer1Controller) # $v0, 0x8030 -/* 0D8194 80200004 8C429794 */ lw $v0, %lo(gPlayer1Controller)($v0) -/* 0D8198 80200008 3C0141F0 */ li $at, 0x41F00000 # 30.000000 -/* 0D819C 8020000C 44812000 */ mtc1 $at, $f4 -/* 0D81A0 80200010 C440000C */ lwc1 $f0, 0xc($v0) -/* 0D81A4 80200014 00001825 */ move $v1, $zero -/* 0D81A8 80200018 3C018039 */ lui $at, %hi(sGrabReleaseState) # $at, 0x8039 -/* 0D81AC 8020001C 4604003C */ c.lt.s $f0, $f4 -/* 0D81B0 80200020 3C0E8039 */ lui $t6, %hi(sGrabReleaseState) # $t6, 0x8039 -/* 0D81B4 80200024 45000002 */ bc1f .L81_80200030 -/* 0D81B8 80200028 00000000 */ nop -/* 0D81BC 8020002C AC209C70 */ sw $zero, %lo(sGrabReleaseState)($at) -.L81_80200030: -/* 0D81C0 80200030 8DCE9C70 */ lw $t6, %lo(sGrabReleaseState)($t6) -/* 0D81C4 80200034 3C014220 */ li $at, 0x42200000 # 40.000000 -/* 0D81C8 80200038 55C0000B */ bnezl $t6, .L81_80200068 -/* 0D81CC 8020003C 94580012 */ lhu $t8, 0x12($v0) -/* 0D81D0 80200040 44813000 */ mtc1 $at, $f6 -/* 0D81D4 80200044 3C018039 */ lui $at, %hi(sGrabReleaseState) # $at, 0x8039 -/* 0D81D8 80200048 240F0001 */ li $t7, 1 -/* 0D81DC 8020004C 4600303C */ c.lt.s $f6, $f0 -/* 0D81E0 80200050 00000000 */ nop -/* 0D81E4 80200054 45020004 */ bc1fl .L81_80200068 -/* 0D81E8 80200058 94580012 */ lhu $t8, 0x12($v0) -/* 0D81EC 8020005C AC2F9C70 */ sw $t7, %lo(sGrabReleaseState)($at) -/* 0D81F0 80200060 24030001 */ li $v1, 1 -/* 0D81F4 80200064 94580012 */ lhu $t8, 0x12($v0) -.L81_80200068: -/* 0D81F8 80200068 33198000 */ andi $t9, $t8, 0x8000 -/* 0D81FC 8020006C 13200002 */ beqz $t9, .L81_80200078 -/* 0D8200 80200070 00000000 */ nop -/* 0D8204 80200074 24030001 */ li $v1, 1 -.L81_80200078: -/* 0D8208 80200078 03E00008 */ jr $ra -/* 0D820C 8020007C 00601025 */ move $v0, $v1 diff --git a/asm/rom_header.s b/asm/rom_header.s index aa068651..06d84647 100644 --- a/asm/rom_header.s +++ b/asm/rom_header.s @@ -5,10 +5,12 @@ .byte 0x80, 0x37, 0x12, 0x40 /* PI BSD Domain 1 register */ .word 0x0000000F /* Clockrate setting*/ -.word EntryPoint /* Entrypoint */ +.word entry_point /* Entrypoint */ /* Revision */ -.if VERSION_EU == 1 +.if VERSION_SH == 1 + .word 0x00001448 +.elseif VERSION_EU == 1 .word 0x00001446 .else /* NTSC-U and NTSC-J 1.0 */ .word 0x00001444 @@ -18,7 +20,11 @@ .word 0x74757C24 /* Checksum 2 */ .word 0x00000000 /* Unknown */ .word 0x00000000 /* Unknown */ +.if VERSION_SH == 1 +.ascii "SUPERMARIO64 " /* Internal ROM name */ +.else .ascii "SUPER MARIO 64 " /* Internal ROM name */ +.endif .word 0x00000000 /* Unknown */ .word 0x0000004E /* Cartridge */ .ascii "SM" /* Cartridge ID */ @@ -26,7 +32,7 @@ /* Region */ .if VERSION_US == 1 .ascii "E" /* NTSC-U (North America) */ -.elseif VERSION_JP == 1 +.elseif (VERSION_JP == 1 || VERSION_SH == 1) .ascii "J" /* NTSC-J (Japan) */ .else .ascii "P" /* PAL (Europe) */ diff --git a/assets.json b/assets.json index c64b3b81..1b032791 100644 --- a/assets.json +++ b/assets.json @@ -436,10 +436,10 @@ "actors/water_splash/water_splash_5.rgba16.png": [32,64,4096,{"jp":[1125200,193992],"us":[1132368,193992],"eu":[1004336,193992]}], "actors/water_splash/water_splash_6.rgba16.png": [32,64,4096,{"jp":[1125200,198088],"us":[1132368,198088],"eu":[1004336,198088]}], "actors/water_splash/water_splash_7.rgba16.png": [32,64,4096,{"jp":[1125200,202184],"us":[1132368,202184],"eu":[1004336,202184]}], -"actors/water_waves/water_waves_0.ia16.png": [32,32,2048,{"jp":[1125200,152408],"us":[1132368,152408],"eu":[1004336,152408]}], -"actors/water_waves/water_waves_1.ia16.png": [32,32,2048,{"jp":[1125200,154456],"us":[1132368,154456],"eu":[1004336,154456]}], -"actors/water_waves/water_waves_2.ia16.png": [32,32,2048,{"jp":[1125200,156504],"us":[1132368,156504],"eu":[1004336,156504]}], -"actors/water_waves/water_waves_3.ia16.png": [32,32,2048,{"jp":[1125200,158552],"us":[1132368,158552],"eu":[1004336,158552]}], +"actors/water_wave/water_wave_0.ia16.png": [32,32,2048,{"jp":[1125200,152408],"us":[1132368,152408],"eu":[1004336,152408]}], +"actors/water_wave/water_wave_1.ia16.png": [32,32,2048,{"jp":[1125200,154456],"us":[1132368,154456],"eu":[1004336,154456]}], +"actors/water_wave/water_wave_2.ia16.png": [32,32,2048,{"jp":[1125200,156504],"us":[1132368,156504],"eu":[1004336,156504]}], +"actors/water_wave/water_wave_3.ia16.png": [32,32,2048,{"jp":[1125200,158552],"us":[1132368,158552],"eu":[1004336,158552]}], "actors/whirlpool/whirlpool.ia16.png": [32,64,4096,{"jp":[1285392,75848],"us":[1292560,75848],"eu":[1164528,75848]}], "actors/white_particle/snow_particle.rgba16.png": [16,16,512,{"jp":[2094912,181920],"us":[2102288,181920],"eu":[1974256,181920]}], "actors/white_particle_small/small_snow_particle.rgba16.png": [16,16,512,{"jp":[1125200,206720],"us":[1132368,206720],"eu":[1004336,206720]}], @@ -1730,8 +1730,7 @@ "textures/snow/ccm_textures.09000.ia16.png": [32,32,2048,{"jp":[3405536,36864],"us":[3412288,36864],"eu":[3285888,36864]}], "textures/snow/ccm_textures.09800.ia16.png": [32,32,2048,{"jp":[3405536,38912],"us":[3412288,38912],"eu":[3285888,38912]}], "textures/spooky/bbh_textures.00000.rgba16.png": [32,32,2048,{"jp":[3298272,0],"us":[3305024,0],"eu":[3178624,0]}], -"textures/spooky/bbh_textures.00800.rgba16.png": [32,32,2048,{"jp":[3298272,2048],"us":[3305024,2048],"eu":[3178624,2048]}], -"textures/spooky/bbh_textures.01000.rgba16.png": [32,32,2048,{"jp":[3298272,4096],"us":[3305024,4096],"eu":[3178624,4096]}], +"textures/spooky/bbh_textures.00800.rgba16.png": [32,64,4096,{"jp":[3298272,2048],"us":[3305024,2048],"eu":[3178624,2048]}], "textures/spooky/bbh_textures.01800.rgba16.png": [32,64,4096,{"jp":[3298272,6144],"us":[3305024,6144],"eu":[3178624,6144]}], "textures/spooky/bbh_textures.02800.rgba16.png": [32,64,4096,{"jp":[3298272,10240],"us":[3305024,10240],"eu":[3178624,10240]}], "textures/spooky/bbh_textures.03800.rgba16.png": [32,64,4096,{"jp":[3298272,14336],"us":[3305024,14336],"eu":[3178624,14336]}], diff --git a/bin/segment2.c b/bin/segment2.c index 97763d9d..3ef8dc16 100644 --- a/bin/segment2.c +++ b/bin/segment2.c @@ -82,7 +82,7 @@ ALIGNED8 static const u8 texture_hud_char_I[] = { #include "textures/segment2/segment2.02400.rgba16.inc.c" }; -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_J[] = { #include "textures/segment2/segment2.02600.rgba16.inc.c" }; @@ -112,7 +112,7 @@ ALIGNED8 static const u8 texture_hud_char_P[] = { #include "textures/segment2/segment2.03200.rgba16.inc.c" }; -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_Q[] = { #include "textures/segment2/segment2.03400.rgba16.inc.c" }; @@ -134,7 +134,7 @@ ALIGNED8 static const u8 texture_hud_char_U[] = { #include "textures/segment2/segment2.03C00.rgba16.inc.c" }; -#if defined(VERSION_JP) || defined(VERSION_EU) +#if defined(VERSION_JP) || defined(VERSION_EU) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_V[] = { #include "textures/segment2/segment2.03E00.rgba16.inc.c" }; @@ -144,7 +144,7 @@ ALIGNED8 static const u8 texture_hud_char_W[] = { #include "textures/segment2/segment2.04000.rgba16.inc.c" }; -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_X[] = { #include "textures/segment2/segment2.04200.rgba16.inc.c" }; @@ -154,7 +154,7 @@ ALIGNED8 static const u8 texture_hud_char_Y[] = { #include "textures/segment2/segment2.04400.rgba16.inc.c" }; -#if defined(VERSION_JP) || defined(VERSION_EU) +#if defined(VERSION_JP) || defined(VERSION_EU) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_Z[] = { #include "textures/segment2/segment2.04600.rgba16.inc.c" }; @@ -174,7 +174,7 @@ ALIGNED8 static const u8 texture_hud_char_umlaut[] = { }; #endif -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_exclamation[] = { #include "textures/segment2/segment2.04C00.rgba16.inc.c"// JP ! }; @@ -212,13 +212,13 @@ ALIGNED8 static const u8 texture_hud_char_star[] = { #include "textures/segment2/segment2.05C00.rgba16.inc.c" }; -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_decimal_point[] = { #include "textures/segment2/segment2.05E00.rgba16.inc.c" }; #endif -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) ALIGNED8 static const u8 texture_hud_char_beta_key[] = { #include "textures/segment2/segment2.06000.rgba16.inc.c" }; @@ -345,7 +345,7 @@ ALIGNED8 static const u8 texture_credits_char_period[] = { }; // JP Small Font -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) ALIGNED8 static const u8 texture_font_char_jp_0[] = { #include "textures/segment2/segment2.07100.ia1.inc.c" }; @@ -1987,7 +1987,7 @@ const u8 *const main_font_lut[] = { texture_font_char_us_question, texture_font_char_us_double_quote_open, texture_font_char_us_double_quote_close, texture_font_char_us_tilde, 0x0, texture_font_char_us_coin, texture_font_char_us_star_filled, texture_font_char_us_multiply, texture_font_char_us_interpunct, texture_font_char_us_star_hollow, 0x0, 0x0, -#elif defined(VERSION_JP) +#elif defined(VERSION_JP) || defined(VERSION_SH) texture_font_char_jp_0, texture_font_char_jp_1, texture_font_char_jp_2, texture_font_char_jp_3, texture_font_char_jp_4, texture_font_char_jp_5, texture_font_char_jp_6, texture_font_char_jp_7, texture_font_char_jp_8, texture_font_char_jp_9, texture_font_char_jp_A, texture_font_char_jp_B, @@ -2078,7 +2078,7 @@ const u8 *const main_hud_camera_lut[] = { // If you change the language here, the following Makefile rule also needs to // change, to generate the right version of define_text.inc.c: // $(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #include "text/jp/define_text.inc.c" #elif defined(VERSION_US) #include "text/us/define_text.inc.c" @@ -2773,11 +2773,12 @@ const Gfx dl_paintings_draw_ripples[] = { gsSPEndDisplayList(), }; -// 14A60-15BAD: count and triangles? // 14A60: triangle mesh // 0x02014A60 -const s16 seg2_triangle_mesh[] = { - 157, +const s16 seg2_painting_triangle_mesh[] = { + 157, // numVtx + // format: + // 2D point (x, y), ripple (0 or 1) 614, 583, 0, // 0 614, 614, 0, // 1 562, 614, 0, // 2 @@ -3201,128 +3202,172 @@ const s16 seg2_triangle_mesh[] = { 118, 154, 140, // 261 140, 135, 130, // 262 117, 154, 118, // 263 - 0, // TODO: alignment? }; -// 0x02015444: TODO -const s16 seg2_mesh_order[] = { - 3, 1, 2, 3, 1, 1, 4, - 1, 2, 4, 5, 6, 2, 3, 5, - 14, 59, 62, 3, 3, 58, 59, 6, - 4, 5, 13, 14, 15, 16, 2, 4, - 13, 2, 6, 7, 6, 0, 6, 7, - 8, 9, 10, 4, 6, 10, 11, 12, - 4, 7, 8, 154, 155, 6, 8, 9, - 77, 154, 163, 194, 6, 0, 9, 72, - 73, 75, 77, 6, 0, 10, 11, 19, - 70, 72, 6, 11, 12, 17, 18, 19, - 20, 4, 13, 16, 17, 18, 6, 14, - 15, 53, 61, 62, 64, 6, 15, 16, - 18, 20, 64, 67, 6, 19, 20, 66, - 67, 69, 70, 8, 21, 22, 27, 31, - 80, 81, 149, 150, 3, 21, 22, 26, - 6, 23, 24, 25, 28, 57, 60, 3, - 24, 25, 26, 6, 22, 24, 26, 27, - 28, 29, 6, 27, 29, 30, 31, 32, - 33, 8, 30, 33, 39, 40, 78, 79, - 146, 147, 6, 34, 35, 37, 44, 63, - 65, 6, 23, 28, 29, 32, 34, 35, - 6, 23, 35, 53, 60, 61, 63, 6, - 38, 39, 40, 41, 42, 43, 6, 32, - 33, 34, 37, 38, 39, 8, 41, 42, - 48, 52, 76, 82, 148, 151, 6, 44, - 46, 65, 66, 68, 69, 6, 45, 46, - 47, 56, 68, 71, 6, 37, 38, 43, - 44, 45, 46, 6, 42, 43, 45, 47, - 48, 49, 6, 36, 48, 49, 50, 51, - 52, 8, 50, 51, 152, 153, 170, 174, - 214, 215, 6, 36, 47, 49, 54, 55, - 56, 6, 54, 55, 74, 169, 178, 196, - 6, 54, 56, 71, 73, 74, 75, 3, - 25, 57, 58, 6, 57, 58, 59, 60, - 61, 62, 6, 53, 63, 64, 65, 66, - 67, 6, 68, 69, 70, 71, 72, 73, - 6, 74, 75, 77, 194, 195, 196, 6, - 79, 82, 125, 137, 146, 148, 6, 78, - 80, 129, 130, 147, 149, 6, 76, 144, - 145, 151, 152, 153, 3, 84, 85, 86, - 1, 85, 4, 85, 86, 91, 95, 6, - 83, 87, 88, 90, 119, 124, 3, 84, - 87, 88, 6, 89, 91, 92, 93, 94, - 95, 6, 84, 86, 87, 89, 90, 91, - 4, 93, 94, 101, 105, 2, 94, 95, - 6, 96, 97, 100, 108, 126, 131, 6, - 83, 89, 90, 92, 96, 97, 6, 83, - 97, 123, 124, 126, 127, 6, 99, 101, - 102, 103, 104, 105, 6, 92, 93, 96, - 99, 100, 101, 4, 98, 103, 104, 110, - 2, 104, 105, 6, 99, 100, 102, 106, - 107, 108, 6, 106, 107, 111, 117, 134, - 138, 6, 106, 108, 131, 132, 134, 135, - 6, 98, 109, 110, 112, 113, 114, 6, - 102, 103, 107, 109, 110, 111, 4, 113, - 114, 221, 223, 2, 98, 114, 6, 115, - 116, 142, 213, 226, 236, 6, 109, 111, - 112, 115, 116, 117, 6, 116, 117, 138, - 140, 141, 142, 3, 88, 118, 119, 6, - 120, 121, 122, 130, 149, 150, 3, 118, - 120, 121, 6, 118, 119, 120, 122, 123, - 124, 6, 125, 128, 129, 133, 146, 147, - 6, 122, 123, 127, 128, 129, 130, 6, - 126, 127, 128, 131, 132, 133, 6, 136, - 137, 139, 145, 148, 151, 6, 125, 132, - 133, 135, 136, 137, 6, 134, 135, 136, - 138, 139, 140, 6, 143, 144, 153, 215, - 246, 252, 6, 139, 140, 141, 143, 144, - 145, 6, 154, 155, 162, 163, 164, 165, - 1, 157, 3, 157, 158, 159, 4, 157, - 159, 160, 161, 6, 158, 159, 160, 167, - 205, 206, 6, 156, 160, 161, 166, 167, - 168, 6, 162, 163, 194, 195, 197, 199, - 6, 162, 164, 166, 168, 199, 202, 4, - 156, 164, 165, 166, 6, 167, 168, 201, - 202, 204, 205, 6, 36, 50, 55, 169, - 170, 171, 6, 170, 171, 172, 173, 174, - 175, 8, 172, 173, 180, 184, 209, 210, - 211, 212, 6, 176, 177, 179, 188, 198, - 200, 6, 169, 171, 175, 176, 177, 178, - 6, 177, 178, 195, 196, 197, 198, 6, - 172, 175, 176, 179, 180, 181, 6, 180, - 181, 182, 183, 184, 185, 8, 182, 183, - 189, 192, 216, 217, 218, 219, 6, 186, - 187, 190, 193, 203, 207, 6, 179, 181, - 185, 186, 187, 188, 6, 187, 188, 200, - 201, 203, 204, 6, 182, 185, 186, 189, - 190, 191, 3, 189, 191, 192, 3, 193, - 207, 208, 6, 197, 198, 199, 200, 201, - 202, 6, 203, 204, 205, 206, 207, 208, - 6, 209, 210, 250, 251, 253, 258, 6, - 210, 211, 217, 219, 247, 258, 6, 209, - 212, 214, 215, 251, 252, 3, 216, 218, - 263, 6, 218, 219, 247, 259, 261, 263, - 6, 220, 221, 222, 223, 224, 225, 6, - 112, 113, 115, 213, 220, 221, 2, 223, - 224, 4, 224, 225, 230, 235, 6, 226, - 227, 236, 245, 248, 249, 6, 213, 220, - 222, 226, 227, 228, 6, 227, 228, 231, - 239, 249, 255, 6, 229, 230, 232, 233, - 234, 235, 6, 222, 225, 228, 229, 230, - 231, 2, 233, 235, 4, 233, 234, 241, - 243, 6, 237, 238, 242, 244, 257, 262, - 6, 229, 231, 232, 237, 238, 239, 6, - 238, 239, 254, 255, 256, 257, 3, 240, - 241, 243, 6, 232, 234, 237, 240, 241, - 242, 3, 244, 260, 262, 6, 141, 142, - 143, 236, 245, 246, 6, 245, 246, 248, - 250, 251, 252, 6, 248, 249, 250, 253, - 254, 255, 6, 247, 253, 254, 256, 258, - 259, 6, 256, 257, 259, 260, 261, 262, - 2, 12, 17, 2, 21, 81, 3, 81, - 121, 150, 4, 30, 31, 78, 80, 4, - 40, 41, 79, 82, 4, 51, 52, 76, - 152, 2, 155, 165, 3, 158, 206, 208, - 2, 156, 161, 4, 173, 174, 212, 214, - 4, 183, 184, 211, 217, 3, 190, 191, - 193, 2, 192, 216, 3, 260, 261, 263, - 3, 240, 242, 244, 1, 243, +/* 0x02015444: seg2_painting_mesh_neighbor_tris + * Lists the neighboring triangles for each vertex in the mesh. + * Used when applying gouraud shading to the generated ripple mesh + * + * Format: + * num neighbors, neighbor0, neighbor1, ... + * The nth entry corresponds to the nth vertex in seg2_painting_triangle_mesh + */ +const s16 seg2_painting_mesh_neighbor_tris[] = { + 3, 1, 2, 3, + 1, 1, + 4, 1, 2, 4, 5, + 6, 2, 3, 5, 14, 59, 62, + 3, 3, 58, 59, + 6, 4, 5, 13, 14, 15, 16, + 2, 4, 13, + 2, 6, 7, + 6, 0, 6, 7, 8, 9, 10, + 4, 6, 10, 11, 12, + 4, 7, 8, 154, 155, + 6, 8, 9, 77, 154, 163, 194, + 6, 0, 9, 72, 73, 75, 77, + 6, 0, 10, 11, 19, 70, 72, + 6, 11, 12, 17, 18, 19, 20, + 4, 13, 16, 17, 18, + 6, 14, 15, 53, 61, 62, 64, + 6, 15, 16, 18, 20, 64, 67, + 6, 19, 20, 66, 67, 69, 70, + 8, 21, 22, 27, 31, 80, 81, 149, 150, + 3, 21, 22, 26, + 6, 23, 24, 25, 28, 57, 60, + 3, 24, 25, 26, + 6, 22, 24, 26, 27, 28, 29, + 6, 27, 29, 30, 31, 32, 33, + 8, 30, 33, 39, 40, 78, 79, 146, 147, + 6, 34, 35, 37, 44, 63, 65, + 6, 23, 28, 29, 32, 34, 35, + 6, 23, 35, 53, 60, 61, 63, + 6, 38, 39, 40, 41, 42, 43, + 6, 32, 33, 34, 37, 38, 39, + 8, 41, 42, 48, 52, 76, 82, 148, 151, + 6, 44, 46, 65, 66, 68, 69, + 6, 45, 46, 47, 56, 68, 71, + 6, 37, 38, 43, 44, 45, 46, + 6, 42, 43, 45, 47, 48, 49, + 6, 36, 48, 49, 50, 51, 52, + 8, 50, 51, 152, 153, 170, 174, 214, 215, + 6, 36, 47, 49, 54, 55, 56, + 6, 54, 55, 74, 169, 178, 196, + 6, 54, 56, 71, 73, 74, 75, + 3, 25, 57, 58, + 6, 57, 58, 59, 60, 61, 62, + 6, 53, 63, 64, 65, 66, 67, + 6, 68, 69, 70, 71, 72, 73, + 6, 74, 75, 77, 194, 195, 196, + 6, 79, 82, 125, 137, 146, 148, + 6, 78, 80, 129, 130, 147, 149, + 6, 76, 144, 145, 151, 152, 153, + 3, 84, 85, 86, + 1, 85, + 4, 85, 86, 91, 95, + 6, 83, 87, 88, 90, 119, 124, + 3, 84, 87, 88, + 6, 89, 91, 92, 93, 94, 95, + 6, 84, 86, 87, 89, 90, 91, + 4, 93, 94, 101, 105, + 2, 94, 95, + 6, 96, 97, 100, 108, 126, 131, + 6, 83, 89, 90, 92, 96, 97, + 6, 83, 97, 123, 124, 126, 127, + 6, 99, 101, 102, 103, 104, 105, + 6, 92, 93, 96, 99, 100, 101, + 4, 98, 103, 104, 110, + 2, 104, 105, + 6, 99, 100, 102, 106, 107, 108, + 6, 106, 107, 111, 117, 134, 138, + 6, 106, 108, 131, 132, 134, 135, + 6, 98, 109, 110, 112, 113, 114, + 6, 102, 103, 107, 109, 110, 111, + 4, 113, 114, 221, 223, + 2, 98, 114, + 6, 115, 116, 142, 213, 226, 236, + 6, 109, 111, 112, 115, 116, 117, + 6, 116, 117, 138, 140, 141, 142, + 3, 88, 118, 119, + 6, 120, 121, 122, 130, 149, 150, + 3, 118, 120, 121, + 6, 118, 119, 120, 122, 123, 124, + 6, 125, 128, 129, 133, 146, 147, + 6, 122, 123, 127, 128, 129, 130, + 6, 126, 127, 128, 131, 132, 133, + 6, 136, 137, 139, 145, 148, 151, + 6, 125, 132, 133, 135, 136, 137, + 6, 134, 135, 136, 138, 139, 140, + 6, 143, 144, 153, 215, 246, 252, + 6, 139, 140, 141, 143, 144, 145, + 6, 154, 155, 162, 163, 164, 165, + 1, 157, + 3, 157, 158, 159, + 4, 157, 159, 160, 161, + 6, 158, 159, 160, 167, 205, 206, + 6, 156, 160, 161, 166, 167, 168, + 6, 162, 163, 194, 195, 197, 199, + 6, 162, 164, 166, 168, 199, 202, + 4, 156, 164, 165, 166, + 6, 167, 168, 201, 202, 204, 205, + 6, 36, 50, 55, 169, 170, 171, + 6, 170, 171, 172, 173, 174, 175, + 8, 172, 173, 180, 184, 209, 210, 211, 212, + 6, 176, 177, 179, 188, 198, 200, + 6, 169, 171, 175, 176, 177, 178, + 6, 177, 178, 195, 196, 197, 198, + 6, 172, 175, 176, 179, 180, 181, + 6, 180, 181, 182, 183, 184, 185, + 8, 182, 183, 189, 192, 216, 217, 218, 219, + 6, 186, 187, 190, 193, 203, 207, + 6, 179, 181, 185, 186, 187, 188, + 6, 187, 188, 200, 201, 203, 204, + 6, 182, 185, 186, 189, 190, 191, + 3, 189, 191, 192, + 3, 193, 207, 208, + 6, 197, 198, 199, 200, 201, 202, + 6, 203, 204, 205, 206, 207, 208, + 6, 209, 210, 250, 251, 253, 258, + 6, 210, 211, 217, 219, 247, 258, + 6, 209, 212, 214, 215, 251, 252, + 3, 216, 218, 263, + 6, 218, 219, 247, 259, 261, 263, + 6, 220, 221, 222, 223, 224, 225, + 6, 112, 113, 115, 213, 220, 221, + 2, 223, 224, + 4, 224, 225, 230, 235, + 6, 226, 227, 236, 245, 248, 249, + 6, 213, 220, 222, 226, 227, 228, + 6, 227, 228, 231, 239, 249, 255, + 6, 229, 230, 232, 233, 234, 235, + 6, 222, 225, 228, 229, 230, 231, + 2, 233, 235, + 4, 233, 234, 241, 243, + 6, 237, 238, 242, 244, 257, 262, + 6, 229, 231, 232, 237, 238, 239, + 6, 238, 239, 254, 255, 256, 257, + 3, 240, 241, 243, + 6, 232, 234, 237, 240, 241, 242, + 3, 244, 260, 262, + 6, 141, 142, 143, 236, 245, 246, + 6, 245, 246, 248, 250, 251, 252, + 6, 248, 249, 250, 253, 254, 255, + 6, 247, 253, 254, 256, 258, 259, + 6, 256, 257, 259, 260, 261, 262, + 2, 12, 17, + 2, 21, 81, + 3, 81, 121, 150, + 4, 30, 31, 78, 80, + 4, 40, 41, 79, 82, + 4, 51, 52, 76, 152, + 2, 155, 165, + 3, 158, 206, 208, + 2, 156, 161, + 4, 173, 174, 212, 214, + 4, 183, 184, 211, 217, + 3, 190, 191, 193, + 2, 192, 216, + 3, 260, 261, 263, + 3, 240, 242, 244, + 1, 243, }; diff --git a/bin/spooky.c b/bin/spooky.c index 148dcad9..391519ef 100644 --- a/bin/spooky.c +++ b/bin/spooky.c @@ -12,11 +12,6 @@ ALIGNED8 const u8 spooky_09000800[] = { #include "textures/spooky/bbh_textures.00800.rgba16.inc.c" }; -// 0x09001000 -ALIGNED8 const u8 spooky_09001000[] = { -#include "textures/spooky/bbh_textures.01000.rgba16.inc.c" -}; - // 0x09001800 ALIGNED8 const u8 spooky_09001800[] = { #include "textures/spooky/bbh_textures.01800.rgba16.inc.c" diff --git a/data/behavior_data.c b/data/behavior_data.c index a9742a22..18459522 100644 --- a/data/behavior_data.c +++ b/data/behavior_data.c @@ -288,8 +288,8 @@ #define DISABLE_RENDERING() \ BC_B(0x35) -// Spawns a water splash with the given parameters. -#define SPAWN_WATER_SPLASH(params) \ +// Spawns a water droplet with the given parameters. +#define SPAWN_WATER_DROPLET(params) \ BC_B(0x37), \ BC_PTR(params) @@ -379,7 +379,7 @@ const BehaviorScript bhvPoleGrabbing[] = { CALL_NATIVE(bhv_pole_init), SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), - CALL_NATIVE(BehClimbDetectLoop), + CALL_NATIVE(bhv_pole_base_loop), END_LOOP(), }; @@ -778,7 +778,7 @@ const BehaviorScript bhvFadingWarp[] = { SET_INT(oInteractType, INTERACT_WARP), SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), - CALL_NATIVE(BehFadingWarpLoop), + CALL_NATIVE(bhv_fading_warp_loop), END_LOOP(), }; @@ -1209,8 +1209,8 @@ const BehaviorScript bhvBreakBoxTriangle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BEGIN_REPEAT(18), - CALL_NATIVE(obj_rotate_face_angle_using_vel), - CALL_NATIVE(obj_move_using_fvel_and_gravity), + CALL_NATIVE(cur_obj_rotate_face_angle_using_vel), + CALL_NATIVE(cur_obj_move_using_fvel_and_gravity), END_REPEAT(), DEACTIVATE(), }; @@ -1251,7 +1251,7 @@ const BehaviorScript bhvGroundSand[] = { BEGIN(OBJ_LIST_DEFAULT), BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), - CALL_NATIVE(bhv_unused_0e40_init), + CALL_NATIVE(bhv_ground_sand_init), DELAY(1), DEACTIVATE(), }; @@ -1278,7 +1278,7 @@ const BehaviorScript bhvEndToad[] = { LOAD_ANIMATIONS(oAnimations, toad_seg6_anims_0600FB58), ANIMATE(0), BEGIN_LOOP(), - CALL_NATIVE(BehEndToadLoop), + CALL_NATIVE(bhv_end_toad_loop), END_LOOP(), }; @@ -1288,7 +1288,7 @@ const BehaviorScript bhvEndPeach[] = { LOAD_ANIMATIONS(oAnimations, peach_seg5_anims_0501C41C), ANIMATE(0), BEGIN_LOOP(), - CALL_NATIVE(BehEndPeachLoop), + CALL_NATIVE(bhv_end_peach_loop), END_LOOP(), }; @@ -1371,7 +1371,7 @@ const BehaviorScript bhvDddMovingPole[] = { SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), CALL_NATIVE(bhv_ddd_moving_pole_loop), - CALL_NATIVE(BehClimbDetectLoop), + CALL_NATIVE(bhv_pole_base_loop), END_LOOP(), }; @@ -1971,7 +1971,7 @@ const BehaviorScript bhvTiltingBowserLavaPlatform[] = { SET_INT(oFaceAngleYaw, 0), SET_HOME(), BEGIN_LOOP(), - CALL_NATIVE(obj_rotate_face_angle_using_vel), + CALL_NATIVE(cur_obj_rotate_face_angle_using_vel), CALL_NATIVE(load_object_collision_model), END_LOOP(), }; @@ -2082,7 +2082,7 @@ const BehaviorScript bhvBlueFish[] = { LOAD_ANIMATIONS(oAnimations, blue_fish_seg3_anims_0301C2B0), ANIMATE(0), BEGIN_LOOP(), - CALL_NATIVE(bhv_blue_fish_loop), + CALL_NATIVE(bhv_blue_fish_movement_loop), END_LOOP(), }; @@ -2503,16 +2503,16 @@ const BehaviorScript bhvLargeFishGroup[] = { DISABLE_RENDERING(), OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), - CALL_NATIVE(bhv_fish_loop), + CALL_NATIVE(bhv_large_fish_group_loop), END_LOOP(), }; -const BehaviorScript bhvFishGroup2[] = { +const BehaviorScript bhvFish[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SET_HOME(), BEGIN_LOOP(), - CALL_NATIVE(bhv_fish_group_2_loop), + CALL_NATIVE(bhv_fish_loop), END_LOOP(), }; @@ -2547,7 +2547,7 @@ const BehaviorScript bhvChirpChirpUnused[] = { DISABLE_RENDERING(), OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BEGIN_LOOP(), - CALL_NATIVE(bhv_bird_chirp_chirp_loop), + CALL_NATIVE(bhv_bub_spawner_loop), END_LOOP(), }; @@ -2562,7 +2562,7 @@ const BehaviorScript bhvBub[] = { SET_HOME(), SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), - CALL_NATIVE(bhv_cheep_cheep_loop), + CALL_NATIVE(bhv_bub_loop), END_LOOP(), }; @@ -2583,7 +2583,7 @@ const BehaviorScript bhvRotatingExclamationMark[] = { OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SCALE(200), BEGIN_LOOP(), - CALL_NATIVE(bhv_rotatin_exclamation_box_loop), + CALL_NATIVE(bhv_rotating_exclamation_box_loop), ADD_INT(oMoveAngleYaw, 0x800), END_LOOP(), }; @@ -2771,7 +2771,7 @@ const BehaviorScript bhvWhitePuffSmoke2[] = { SET_INT(oAnimState, -1), BEGIN_REPEAT(7), CALL_NATIVE(bhv_white_puff_2_loop), - CALL_NATIVE(obj_move_using_fvel_and_gravity), + CALL_NATIVE(cur_obj_move_using_fvel_and_gravity), ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), @@ -3151,7 +3151,7 @@ const BehaviorScript bhvTree[] = { SET_HITBOX(/*Radius*/ 80, /*Height*/ 500), SET_INT(oIntangibleTimer, 0), BEGIN_LOOP(), - CALL_NATIVE(BehClimbDetectLoop), + CALL_NATIVE(bhv_pole_base_loop), END_LOOP(), }; @@ -3237,6 +3237,7 @@ const BehaviorScript bhvSmallWhomp[] = { END_LOOP(), }; +// The large splash Mario makes when he jumps into a pool of water. const BehaviorScript bhvWaterSplash[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), @@ -3244,9 +3245,9 @@ const BehaviorScript bhvWaterSplash[] = { SET_INT(oAnimState, -1), BEGIN_REPEAT(3), ADD_INT(oAnimState, 1), - CALL_NATIVE(bhv_water_splash_loop), + CALL_NATIVE(bhv_water_splash_spawn_droplets), DELAY(1), - CALL_NATIVE(bhv_water_splash_loop), + CALL_NATIVE(bhv_water_splash_spawn_droplets), END_REPEAT(), BEGIN_REPEAT(5), ADD_INT(oAnimState, 1), @@ -3256,16 +3257,18 @@ const BehaviorScript bhvWaterSplash[] = { DEACTIVATE(), }; -const BehaviorScript bhvWaterDrops[] = { +// Droplets of water that spawn as a result of various water splashes. +const BehaviorScript bhvWaterDroplet[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), BILLBOARD(), BEGIN_LOOP(), - CALL_NATIVE(bhv_water_drops_loop), + CALL_NATIVE(bhv_water_droplet_loop), END_LOOP(), }; -const BehaviorScript bhvWaterSurfaceWhiteWave[] = { +// Small splashes that are seen when a water droplet lands back into the water. +const BehaviorScript bhvWaterDropletSplash[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifndef VERSION_JP @@ -3273,7 +3276,7 @@ const BehaviorScript bhvWaterSurfaceWhiteWave[] = { SET_INT(oFaceAngleYaw, 0), SET_INT(oFaceAngleRoll, 0), #endif - CALL_NATIVE(bhv_water_surface_white_wave_init), + CALL_NATIVE(bhv_water_droplet_splash_init), ADD_FLOAT(oPosY, 5), SET_INT(oAnimState, -1), BEGIN_REPEAT(6), @@ -3282,7 +3285,8 @@ const BehaviorScript bhvWaterSurfaceWhiteWave[] = { DEACTIVATE(), }; -const BehaviorScript bhvObjectBubbleRipples[] = { +// The splash created when an air bubble hits the surface of the water. +const BehaviorScript bhvBubbleSplash[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifdef VERSION_JP @@ -3296,14 +3300,15 @@ const BehaviorScript bhvObjectBubbleRipples[] = { SET_INT(oFaceAngleRoll, 0), #endif SET_INT(oAnimState, -1), - CALL_NATIVE(bhv_object_bubble_ripples_init), + CALL_NATIVE(bhv_bubble_splash_init), BEGIN_REPEAT(6), ADD_INT(oAnimState, 1), END_REPEAT(), DEACTIVATE(), }; -const BehaviorScript bhvSurfaceWaves[] = { +// The water wave surrounding Mario when he is idle in a pool of water. +const BehaviorScript bhvIdleWaterWave[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifdef VERSION_JP @@ -3319,16 +3324,18 @@ const BehaviorScript bhvSurfaceWaves[] = { SET_INT(oAnimState, -1), ADD_INT(oAnimState, 1), BEGIN_LOOP(), - CALL_NATIVE(bhv_surface_waves_loop), + CALL_NATIVE(bhv_idle_water_wave_loop), ADD_INT(oAnimState, 1), BEGIN_REPEAT(6), - CALL_NATIVE(bhv_surface_waves_loop), + CALL_NATIVE(bhv_idle_water_wave_loop), END_REPEAT(), - CALL_NATIVE(bhv_surface_waves_loop), + CALL_NATIVE(bhv_idle_water_wave_loop), END_LOOP(), }; -const BehaviorScript bhvWaterSurfaceWhiteWave2[] = { +// Water splashes similar to the splashes created by water droplets, but are created by other objects. +// Unlike water droplet splashes, they are unimportant objects. +const BehaviorScript bhvObjectWaterSplash[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), #ifdef VERSION_JP @@ -3348,41 +3355,48 @@ const BehaviorScript bhvWaterSurfaceWhiteWave2[] = { DEACTIVATE(), }; -const BehaviorScript bhvWavesGenerator[] = { +// Waves that are generated when running in shallow water. +const BehaviorScript bhvShallowWaterWave[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DISABLE_RENDERING(), BEGIN_REPEAT(5), - SPAWN_WATER_SPLASH(&D_8032FE18), + SPAWN_WATER_DROPLET(&sShallowWaterWaveDropletParams), END_REPEAT_CONTINUE(), DELAY(1), - BIT_CLEAR_INT32(oActiveParticleFlags, ACTIVE_PARTICLE_8), + BIT_CLEAR_INT32(oActiveParticleFlags, ACTIVE_PARTICLE_SHALLOW_WATER_WAVE), DEACTIVATE(), }; -const BehaviorScript bhvSurfaceWaveShrinking[] = { +// A small water splash that occurs when jumping in and out of shallow water. +// Unlike the larger water splash it has no visible model of its own. +// It has a 1 in 256 chance of spawning the fish particle easter egg. +const BehaviorScript bhvShallowWaterSplash[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), DISABLE_RENDERING(), BEGIN_REPEAT(18), - SPAWN_WATER_SPLASH(&D_8032FDD0), + SPAWN_WATER_DROPLET(&sShallowWaterSplashDropletParams), END_REPEAT_CONTINUE(), - CALL_NATIVE(bhv_surface_wave_shrinking_init), + CALL_NATIVE(bhv_shallow_water_splash_init), DELAY(1), - BIT_CLEAR_INT32(oActiveParticleFlags, ACTIVE_PARTICLE_12), + BIT_CLEAR_INT32(oActiveParticleFlags, ACTIVE_PARTICLE_SHALLOW_WATER_SPLASH), DEACTIVATE(), }; -const BehaviorScript bhvWaterType[] = { +// Waves created by other objects along the water's surface, specifically the koopa shell and Sushi. +// Unlike Mario's waves, they are unimportant objects. +const BehaviorScript bhvObjectWaveTrail[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), - GOTO(bhvWaveTrailOnSurface + 1 + 1 + 2), + GOTO(bhvWaveTrail + 1 + 1 + 2), // Wave trail - common }; -const BehaviorScript bhvWaveTrailOnSurface[] = { +// The waves created by Mario while he is swimming. +const BehaviorScript bhvWaveTrail[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), - BIT_CLEAR_INT32(oActiveParticleFlags, ACTIVE_PARTICLE_10), + BIT_CLEAR_INT32(oActiveParticleFlags, ACTIVE_PARTICLE_WAVE_TRAIL), // Wave trail - common: SET_FLOAT(oFaceAnglePitch, 0), SET_FLOAT(oFaceAngleYaw, 0), @@ -3390,41 +3404,47 @@ const BehaviorScript bhvWaveTrailOnSurface[] = { SET_INT(oAnimState, -1), BEGIN_REPEAT(8), ADD_INT(oAnimState, 1), - CALL_NATIVE(bhv_wave_trail_loop), + CALL_NATIVE(bhv_wave_trail_shrink), DELAY(1), - CALL_NATIVE(bhv_wave_trail_loop), + CALL_NATIVE(bhv_wave_trail_shrink), END_REPEAT(), DEACTIVATE(), }; -const BehaviorScript bhvTinyWhiteWindParticle[] = { +// Tiny wind particles that provide aesthetics to the strong winds generated by the Snowman and Fwoosh. +// As they are unimportant objects, they don't have collision with Mario. +const BehaviorScript bhvTinyStrongWindParticle[] = { BEGIN(OBJ_LIST_UNIMPORTANT), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), - CALL_NATIVE(bhv_white_wind_particle_loop), + CALL_NATIVE(bhv_strong_wind_particle_loop), END_LOOP(), }; -const BehaviorScript bhvWindParticle[] = { +// Strong wind particles generated by the Snowman and Fwoosh that blow Mario back and knock his cap off. +const BehaviorScript bhvStrongWindParticle[] = { BEGIN(OBJ_LIST_POLELIKE), OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE), BILLBOARD(), BEGIN_LOOP(), - CALL_NATIVE(bhv_white_wind_particle_loop), + CALL_NATIVE(bhv_strong_wind_particle_loop), END_LOOP(), }; -const BehaviorScript bhvSnowmanWindBlowing[] = { +// The handler for the strong wind blown by the Snowman in SL. Triggers dialog and then aims towards Mario. +const BehaviorScript bhvSLSnowmanWind[] = { BEGIN(OBJ_LIST_DEFAULT), OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), SET_HOME(), BEGIN_LOOP(), - CALL_NATIVE(bhv_snowman_wind_blowing_loop), + CALL_NATIVE(bhv_sl_snowman_wind_loop), END_LOOP(), }; -const BehaviorScript bhvWalkingPenguin[] = { +// The penguin that walks erratically along the ice bridge in front of the Snowman in SL. +// Blocks strong wind particles, allowing Mario to walk behind it. +const BehaviorScript bhvSLWalkingPenguin[] = { BEGIN(OBJ_LIST_SURFACE), OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), LOAD_COLLISION_DATA(penguin_seg5_collision_05008B88), @@ -3434,7 +3454,7 @@ const BehaviorScript bhvWalkingPenguin[] = { SCALE(600), SET_HOME(), BEGIN_LOOP(), - CALL_NATIVE(bhv_walking_penguin_loop), + CALL_NATIVE(bhv_sl_walking_penguin_loop), CALL_NATIVE(load_object_collision_model), END_LOOP(), }; @@ -3469,18 +3489,18 @@ const BehaviorScript bhvToadMessage[] = { SET_HITBOX(/*Radius*/ 80, /*Height*/ 100), SET_INT(oIntangibleTimer, 0), CALL_NATIVE(bhv_init_room), - CALL_NATIVE(bhvToadMessage_init), + CALL_NATIVE(bhv_toad_message_init), BEGIN_LOOP(), - CALL_NATIVE(bhvToadMessage_loop), + CALL_NATIVE(bhv_toad_message_loop), END_LOOP(), }; const BehaviorScript bhvUnlockDoorStar[] = { BEGIN(OBJ_LIST_LEVEL), OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), - CALL_NATIVE(bhvUnlockDoorStar_init), + CALL_NATIVE(bhv_unlock_door_star_init), BEGIN_LOOP(), - CALL_NATIVE(bhvUnlockDoorStar_loop), + CALL_NATIVE(bhv_unlock_door_star_loop), END_LOOP(), }; @@ -3695,7 +3715,7 @@ const BehaviorScript bhvBobombFuseSmoke[] = { CALL_NATIVE(bhv_bobomb_fuse_smoke_init), DELAY(1), BEGIN_LOOP(), - CALL_NATIVE(BehDustSmokeLoop), + CALL_NATIVE(bhv_dust_smoke_loop), ADD_INT(oAnimState, 1), END_LOOP(), }; @@ -3944,7 +3964,7 @@ const BehaviorScript bhvBobombBullyDeathSmoke[] = { CALL_NATIVE(bhv_bobomb_bully_death_smoke_init), DELAY(1), BEGIN_LOOP(), - CALL_NATIVE(BehDustSmokeLoop), + CALL_NATIVE(bhv_dust_smoke_loop), ADD_INT(oAnimState, 1), END_LOOP(), }; @@ -3956,7 +3976,7 @@ const BehaviorScript bhvSmoke[] = { SET_INT(oAnimState, -1), DELAY(1), BEGIN_LOOP(), - CALL_NATIVE(BehDustSmokeLoop), + CALL_NATIVE(bhv_dust_smoke_loop), ADD_INT(oAnimState, 1), END_LOOP(), }; @@ -4634,7 +4654,7 @@ const BehaviorScript bhvLllVolcanoFallingTrap[] = { LOAD_COLLISION_DATA(lll_seg7_collision_falling_wall), SET_HOME(), BEGIN_LOOP(), - CALL_NATIVE(bhvLllVolcanoFallingTrap_loop), + CALL_NATIVE(bhv_volcano_trap_loop), CALL_NATIVE(load_object_collision_model), END_LOOP(), }; @@ -5016,7 +5036,7 @@ const BehaviorScript bhvYoshi[] = { CALL_NATIVE(bhv_yoshi_init), BEGIN_LOOP(), SET_INT(oIntangibleTimer, 0), - CALL_NATIVE(BehYoshiLoop), + CALL_NATIVE(bhv_yoshi_loop), END_LOOP(), }; @@ -5056,7 +5076,7 @@ const BehaviorScript bhvKoopaFlag[] = { LOAD_ANIMATIONS(oAnimations, koopa_flag_seg6_anims_06001028), ANIMATE(0), BEGIN_LOOP(), - CALL_NATIVE(BehClimbDetectLoop), + CALL_NATIVE(bhv_pole_base_loop), END_LOOP(), }; @@ -5422,7 +5442,7 @@ const BehaviorScript bhvTTCTreadmill[] = { DELAY(1), BEGIN_LOOP(), CALL_NATIVE(bhv_ttc_treadmill_update), - CALL_NATIVE(obj_compute_vel_xz), + CALL_NATIVE(cur_obj_compute_vel_xz), CALL_NATIVE(load_object_collision_model), END_LOOP(), }; @@ -5759,7 +5779,7 @@ const BehaviorScript bhvSnufit[] = { SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0), CALL_NATIVE(bhv_init_room), BEGIN_LOOP(), - SET_INT(oSnufitUnkF4, 0), + SET_INT(oSnufitRecoil, 0), CALL_NATIVE(bhv_snufit_loop), END_LOOP(), }; @@ -5787,7 +5807,7 @@ const BehaviorScript bhvHorizontalGrindel[] = { SCALE(90), CALL_NATIVE(bhv_horizontal_grindel_init), BEGIN_LOOP(), - CALL_NATIVE(obj_update_floor_and_walls), + CALL_NATIVE(cur_obj_update_floor_and_walls), CALL_NATIVE(bhv_horizontal_grindel_update), CALL_NATIVE(load_object_collision_model), END_LOOP(), @@ -5960,7 +5980,7 @@ const BehaviorScript bhvDDDPole[] = { SET_FLOAT(oDDDPoleVel, 10), BEGIN_LOOP(), CALL_NATIVE(bhv_ddd_pole_update), - CALL_NATIVE(BehClimbDetectLoop), + CALL_NATIVE(bhv_pole_base_loop), END_LOOP(), }; diff --git a/diff.py b/diff.py old mode 100644 new mode 100755 diff --git a/enhancements/mem_error_screen.patch b/enhancements/mem_error_screen.patch index 3dfe2ac6..6429a674 100644 --- a/enhancements/mem_error_screen.patch +++ b/enhancements/mem_error_screen.patch @@ -37,7 +37,7 @@ index 2fda11d7..8ba0a1c9 100644 +#define TEXT_PJ64 _("If you are using PJ64 1.6, go to:\nOptions > Settings > Rom Settings Tab > Memory Size\nthen select 8 MB from the drop-down box.") +#define TEXT_PJ64_2 _("If you are using PJ64 2.X, go to:\nOptions > Settings > Config: > Memory Size, select 8 MB") + - #ifdef VERSION_JP + #if defined(VERSION_JP) || defined(VERSION_SH) /** diff --git a/levels/entry.c b/levels/entry.c @@ -274,10 +274,10 @@ index 00000000..20eeef8f + + addr = segmented_to_virtual(level_script_entry_error_screen); + -+ func_80247ED8(); ++ rendering_init(); + + while (1) { -+ func_80247FAC(); ++ config_gfx_pool(); + addr = level_script_execute(addr); + display_and_vsync(); + } diff --git a/extract_assets.py b/extract_assets.py index 91e5dd59..c83d3bf6 100755 --- a/extract_assets.py +++ b/extract_assets.py @@ -20,6 +20,8 @@ def read_local_asset_list(f): def asset_needs_update(asset, version): + if version <= 5 and asset == "textures/spooky/bbh_textures.00800.rgba16.png": + return True if version <= 4 and asset in ["textures/mountain/ttm_textures.01800.rgba16.png", "textures/mountain/ttm_textures.05800.rgba16.png"]: return True if version <= 3 and asset == "textures/cave/hmc_textures.01800.rgba16.png": @@ -57,7 +59,7 @@ def clean_assets(local_asset_file): def main(): # In case we ever need to change formats of generated files, we keep a # revision ID in the local asset file. - new_version = 5 + new_version = 6 try: local_asset_file = open(".assets-local.txt") diff --git a/include/PR/os_pi.h b/include/PR/os_pi.h index b0f0cb21..9b5abd2b 100644 --- a/include/PR/os_pi.h +++ b/include/PR/os_pi.h @@ -6,7 +6,7 @@ /* Types */ typedef struct { -#ifndef VERSION_EU +#if !defined(VERSION_EU) && !defined(VERSION_SH) u32 errStatus; #endif void *dramAddr; @@ -22,7 +22,7 @@ typedef struct { u16 blockNum; // 6 s32 sectorNum; // 8 uintptr_t devAddr; // c -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) u32 unk10; //error status added moved to blockinfo #endif u32 bmCtlShadow; // 10 @@ -60,7 +60,7 @@ typedef struct { /*0x08*/ void *dramAddr; /*0x0C*/ uintptr_t devAddr; /*0x10*/ size_t size; -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) OSPiHandle *piHandle; // from the official definition #endif } OSIoMesg; diff --git a/include/behavior_data.h b/include/behavior_data.h index 83f1f1e1..3334adf5 100644 --- a/include/behavior_data.h +++ b/include/behavior_data.h @@ -211,7 +211,7 @@ extern const BehaviorScript bhvFish2[]; extern const BehaviorScript bhvFish3[]; extern const BehaviorScript bhvLargeFishGroup[]; extern const BehaviorScript bhvFishCommon[]; -extern const BehaviorScript bhvFishGroup2[]; +extern const BehaviorScript bhvFish[]; extern const BehaviorScript bhvWdwExpressElevator[]; extern const BehaviorScript bhvWdwExpressElevatorPlatform[]; extern const BehaviorScript bhvChirpChirp[]; @@ -285,19 +285,19 @@ extern const BehaviorScript bhvScuttlebugSpawn[]; extern const BehaviorScript bhvWhompKingBoss[]; extern const BehaviorScript bhvSmallWhomp[]; extern const BehaviorScript bhvWaterSplash[]; -extern const BehaviorScript bhvWaterDrops[]; -extern const BehaviorScript bhvWaterSurfaceWhiteWave[]; -extern const BehaviorScript bhvObjectBubbleRipples[]; -extern const BehaviorScript bhvSurfaceWaves[]; -extern const BehaviorScript bhvWaterSurfaceWhiteWave2[]; -extern const BehaviorScript bhvWavesGenerator[]; -extern const BehaviorScript bhvSurfaceWaveShrinking[]; -extern const BehaviorScript bhvWaterType[]; -extern const BehaviorScript bhvWaveTrailOnSurface[]; -extern const BehaviorScript bhvTinyWhiteWindParticle[]; -extern const BehaviorScript bhvWindParticle[]; -extern const BehaviorScript bhvSnowmanWindBlowing[]; -extern const BehaviorScript bhvWalkingPenguin[]; +extern const BehaviorScript bhvWaterDroplet[]; +extern const BehaviorScript bhvWaterDropletSplash[]; +extern const BehaviorScript bhvBubbleSplash[]; +extern const BehaviorScript bhvIdleWaterWave[]; +extern const BehaviorScript bhvObjectWaterSplash[]; +extern const BehaviorScript bhvShallowWaterWave[]; +extern const BehaviorScript bhvShallowWaterSplash[]; +extern const BehaviorScript bhvObjectWaveTrail[]; +extern const BehaviorScript bhvWaveTrail[]; +extern const BehaviorScript bhvTinyStrongWindParticle[]; +extern const BehaviorScript bhvStrongWindParticle[]; +extern const BehaviorScript bhvSLSnowmanWind[]; +extern const BehaviorScript bhvSLWalkingPenguin[]; extern const BehaviorScript bhvYellowBall[]; extern const BehaviorScript bhvMario[]; extern const BehaviorScript bhvToadMessage[]; diff --git a/src/game/eu_translation.h b/include/eu_translation.h similarity index 77% rename from src/game/eu_translation.h rename to include/eu_translation.h index e2e53f8d..fc476ede 100644 --- a/src/game/eu_translation.h +++ b/include/eu_translation.h @@ -3,6 +3,14 @@ #include "types.h" +// PAL changes most text to arrays for each language. This define allows these +// differences to be combined. +#ifdef VERSION_EU + #define LANGUAGE_ARRAY(cmd) cmd[LANGUAGE_FUNCTION] +#else + #define LANGUAGE_ARRAY(cmd) cmd +#endif + // EU translations are contained in three segment 0x19 compressed data blocks extern u8 _translation_en_mio0SegmentRomStart[]; extern u8 _translation_en_mio0SegmentRomEnd[]; diff --git a/include/model_ids.h b/include/model_ids.h index e3b3c934..8b6e2991 100644 --- a/include/model_ids.h +++ b/include/model_ids.h @@ -498,10 +498,10 @@ #define MODEL_WHITE_PARTICLE 0xA0 // white_particle_dl #define MODEL_PEBBLE 0xA1 // pebble_seg3_dl_0301CB00 #define MODEL_LEAVES 0xA2 // leaves_geo -#define MODEL_WATER_WAVES 0xA3 // water_waves_geo +#define MODEL_WAVE_TRAIL 0xA3 // wave_trail_geo #define MODEL_WHITE_PARTICLE_SMALL 0xA4 // white_particle_small_dl -#define MODEL_SPOT_ON_GROUND 0xA5 // spot_on_ground_geo -#define MODEL_WATER_WAVES_SURF 0xA6 // water_waves_surface_geo +#define MODEL_SMALL_WATER_SPLASH 0xA5 // small_water_splash_geo +#define MODEL_IDLE_WATER_WAVE 0xA6 // idle_water_wave_geo #define MODEL_WATER_SPLASH 0xA7 // water_splash_geo #define MODEL_BUBBLE 0xA8 // bubble_geo // find me diff --git a/include/object_constants.h b/include/object_constants.h index 51f45fac..b828b6eb 100644 --- a/include/object_constants.h +++ b/include/object_constants.h @@ -106,24 +106,26 @@ OBJ_MOVE_UNDERWATER_ON_GROUND) /* oActiveParticleFlags */ -#define ACTIVE_PARTICLE_0 0x00000001 -#define ACTIVE_PARTICLE_3 0x00000008 -#define ACTIVE_PARTICLE_4 0x00000010 -#define ACTIVE_PARTICLE_5 0x00000020 -#define ACTIVE_PARTICLE_6 0x00000040 -#define ACTIVE_PARTICLE_7 0x00000080 -#define ACTIVE_PARTICLE_8 0x00000100 -#define ACTIVE_PARTICLE_9 0x00000200 -#define ACTIVE_PARTICLE_10 0x00000400 -#define ACTIVE_PARTICLE_11 0x00000800 -#define ACTIVE_PARTICLE_12 0x00001000 -#define ACTIVE_PARTICLE_13 0x00002000 -#define ACTIVE_PARTICLE_14 0x00004000 -#define ACTIVE_PARTICLE_15 0x00008000 -#define ACTIVE_PARTICLE_16 0x00010000 -#define ACTIVE_PARTICLE_17 0x00020000 -#define ACTIVE_PARTICLE_18 0x00040000 -#define ACTIVE_PARTICLE_19 0x00080000 +#define ACTIVE_PARTICLE_0 (1 << 0) // 0x00000001 +#define ACTIVE_PARTICLE_UNUSED_1 (1 << 1) // 0x00000002 +#define ACTIVE_PARTICLE_UNUSED_2 (1 << 2) // 0x00000004 +#define ACTIVE_PARTICLE_3 (1 << 3) // 0x00000008 +#define ACTIVE_PARTICLE_4 (1 << 4) // 0x00000010 +#define ACTIVE_PARTICLE_5 (1 << 5) // 0x00000020 +#define ACTIVE_PARTICLE_6 (1 << 6) // 0x00000040 +#define ACTIVE_PARTICLE_IDLE_WATER_WAVE (1 << 7) // 0x00000080 +#define ACTIVE_PARTICLE_SHALLOW_WATER_WAVE (1 << 8) // 0x00000100 +#define ACTIVE_PARTICLE_9 (1 << 9) // 0x00000200 +#define ACTIVE_PARTICLE_WAVE_TRAIL (1 << 10) // 0x00000400 +#define ACTIVE_PARTICLE_11 (1 << 11) // 0x00000800 +#define ACTIVE_PARTICLE_SHALLOW_WATER_SPLASH (1 << 12) // 0x00001000 +#define ACTIVE_PARTICLE_13 (1 << 13) // 0x00002000 +#define ACTIVE_PARTICLE_14 (1 << 14) // 0x00004000 +#define ACTIVE_PARTICLE_15 (1 << 15) // 0x00008000 +#define ACTIVE_PARTICLE_16 (1 << 16) // 0x00010000 +#define ACTIVE_PARTICLE_17 (1 << 17) // 0x00020000 +#define ACTIVE_PARTICLE_18 (1 << 18) // 0x00040000 +#define ACTIVE_PARTICLE_19 (1 << 19) // 0x00080000 /* oAction */ #define OBJ_ACT_LAVA_DEATH 100 @@ -197,6 +199,24 @@ #define BOBOMB_BUDDY_HAS_NOT_TALKED 0 #define BOBOMB_BUDDY_HAS_TALKED 2 +/* Fish */ + /* oAction */ + #define FISH_ACT_INIT 0 + #define FISH_ACT_ACTIVE 1 + #define FISH_ACT_RESPAWN 2 + +/* Blue_Fish */ + /* oAction */ + #define BLUE_FISH_ACT_DIVE 0 + #define BLUE_FISH_ACT_TURN 1 + #define BLUE_FISH_ACT_ASCEND 2 + #define BLUE_FISH_ACT_TURN_BACK 3 + + /* oAction: bhv_blue_fish_spawn_loop */ + #define BLUE_FISH_ACT_SPAWN 0 + #define BLUE_FISH_ACT_ROOM 1 + #define BLUE_FISH_ACT_DUPLICATE 2 + /* Cannon Trap Door */ /* oAction */ #define CANNON_TRAP_DOOR_ACT_CLOSED 0 @@ -733,10 +753,37 @@ #define PYRAMID_WALL_BP_POSITION_MIDDLE 1 #define PYRAMID_WALL_BP_POSITION_LOW 2 -/* Tuxie */ +/* Penguins (general) */ /* Walking sounds */ #define PENGUIN_WALK_BABY 0 #define PENGUIN_WALK_BIG 1 + + /* Animations */ + #define PENGUIN_ANIM_WALK 0 + #define PENGUIN_ANIM_IDLE 3 + +/* Racing penguin */ + /* oAction */ + #define RACING_PENGUIN_ACT_WAIT_FOR_MARIO 0 + #define RACING_PENGUIN_ACT_SHOW_INIT_TEXT 1 + #define RACING_PENGUIN_ACT_PREPARE_FOR_RACE 2 + #define RACING_PENGUIN_ACT_RACE 3 + #define RACING_PENGUIN_ACT_FINISH_RACE 4 + #define RACING_PENGUIN_ACT_SHOW_FINAL_TEXT 5 + +/* SL walking penguin */ + /* oAction */ + #define SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS 0 + #define SL_WALKING_PENGUIN_ACT_TURNING_BACK 1 + #define SL_WALKING_PENGUIN_ACT_RETURNING 2 + #define SL_WALKING_PENGUIN_ACT_TURNING_FORWARDS 3 + +/* Snowman wind */ + /* oSubAction */ + #define SL_SNOWMAN_WIND_ACT_IDLE 0 + #define SL_SNOWMAN_WIND_ACT_TALKING 1 + #define SL_SNOWMAN_WIND_ACT_BLOWING 2 + /* Water bomb */ /* oAction */ @@ -850,21 +897,17 @@ #define BIRD_BP_SPAWNED 0 #define BIRD_BP_SPAWNER 1 -/* Racing penguin */ - /* oAction */ - #define RACING_PENGUIN_ACT_WAIT_FOR_MARIO 0 - #define RACING_PENGUIN_ACT_SHOW_INIT_TEXT 1 - #define RACING_PENGUIN_ACT_PREPARE_FOR_RACE 2 - #define RACING_PENGUIN_ACT_RACE 3 - #define RACING_PENGUIN_ACT_FINISH_RACE 4 - #define RACING_PENGUIN_ACT_SHOW_FINAL_TEXT 5 - /* Skeeter */ /* oAction */ #define SKEETER_ACT_IDLE 0 #define SKEETER_ACT_LUNGE 1 #define SKEETER_ACT_WALK 2 +/* Snufit */ + /* oAction */ + #define SNUFIT_ACT_IDLE 0 + #define SNUFIT_ACT_SHOOT 1 + /* Tweester */ /* oAction */ #define TWEESTER_ACT_IDLE 0 diff --git a/include/object_fields.h b/include/object_fields.h index bff69bed..4eb50ed3 100644 --- a/include/object_fields.h +++ b/include/object_fields.h @@ -483,19 +483,19 @@ #define /*0x0F4*/ oFireSpitterScaleVel OBJECT_FIELD_F32(0x1B) /* Blue Fish */ -#define /*0x0F4*/ oBlueFishUnkF4 OBJECT_FIELD_F32(0x1B) -#define /*0x0F8*/ oBlueFishUnkF8 OBJECT_FIELD_S32(0x1C) -#define /*0x100*/ oBlueFishUnk100 OBJECT_FIELD_F32(0x1E) +#define /*0x0F4*/ oBlueFishRandomVel OBJECT_FIELD_F32(0x1B) +#define /*0x0F8*/ oBlueFishRandomTime OBJECT_FIELD_S32(0x1C) +#define /*0x100*/ oBlueFishRandomAngle OBJECT_FIELD_F32(0x1E) /* Fish Group */ -#define /*0x0F4*/ oFishGroupUnkF4 OBJECT_FIELD_F32(0x1B) -#define /*0x0F8*/ oFishGroupUnkF8 OBJECT_FIELD_F32(0x1C) -#define /*0x0FC*/ oFishGroupUnkFC OBJECT_FIELD_F32(0x1D) -#define /*0x100*/ oFishGroupUnk100 OBJECT_FIELD_S32(0x1E) -#define /*0x104*/ oFishGroupUnk104 OBJECT_FIELD_F32(0x1F) -#define /*0x108*/ oFishGroupUnk108 OBJECT_FIELD_F32(0x20) -#define /*0x10C*/ oFishGroupUnk10C OBJECT_FIELD_F32(0x21) -#define /*0x110*/ oFishGroupUnk110 OBJECT_FIELD_F32(0x22) +#define /*0x0F4*/ oFishWaterLevel OBJECT_FIELD_F32(0x1B) +#define /*0x0F8*/ oFishPosY OBJECT_FIELD_F32(0x1C) +#define /*0x0FC*/ oFishRandomOffset OBJECT_FIELD_F32(0x1D) +#define /*0x100*/ oFishRandomSpeed OBJECT_FIELD_S32(0x1E) +#define /*0x104*/ oFishRespawnDistance OBJECT_FIELD_F32(0x1F) +#define /*0x108*/ oFishRandomVel OBJECT_FIELD_F32(0x20) +#define /*0x10C*/ oFishDepthDistance OBJECT_FIELD_F32(0x21) +#define /*0x110*/ oFishActiveDistance OBJECT_FIELD_F32(0x22) /* Flame */ #define /*0x0F4*/ oFlameUnkF4 OBJECT_FIELD_F32(0x1B) @@ -752,11 +752,11 @@ #define /*0x108*/ oSmallPenguinUnk108 OBJECT_FIELD_F32(0x20) #define /*0x110*/ oSmallPenguinUnk110 OBJECT_FIELD_S32(0x22) -/* Walking Penguin */ -#define /*0x100*/ oWalkingPenguinUnk100 OBJECT_FIELD_F32(0x1E) -#define /*0x104*/ oWalkingPenguinUnk104 OBJECT_FIELD_F32(0x1F) -#define /*0x10C*/ oWalkingPenguinUnk10C OBJECT_FIELD_S32(0x21) -#define /*0x110*/ oWalkingPenguinUnk110 OBJECT_FIELD_S32(0x22) +/* SL Walking Penguin */ +#define /*0x100*/ oSLWalkingPenguinWindCollisionXPos OBJECT_FIELD_F32(0x1E) +#define /*0x104*/ oSLWalkingPenguinWindCollisionZPos OBJECT_FIELD_F32(0x1F) +#define /*0x10C*/ oSLWalkingPenguinCurStep OBJECT_FIELD_S32(0x21) +#define /*0x110*/ oSLWalkingPenguinCurStepTimer OBJECT_FIELD_S32(0x22) /* Piranha Plant */ #define /*0x0F4*/ oPiranhaPlantSleepMusicState OBJECT_FIELD_S32(0x1B) @@ -884,19 +884,19 @@ #define /*0x0F4*/ oSnowmansHeadUnkF4 OBJECT_FIELD_S32(0x1B) /* Snowman Wind Blowing */ -#define /*0x0F4*/ oSnowmanWindBlowingUnkF4 OBJECT_FIELD_S32(0x1B) +#define /*0x0F4*/ oSLSnowmanWindOriginalYaw OBJECT_FIELD_S32(0x1B) /* Snufit */ -#define /*0x0F4*/ oSnufitUnkF4 OBJECT_FIELD_S32(0x1B) -#define /*0x0F8*/ oSnufitUnkF8 OBJECT_FIELD_F32(0x1C) -#define /*0x100*/ oSnufitUnk100 OBJECT_FIELD_S32(0x1E) -#define /*0x104*/ oSnufitUnk104 OBJECT_FIELD_S32(0x1F) -#define /*0x108*/ oSnufitUnk108 OBJECT_FIELD_S32(0x20) -#define /*0x10C*/ oSnufitUnk10C OBJECT_FIELD_S32(0x21) -#define /*0x1AC*/ oSnufitUnk1AC OBJECT_FIELD_S16(0x49, 0) -#define /*0x1AE*/ oSnufitUnk1AE OBJECT_FIELD_S16(0x49, + 1) -#define /*0x1B0*/ oSnufitUnk1B0 OBJECT_FIELD_S16(0x4A, 0) -#define /*0x1B2*/ oSnufitUnk1B2 OBJECT_FIELD_S16(0x4A, + 1) +#define /*0x0F4*/ oSnufitRecoil OBJECT_FIELD_S32(0x1B) +#define /*0x0F8*/ oSnufitScale OBJECT_FIELD_F32(0x1C) +#define /*0x100*/ oSnufitCircularPeriod OBJECT_FIELD_S32(0x1E) +#define /*0x104*/ oSnufitBodyScalePeriod OBJECT_FIELD_S32(0x1F) +#define /*0x108*/ oSnufitBodyBaseScale OBJECT_FIELD_S32(0x20) +#define /*0x10C*/ oSnufitBullets OBJECT_FIELD_S32(0x21) +#define /*0x1AC*/ oSnufitXOffset OBJECT_FIELD_S16(0x49, 0) +#define /*0x1AE*/ oSnufitYOffset OBJECT_FIELD_S16(0x49, + 1) +#define /*0x1B0*/ oSnufitZOffset OBJECT_FIELD_S16(0x4A, 0) +#define /*0x1B2*/ oSnufitBodyScale OBJECT_FIELD_S16(0x4A, + 1) /* Spindel */ #define /*0x0F4*/ oSpindelUnkF4 OBJECT_FIELD_S32(0x1B) @@ -1118,7 +1118,7 @@ #define /*0x0F8*/ oWaterRingMgrLastRingCollected OBJECT_FIELD_S32(0x1C) /* Wave Trail */ -#define /*0x0F8*/ oWaveTrailUnkF8 OBJECT_FIELD_F32(0x1C) +#define /*0x0F8*/ oWaveTrailSize OBJECT_FIELD_F32(0x1C) /* Whirlpool */ #define /*0x0F4*/ oWhirlpoolInitFacePitch OBJECT_FIELD_S32(0x1B) @@ -1130,7 +1130,7 @@ #define /*0x0FC*/ oWhitePuffUnkFC OBJECT_FIELD_S32(0x1D) /* White Wind Particle */ -#define /*0x0F4*/ oWhiteWindParticleUnkF4 OBJECT_FIELD_OBJ(0x1B) +#define /*0x0F4*/ oStrongWindParticlePenguinObj OBJECT_FIELD_OBJ(0x1B) /* Whomp */ #define /*0x0F8*/ oWhompUnkF8 OBJECT_FIELD_S32(0x1C) diff --git a/include/segments.h b/include/segments.h index a3fd2eea..c98040a8 100644 --- a/include/segments.h +++ b/include/segments.h @@ -22,6 +22,8 @@ #ifdef VERSION_EU #define SEG_MAIN 0x80241800 // TODO: Investigate why it's different? +#elif defined(VERSION_SH) +#define SEG_MAIN 0x80249000 #else #define SEG_MAIN 0x80246000 #endif diff --git a/include/sm64.h b/include/sm64.h index 0f1358f7..714e1ecd 100644 --- a/include/sm64.h +++ b/include/sm64.h @@ -88,26 +88,26 @@ #define WATER_STEP_CANCELLED 3 #define WATER_STEP_HIT_WALL 4 -#define PARTICLE_DUST /* 0x00000001 */ (1 << 0) -#define PARTICLE_1 /* 0x00000002 */ (1 << 1) -#define PARTICLE_2 /* 0x00000004 */ (1 << 2) -#define PARTICLE_SPARKLES /* 0x00000008 */ (1 << 3) -#define PARTICLE_4 /* 0x00000010 */ (1 << 4) -#define PARTICLE_5 /* 0x00000020 */ (1 << 5) -#define PARTICLE_6 /* 0x00000040 */ (1 << 6) -#define PARTICLE_7 /* 0x00000080 */ (1 << 7) -#define PARTICLE_8 /* 0x00000100 */ (1 << 8) -#define PARTICLE_9 /* 0x00000200 */ (1 << 9) -#define PARTICLE_10 /* 0x00000400 */ (1 << 10) -#define PARTICLE_11 /* 0x00000800 */ (1 << 11) -#define PARTICLE_12 /* 0x00001000 */ (1 << 12) -#define PARTICLE_LEAVES /* 0x00002000 */ (1 << 13) -#define PARTICLE_14 /* 0x00004000 */ (1 << 14) -#define PARTICLE_15 /* 0x00008000 */ (1 << 15) -#define PARTICLE_16 /* 0x00010000 */ (1 << 16) -#define PARTICLE_17 /* 0x00020000 */ (1 << 17) -#define PARTICLE_18 /* 0x00040000 */ (1 << 18) -#define PARTICLE_19 /* 0x00080000 */ (1 << 19) +#define PARTICLE_DUST /* 0x00000001 */ (1 << 0) +#define PARTICLE_1 /* 0x00000002 */ (1 << 1) +#define PARTICLE_2 /* 0x00000004 */ (1 << 2) +#define PARTICLE_SPARKLES /* 0x00000008 */ (1 << 3) +#define PARTICLE_4 /* 0x00000010 */ (1 << 4) +#define PARTICLE_5 /* 0x00000020 */ (1 << 5) +#define PARTICLE_WATER_SPLASH /* 0x00000040 */ (1 << 6) +#define PARTICLE_IDLE_WATER_WAVE /* 0x00000080 */ (1 << 7) +#define PARTICLE_SHALLOW_WATER_WAVE /* 0x00000100 */ (1 << 8) +#define PARTICLE_9 /* 0x00000200 */ (1 << 9) +#define PARTICLE_WAVE_TRAIL /* 0x00000400 */ (1 << 10) +#define PARTICLE_11 /* 0x00000800 */ (1 << 11) +#define PARTICLE_SHALLOW_WATER_SPLASH /* 0x00001000 */ (1 << 12) +#define PARTICLE_LEAVES /* 0x00002000 */ (1 << 13) +#define PARTICLE_14 /* 0x00004000 */ (1 << 14) +#define PARTICLE_15 /* 0x00008000 */ (1 << 15) +#define PARTICLE_16 /* 0x00010000 */ (1 << 16) +#define PARTICLE_17 /* 0x00020000 */ (1 << 17) +#define PARTICLE_18 /* 0x00040000 */ (1 << 18) +#define PARTICLE_19 /* 0x00080000 */ (1 << 19) #define MODEL_STATE_NOISE_ALPHA 0x180 #define MODEL_STATE_METAL 0x200 diff --git a/include/text_strings.h.in b/include/text_strings.h.in index 31665979..4e36eb96 100644 --- a/include/text_strings.h.in +++ b/include/text_strings.h.in @@ -25,7 +25,7 @@ #define TEXT_PAUSE _("PAUSE") // Pause text, Castle Courses #define TEXT_HUD_CONGRATULATIONS _("CONGRATULATIONS") // Course Complete Text, Bowser Courses -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) /** * File Select Text diff --git a/levels/bbh/areas/1/geo.inc.c b/levels/bbh/areas/1/geo.inc.c index d1f65225..6a7deebb 100644 --- a/levels/bbh/areas/1/geo.inc.c +++ b/levels/bbh/areas/1/geo.inc.c @@ -517,7 +517,7 @@ const GeoLayout geo_bbh_000F00[] = { GEO_BRANCH(1, geo_bbh_000EB0), // 0x0E000EB0 GEO_CLOSE_NODE(), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/bitdw/areas/1/geo.inc.c b/levels/bitdw/areas/1/geo.inc.c index 4bddd60e..39f6143e 100644 --- a/levels/bitdw/areas/1/geo.inc.c +++ b/levels/bitdw/areas/1/geo.inc.c @@ -17,7 +17,7 @@ const GeoLayout geo_bitdw_000618[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_ALPHA, bitdw_seg7_dl_070020C8), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/bitfs/areas/1/geo.inc.c b/levels/bitfs/areas/1/geo.inc.c index 82b61ad0..847c6ca7 100644 --- a/levels/bitfs/areas/1/geo.inc.c +++ b/levels/bitfs/areas/1/geo.inc.c @@ -21,7 +21,7 @@ const GeoLayout bitfs_geo_0007A0[] = { GEO_ASM(0x1902, geo_movtex_draw_nocolor), GEO_ASM(0x1903, geo_movtex_draw_nocolor), GEO_RENDER_OBJ(), - GEO_ASM( 12, geo_enfvx_main), + GEO_ASM( 12, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/bits/areas/1/geo.inc.c b/levels/bits/areas/1/geo.inc.c index 0638a815..50e96cc3 100644 --- a/levels/bits/areas/1/geo.inc.c +++ b/levels/bits/areas/1/geo.inc.c @@ -17,7 +17,7 @@ const GeoLayout bits_geo_000718[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_ALPHA, bits_seg7_dl_07002918), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/bob/areas/1/geo.inc.c b/levels/bob/areas/1/geo.inc.c index c5b1c975..c7c6fc20 100644 --- a/levels/bob/areas/1/geo.inc.c +++ b/levels/bob/areas/1/geo.inc.c @@ -22,7 +22,7 @@ const GeoLayout bob_geo_000488[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, bob_seg7_dl_0700DD18), GEO_DISPLAY_LIST(LAYER_OPAQUE, bob_seg7_dl_0700E338), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/bowser_1/areas/1/geo.inc.c b/levels/bowser_1/areas/1/geo.inc.c index 1257abf3..f6acd67f 100644 --- a/levels/bowser_1/areas/1/geo.inc.c +++ b/levels/bowser_1/areas/1/geo.inc.c @@ -17,7 +17,7 @@ const GeoLayout bowser_1_geo_0000D0[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_1_seg7_dl_07002768), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/bowser_2/areas/1/geo.inc.c b/levels/bowser_2/areas/1/geo.inc.c index 78523feb..2b0d120e 100644 --- a/levels/bowser_2/areas/1/geo.inc.c +++ b/levels/bowser_2/areas/1/geo.inc.c @@ -17,7 +17,7 @@ const GeoLayout bowser_2_geo_000188[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_2_seg7_dl_07001930), GEO_RENDER_OBJ(), - GEO_ASM(12, geo_enfvx_main), + GEO_ASM(12, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/bowser_3/areas/1/geo.inc.c b/levels/bowser_3/areas/1/geo.inc.c index 75c90f69..9c6e02db 100644 --- a/levels/bowser_3/areas/1/geo.inc.c +++ b/levels/bowser_3/areas/1/geo.inc.c @@ -17,7 +17,7 @@ const GeoLayout bowser_3_geo_000398[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_070046B0), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/castle_courtyard/areas/1/geo.inc.c b/levels/castle_courtyard/areas/1/geo.inc.c index 8df1993e..1d1d1dec 100644 --- a/levels/castle_courtyard/areas/1/geo.inc.c +++ b/levels/castle_courtyard/areas/1/geo.inc.c @@ -21,7 +21,7 @@ const GeoLayout castle_courtyard_geo_000218[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x2601, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/castle_grounds/areas/1/geo.inc.c b/levels/castle_grounds/areas/1/geo.inc.c index 309cc730..96233941 100644 --- a/levels/castle_grounds/areas/1/geo.inc.c +++ b/levels/castle_grounds/areas/1/geo.inc.c @@ -26,7 +26,7 @@ const GeoLayout castle_grounds_geo_00073C[] = { GEO_ASM(0x1601, geo_movtex_draw_nocolor), GEO_ASM(0x1601, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/castle_inside/areas/1/geo.inc.c b/levels/castle_inside/areas/1/geo.inc.c index c864dc8f..78d3e442 100644 --- a/levels/castle_inside/areas/1/geo.inc.c +++ b/levels/castle_inside/areas/1/geo.inc.c @@ -48,8 +48,8 @@ const GeoLayout castle_geo_000FD0[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07032FC0), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07033158), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(256, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(0, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -61,8 +61,8 @@ const GeoLayout castle_geo_001000[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07034D88), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035178), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035288), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(258, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(2, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -77,8 +77,8 @@ const GeoLayout castle_geo_001038[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07037DE8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, dl_castle_aquarium_light), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07038350), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(259, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(3, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -91,8 +91,8 @@ const GeoLayout castle_geo_001088[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0703A808), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070234C0), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023520), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(257, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(1, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -172,8 +172,8 @@ const GeoLayout castle_geo_001200[] = { GEO_ASM( 0, geo_exec_inside_castle_light), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07032FC0), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07033158), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(256, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(256, geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -191,8 +191,8 @@ const GeoLayout castle_geo_001260[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07034D88), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035178), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035288), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(258, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(258, geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -213,8 +213,8 @@ const GeoLayout castle_geo_0012C8[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07037DE8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, dl_castle_aquarium_light), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07038350), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(259, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(3, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -233,8 +233,8 @@ const GeoLayout castle_geo_001348[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0703A808), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070234C0), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023520), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(257, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(1, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -292,7 +292,7 @@ const GeoLayout castle_geo_001400[] = { GEO_BRANCH(1, castle_geo_0013B8), // 0x0E0013B8 GEO_CLOSE_NODE(), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/castle_inside/areas/2/geo.inc.c b/levels/castle_inside/areas/2/geo.inc.c index b8af3df3..29748a6e 100644 --- a/levels/castle_inside/areas/2/geo.inc.c +++ b/levels/castle_inside/areas/2/geo.inc.c @@ -14,9 +14,9 @@ const GeoLayout castle_geo_001578[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(264, Geo18_802D5B98), - GEO_ASM(266, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -28,8 +28,8 @@ const GeoLayout castle_geo_0015B8[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704A0E8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0704A2E0), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704AA98), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(268, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(12, 1), geo_painting_draw), GEO_ASM( 0, geo_render_mirror_mario), GEO_CLOSE_NODE(), GEO_RETURN(), @@ -40,9 +40,9 @@ const GeoLayout castle_geo_0015F8[] = { GEO_NODE_START(), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704C7D8), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(265, Geo18_802D5B98), - GEO_ASM(269, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(9, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(13, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -55,8 +55,8 @@ const GeoLayout castle_geo_001628[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07051678), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_070519C8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07051B60), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(267, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -80,9 +80,9 @@ const GeoLayout castle_geo_001690[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(264, Geo18_802D5B98), - GEO_ASM(266, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -97,10 +97,10 @@ const GeoLayout castle_geo_0016D8[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704A0E8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0704A2E0), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704AA98), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(264, Geo18_802D5B98), - GEO_ASM(266, Geo18_802D5B98), - GEO_ASM(268, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(12, 1), geo_painting_draw), GEO_ASM( 0, geo_render_mirror_mario), GEO_CLOSE_NODE(), GEO_RETURN(), @@ -114,11 +114,11 @@ const GeoLayout castle_geo_001740[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704C7D8), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(264, Geo18_802D5B98), - GEO_ASM(265, Geo18_802D5B98), - GEO_ASM(266, Geo18_802D5B98), - GEO_ASM(269, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(9, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(13, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -134,10 +134,10 @@ const GeoLayout castle_geo_001798[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07051678), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_070519C8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07051B60), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(264, Geo18_802D5B98), - GEO_ASM(266, Geo18_802D5B98), - GEO_ASM(267, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw), + GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -153,8 +153,8 @@ const GeoLayout castle_geo_001800[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070558D0), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070572A0), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07057F00), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(267, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -191,7 +191,7 @@ const GeoLayout castle_geo_001858[] = { GEO_BRANCH(1, castle_geo_001800), // 0x0E001800 GEO_CLOSE_NODE(), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/castle_inside/areas/3/geo.inc.c b/levels/castle_inside/areas/3/geo.inc.c index 1e322623..70b295fe 100644 --- a/levels/castle_inside/areas/3/geo.inc.c +++ b/levels/castle_inside/areas/3/geo.inc.c @@ -15,9 +15,9 @@ const GeoLayout castle_geo_001980[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070616E8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07061C20), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM( 260, Geo18_802D5B98), - GEO_ASM( 261, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw), + GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw), GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x0600, geo_movtex_draw_water_regions), GEO_CLOSE_NODE(), @@ -30,8 +30,8 @@ const GeoLayout castle_geo_0019C8[] = { GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07064B78), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07064D58), - GEO_ASM(0, Geo18_802D5D0C), - GEO_ASM(262, Geo18_802D5B98), + GEO_ASM(0, geo_painting_update), + GEO_ASM(PAINTING_ID(6, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -54,8 +54,8 @@ const GeoLayout castle_geo_001A30[] = { GEO_NODE_START(), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07068850), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(263, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(7, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -69,9 +69,9 @@ const GeoLayout castle_geo_001A58[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0705E450), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070616E8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07061C20), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM( 260, Geo18_802D5B98), - GEO_ASM( 261, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw), + GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw), GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x0600, geo_movtex_draw_water_regions), GEO_CLOSE_NODE(), @@ -86,8 +86,8 @@ const GeoLayout castle_geo_001AB8[] = { GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0705E2A0), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0705E450), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07068850), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM(263, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(7, 1), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -117,9 +117,9 @@ const GeoLayout castle_geo_001B48[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07066CE0), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07066E90), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07066FA0), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM( 260, Geo18_802D5B98), - GEO_ASM( 261, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw), + GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw), GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x0600, geo_movtex_draw_water_regions), GEO_ASM(0x0612, geo_movtex_draw_water_regions), @@ -135,10 +135,10 @@ const GeoLayout castle_geo_001BB0[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07061C20), GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07064B78), GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07064D58), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM( 260, Geo18_802D5B98), - GEO_ASM( 261, Geo18_802D5B98), - GEO_ASM( 262, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw), + GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw), + GEO_ASM( PAINTING_ID(6, 1), geo_painting_draw), GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x0600, geo_movtex_draw_water_regions), GEO_CLOSE_NODE(), @@ -176,7 +176,7 @@ const GeoLayout castle_geo_001C10[] = { GEO_BRANCH(1, castle_geo_001BB0), // 0x0E001BB0 GEO_CLOSE_NODE(), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/castle_inside/painting.inc.c b/levels/castle_inside/painting.inc.c index 94209ae3..105b6056 100644 --- a/levels/castle_inside/painting.inc.c +++ b/levels/castle_inside/painting.inc.c @@ -98,8 +98,10 @@ static const Gfx inside_castle_seg7_painting_dl_07021AC0[] = { }; // 0x07021AE0 - 0x07021FFA -static const PaintingData inside_castle_seg7_painting_points_07021AE0[] = { - 85, +static const PaintingData inside_castle_seg7_painting_texture_map_bottom_07021AE0[] = { + 85, // num mappings + // Format: + // mesh vtx ID, texture X, texture Y 49, 2016, 889, 53, 2016, 685, 55, 1843, 787, @@ -186,8 +188,9 @@ static const PaintingData inside_castle_seg7_painting_points_07021AE0[] = { 150, 649, 0, 153, -32, 0, -// inside_castle_seg7_painting_triangles_07021CE0: - 132, + 132, // num groups + // Grouped by 5 + one remainder group, + // = 15 vertices per group + a few extra triangles 13, 8, 5, 0, 1, 2, 3, 0, 4, @@ -324,8 +327,10 @@ static const PaintingData inside_castle_seg7_painting_points_07021AE0[] = { // 0x07021FFC - 0x07022516 -static const PaintingData inside_castle_seg7_painting_points_07021FFC[] = { - 85, +static const PaintingData inside_castle_seg7_painting_texture_map_top_07021FFC[] = { + 85, // num mappings + // Format: + // mesh vtx ID, texture X, texture Y 0, 2016, 72, 1, 2016, 0, 2, 1843, 0, @@ -412,8 +417,9 @@ static const PaintingData inside_castle_seg7_painting_points_07021FFC[] = { 152, -32, 685, 153, -32, 992, -// inside_castle_seg7_painting_triangles_070221FC: - 132, + 132, // num groups + // Grouped by 5 + one remainder group, + // = 15 vertices per group + a few extra triangles 10, 7, 13, 0, 1, 2, 3, 0, 2, @@ -550,9 +556,9 @@ static const PaintingData inside_castle_seg7_painting_points_07021FFC[] = { // 0x07022518 -static const PaintingData *const inside_castle_seg7_painting_data_07022518[] = { - inside_castle_seg7_painting_points_07021AE0, - inside_castle_seg7_painting_points_07021FFC, +static const PaintingData *const inside_castle_seg7_painting_texture_maps_07022518[] = { + inside_castle_seg7_painting_texture_map_bottom_07021AE0, + inside_castle_seg7_painting_texture_map_top_07021FFC, }; UNUSED static const u64 castle_inside_unused_0 = 0x0; @@ -619,8 +625,10 @@ static const Gfx inside_castle_seg7_painting_dl_07022640[] = { }; // 0x07022660 - 0x07023042 -static const PaintingData inside_castle_seg7_painting_points_07022660[] = { - 157, +static const PaintingData inside_castle_seg7_painting_env_map_texture_map_07022660[] = { + 157, // num mappings + // Format: + // mesh vtx ID, texture X, texture Y 0, 6100, -4832, 1, 6100, -5142, 2, 5582, -5142, @@ -780,7 +788,9 @@ static const PaintingData inside_castle_seg7_painting_points_07022660[] = { 156, 0, 990, // inside_castle_seg7_painting_triangles_07022A10: - 264, + 264, // num groups + // Grouped by 5 + one remainder group, + // = 15 vertices per group + a few extra triangles 8, 12, 13, 0, 1, 2, 3, 0, 2, @@ -1049,8 +1059,8 @@ static const PaintingData inside_castle_seg7_painting_points_07022660[] = { // 0x07023044 - 0x07023048 -static const PaintingData *const inside_castle_seg7_painting_data_07023044[] = { - inside_castle_seg7_painting_points_07022660, +static const PaintingData *const inside_castle_seg7_painting_env_map_texture_maps_07023044[] = { + inside_castle_seg7_painting_env_map_texture_map_07022660, }; UNUSED static const u64 castle_inside_unused_1 = 0x0; @@ -1345,335 +1355,377 @@ static const u8 *const inside_castle_seg7_painting_textures_07023618[] = { // 0x07023620 - 0x07023698 struct Painting bob_painting = { /* id */ 0x0000, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 90.0f, /* Position */ -5222.4f, 409.6f, -153.6f, + /* curr passive entry */ /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023050, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_070235C0, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 614.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023050, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_070235C0, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 614.0f, }; // 0x07023698 - 0x07023710 struct Painting ccm_painting = { /* id */ 0x0001, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 0.0f, /* Position */ -2611.2f, -307.2f, -4352.0f, + /* curr passive entry */ /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_070230B0, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_070235C8, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 614.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_070230B0, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_070235C8, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 614.0f, }; // 0x07023710 - 0x07023788 struct Painting wf_painting = { /* id */ 0x0002, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 0.0f, /* Position */ -51.2f, -204.8f, -4505.6f, + /* curr passive entry */ /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023110, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_070235D0, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 614.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023110, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_070235D0, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 614.0f, }; // 0x07023788 - 0x07023800 struct Painting jrb_painting = { /* id */ 0x0003, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 270.0f, /* Position */ 4300.8f, 409.6f, -537.6f, + /* curr passive entry */ /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023170, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_070235D8, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 614.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023170, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_070235D8, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 614.0f, }; // 0x07023800 - 0x07023878 struct Painting lll_painting = { /* id */ 0x0004, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 0.0f, /* Position */ -1689.6f, -1126.4f, -3942.4f, + /* curr passive entry */ /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_070231D0, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_070235E0, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 614.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_070231D0, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_070235E0, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 614.0f, }; // 0x07023878 - 0x070238F0 struct Painting ssl_painting = { /* id */ 0x0005, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 180.0f, /* Position */ -2611.2f, -1177.6f, -1075.2f, + /* curr passive entry */ /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023230, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_070235E8, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 614.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023230, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_070235E8, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 614.0f, }; // 0x070238F0 - 0x07023968 struct Painting hmc_painting = { /* id */ 0x000E, - /* Face Count */ 0x01, - /* Ripple Shape */ RIPPLE_SHAPE_CONCENTRIC, + /* Image Count */ 0x01, + /* Texture Type */ PAINTING_ENV_MAP, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 270.0f, 0.0f, /* Position */ 2099.2f, -1484.8f, -2278.4f, + /* curr passive entry */ /* Ripple Magnitude */ 0.0f, 10.0f, 30.0f, - 1.0f, 1.0f, 0.98f, - 0.0f, 0.05f, 0.05f, - 0.0f, 15.0f, 15.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023580, - inside_castle_seg7_painting_data_07023044, - inside_castle_seg7_painting_textures_070235F0, - 32, 32, - inside_castle_seg7_painting_dl_07022640, - RIPPLE_TRIGGER_CONTINUOUS, 0xFF, 0x00, 0x00, 0x00, - 768.0f, + /* Ripple Decay */ 1.0f, 1.0f, 0.98f, + /* Ripple Rate */ 0.0f, 0.05f, 0.05f, + /* Ripple Dispersion */ 0.0f, 15.0f, 15.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023580, + /* Texture Maps */ inside_castle_seg7_painting_env_map_texture_maps_07023044, + /* Textures */ inside_castle_seg7_painting_textures_070235F0, + /* Texture w, h */ 32, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07022640, + /* Ripple Trigger */ RIPPLE_TRIGGER_CONTINUOUS, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 768.0f, }; // 0x07023968 - 0x070239E0 struct Painting ddd_painting = { /* id */ 0x0007, - /* Face Count */ 0x01, - /* Ripple Shape */ RIPPLE_SHAPE_CONCENTRIC, + /* Image Count */ 0x01, + /* Texture Type */ PAINTING_ENV_MAP, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 270.0f, /* Position */ 3456.0f, -1075.2f, 1587.2f, - /* Ripple Magnitude */ 0.0f, 10.0f, 30.0f, - 1.0f, 1.0f, 0.98f, - 0.0f, 0.05f, 0.05f, - 0.0f, 15.0f, 15.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_070235B8, - inside_castle_seg7_painting_data_07023044, - inside_castle_seg7_painting_textures_070235F4, - 32, 32, - inside_castle_seg7_painting_dl_07022640, - RIPPLE_TRIGGER_CONTINUOUS, 0xB4, 0x00, 0x00, 0x00, - 819.2f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 10.0f, 30.0f, + /* Ripple Decay */ 1.0f, 1.0f, 0.98f, + /* Ripple Rate */ 0.0f, 0.05f, 0.05f, + /* Ripple Dispersion */ 0.0f, 15.0f, 15.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_070235B8, + /* Texture Maps */ inside_castle_seg7_painting_env_map_texture_maps_07023044, + /* Textures */ inside_castle_seg7_painting_textures_070235F4, + /* Texture w, h */ 32, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07022640, + /* Ripple Trigger */ RIPPLE_TRIGGER_CONTINUOUS, + /* Alpha */ 0xB4, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 819.2f, }; // 0x070239E0 - 0x07023A58 struct Painting wdw_painting = { /* id */ 0x0008, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 0.0f, /* Position */ -966.656f, 1305.6f, -143.36f, - /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023290, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_070235F8, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 614.0f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023290, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_070235F8, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 614.0f, }; // 0x07023A58 - 0x07023AD0 struct Painting thi_tiny_painting = { /* id */ 0x0009, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 180.0f, /* Position */ -4598.7842f, 1354.752f, 3005.44f, - /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_070232F0, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_07023600, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 393.216f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_070232F0, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_07023600, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 393.216f, }; // 0x07023AD0 - 0x07023B48 struct Painting ttm_painting = { /* id */ 0x000A, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 180.0f, /* Position */ -546.816f, 1356.8f, 3813.376f, - /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023350, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_07023608, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 256.0f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023350, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_07023608, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 256.0f, }; // 0x07023B48 - 0x07023BC0 struct Painting ttc_painting = { /* id */ 0x000B, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 180.0f, /* Position */ 0.0f, 2713.6f, 7232.5122f, - /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_070233B0, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_07023610, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 409.6f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_070233B0, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_07023610, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 409.6f, }; // 0x07023BC0 - 0x07023C38 struct Painting sl_painting = { /* id */ 0x000C, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 0.0f, /* Position */ 3179.52f, 1408.0f, -271.36f, - /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_07023410, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_07023618, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 716.8f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_07023410, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_07023618, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 716.8f, }; // 0x07023C38 - 0x07023CB0 struct Painting thi_huge_painting = { /* id */ 0x000D, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 0.0f, /* Position */ -5614.5918f, 1510.4f, -3292.16f, - /* Ripple Magnitude */ 0.0f, 40.0f, 160.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.12f, 0.07f, - 0.0f, 80.0f, 60.0f, - 0.0f, - 0.0f, 0.0f, - inside_castle_seg7_painting_dl_070232F0, - inside_castle_seg7_painting_data_07022518, - inside_castle_seg7_painting_textures_07023600, - 64, 32, - inside_castle_seg7_painting_dl_07021AC0, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 1638.4f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 40.0f, 160.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.12f, 0.07f, + /* Ripple Dispersion */ 0.0f, 80.0f, 60.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ inside_castle_seg7_painting_dl_070232F0, + /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518, + /* Textures */ inside_castle_seg7_painting_textures_07023600, + /* Texture w, h */ 64, 32, + /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 1638.4f, }; diff --git a/levels/ccm/areas/1/geo.inc.c b/levels/ccm/areas/1/geo.inc.c index 8832d456..2a0dfe34 100644 --- a/levels/ccm/areas/1/geo.inc.c +++ b/levels/ccm/areas/1/geo.inc.c @@ -23,7 +23,7 @@ const GeoLayout ccm_geo_00051C[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x0501, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 1, geo_enfvx_main), + GEO_ASM( 1, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ccm/areas/2/geo.inc.c b/levels/ccm/areas/2/geo.inc.c index fdb3f064..11f40583 100644 --- a/levels/ccm/areas/2/geo.inc.c +++ b/levels/ccm/areas/2/geo.inc.c @@ -23,7 +23,7 @@ const GeoLayout ccm_geo_0005E8[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ccm_seg7_dl_0701FE60), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ccm_seg7_dl_070207F0), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/cotmc/areas/1/geo.inc.c b/levels/cotmc/areas/1/geo.inc.c index 25d022f2..26fc0a4c 100644 --- a/levels/cotmc/areas/1/geo.inc.c +++ b/levels/cotmc/areas/1/geo.inc.c @@ -21,7 +21,7 @@ const GeoLayout cotmc_geo_0001A0[] = { GEO_ASM(0x2801, geo_movtex_draw_nocolor), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, cotmc_seg7_dl_0700A4B8), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ddd/areas/1/geo.inc.c b/levels/ddd/areas/1/geo.inc.c index 0453c731..e58d7e1e 100644 --- a/levels/ddd/areas/1/geo.inc.c +++ b/levels/ddd/areas/1/geo.inc.c @@ -22,7 +22,7 @@ const GeoLayout ddd_geo_0004C0[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x2301, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 13, geo_enfvx_main), + GEO_ASM( 13, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ddd/areas/2/geo.inc.c b/levels/ddd/areas/2/geo.inc.c index efcac70f..68201f70 100644 --- a/levels/ddd/areas/2/geo.inc.c +++ b/levels/ddd/areas/2/geo.inc.c @@ -24,7 +24,7 @@ const GeoLayout ddd_geo_000570[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x2302, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 14, geo_enfvx_main), + GEO_ASM( 14, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/hmc/areas/1/geo.inc.c b/levels/hmc/areas/1/geo.inc.c index 9bca4d15..5a2baac0 100644 --- a/levels/hmc/areas/1/geo.inc.c +++ b/levels/hmc/areas/1/geo.inc.c @@ -83,8 +83,8 @@ const GeoLayout hmc_geo_000748[] = { GEO_NODE_START(), GEO_OPEN_NODE(), GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07020FD0), - GEO_ASM(0, Geo18_802D5D0C), - GEO_ASM(0, Geo18_802D5B98), + GEO_ASM(0, geo_painting_update), + GEO_ASM(PAINTING_ID(0, 0), geo_painting_draw), GEO_CLOSE_NODE(), GEO_RETURN(), }; @@ -246,8 +246,8 @@ const GeoLayout hmc_geo_000A88[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F818), GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701FD58), GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07020FD0), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM( 0, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM( PAINTING_ID(0, 0), geo_painting_draw), GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x0701, geo_movtex_draw_water_regions), GEO_CLOSE_NODE(), @@ -326,7 +326,7 @@ const GeoLayout hmc_geo_000B90[] = { GEO_BRANCH(1, hmc_geo_000B48), // 0x0E000B48 GEO_CLOSE_NODE(), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/hmc/areas/1/painting.inc.c b/levels/hmc/areas/1/painting.inc.c index 5ab36d2d..f2ff45df 100644 --- a/levels/hmc/areas/1/painting.inc.c +++ b/levels/hmc/areas/1/painting.inc.c @@ -61,8 +61,10 @@ static const Gfx hmc_seg7_painting_dl_070242D0[] = { }; // 0x070242F0 - 0x07024CD2 -static const PaintingData hmc_seg7_pool_points_070242F0[] = { - 157, +static const PaintingData hmc_seg7_pool_texture_map_070242F0[] = { + 157, // num mappings + // Format: + // mesh vtx ID, texture X, texture Y 0, 6100, -4832, 1, 6100, -5142, 2, 5582, -5142, @@ -221,8 +223,9 @@ static const PaintingData hmc_seg7_pool_points_070242F0[] = { 155, 0, 70, 156, 0, 990, -// hmc_seg7_triangles_070246A0: - 264, + 264, // num groups + // Grouped by 5 + one remainder group, + // = 15 vertices per group + a few extra triangles 8, 12, 13, 0, 1, 2, 3, 0, 2, @@ -490,8 +493,8 @@ static const PaintingData hmc_seg7_pool_points_070242F0[] = { }; // 0x07024CD4 -static const PaintingData *const hmc_seg7_painting_data_07024CD4[] = { - hmc_seg7_pool_points_070242F0, +static const PaintingData *const hmc_seg7_painting_texture_maps_07024CD4[] = { + hmc_seg7_pool_texture_map_070242F0, }; UNUSED static const u64 hmc_unused_0 = 0; @@ -520,23 +523,26 @@ const u8 *const hmc_seg7_painting_textures_07025518[] = { // 0x0702551C (PaintingData) struct Painting cotmc_painting = { /* id */ 0x000E, - /* Face Count */ 0x01, - /* Ripple Shape */ RIPPLE_SHAPE_CONCENTRIC, + /* Image Count */ 0x01, + /* Texture Type */ PAINTING_ENV_MAP, /* Floor Status */ 0x00, 0x00 , 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 270.0f, 0.0f, /* Position */ 2989.055908f, -4485.120117f, 5135.359863f, - /* Ripple Magnitude */ 0.0f, 10.0f, 30.0f, - 1.0f, 1.0f, 0.98f, - 0.0f, 0.05f, 0.05f, - 0.0f, 15.0f, 15.0f, - 0.0f, - 0.0f, 0.0f, - hmc_seg7_painting_dl_070254E0, - hmc_seg7_painting_data_07024CD4, - hmc_seg7_painting_textures_07025518, - 32, 32, - hmc_seg7_painting_dl_070242D0, - RIPPLE_TRIGGER_CONTINUOUS, 0xFF, 0x00, 0x00, 0x00, - 723.968018f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 10.0f, 30.0f, + /* Ripple Decay */ 1.0f, 1.0f, 0.98f, + /* Ripple Rate */ 0.0f, 0.05f, 0.05f, + /* Ripple Dispersion */ 0.0f, 15.0f, 15.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ hmc_seg7_painting_dl_070254E0, + /* Texture Maps */ hmc_seg7_painting_texture_maps_07024CD4, + /* Textures */ hmc_seg7_painting_textures_07025518, + /* Texture w, h */ 32, 32, + /* Ripple DList */ hmc_seg7_painting_dl_070242D0, + /* Ripple Trigger */ RIPPLE_TRIGGER_CONTINUOUS, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 723.968018f, }; diff --git a/levels/jrb/areas/1/geo.inc.c b/levels/jrb/areas/1/geo.inc.c index adb1f968..2a38df57 100644 --- a/levels/jrb/areas/1/geo.inc.c +++ b/levels/jrb/areas/1/geo.inc.c @@ -26,7 +26,7 @@ const GeoLayout jrb_geo_000A18[] = { GEO_ASM(0x1201, geo_movtex_draw_water_regions), GEO_ASM(0x1205, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 14, geo_enfvx_main), + GEO_ASM( 14, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/jrb/areas/2/geo.inc.c b/levels/jrb/areas/2/geo.inc.c index e0868a68..c9a15fb9 100644 --- a/levels/jrb/areas/2/geo.inc.c +++ b/levels/jrb/areas/2/geo.inc.c @@ -21,7 +21,7 @@ const GeoLayout jrb_geo_000AFC[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x1202, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 2, geo_enfvx_main), + GEO_ASM( 2, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/jrb/wooden_ship/geo.inc.c b/levels/jrb/wooden_ship/geo.inc.c index 383627bf..80b97ded 100644 --- a/levels/jrb/wooden_ship/geo.inc.c +++ b/levels/jrb/wooden_ship/geo.inc.c @@ -11,7 +11,7 @@ const GeoLayout jrb_geo_000978[] = { const GeoLayout jrb_geo_000990[] = { GEO_CULLING_RADIUS(5000), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, jrb_seg7_dl_070090B0), GEO_CLOSE_NODE(), GEO_END(), @@ -30,7 +30,7 @@ const GeoLayout jrb_geo_0009B0[] = { const GeoLayout jrb_geo_0009C8[] = { GEO_CULLING_RADIUS(5000), GEO_OPEN_NODE(), - GEO_ASM(0, Geo18_8029D924), + GEO_ASM(0, geo_update_layer_transparency), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, jrb_seg7_dl_07009B30), GEO_CLOSE_NODE(), GEO_END(), diff --git a/levels/lll/areas/1/geo.inc.c b/levels/lll/areas/1/geo.inc.c index db1d3252..865cdc96 100644 --- a/levels/lll/areas/1/geo.inc.c +++ b/levels/lll/areas/1/geo.inc.c @@ -21,7 +21,7 @@ const GeoLayout lll_geo_000E00[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x2201, geo_movtex_draw_nocolor), GEO_RENDER_OBJ(), - GEO_ASM( 12, geo_enfvx_main), + GEO_ASM( 12, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/lll/areas/2/geo.inc.c b/levels/lll/areas/2/geo.inc.c index 07b845cb..a12fc825 100644 --- a/levels/lll/areas/2/geo.inc.c +++ b/levels/lll/areas/2/geo.inc.c @@ -24,7 +24,7 @@ const GeoLayout lll_geo_000EC0[] = { GEO_ASM(0x2202, geo_movtex_draw_nocolor), GEO_ASM(0x2202, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/pss/areas/1/geo.inc.c b/levels/pss/areas/1/geo.inc.c index dafecd56..bf3c5b31 100644 --- a/levels/pss/areas/1/geo.inc.c +++ b/levels/pss/areas/1/geo.inc.c @@ -23,7 +23,7 @@ const GeoLayout pss_geo_000100[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, pss_seg7_dl_0700E2B0), GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, pss_seg7_dl_0700E3E8), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/rr/areas/1/geo.inc.c b/levels/rr/areas/1/geo.inc.c index 00d99f2d..f899c995 100644 --- a/levels/rr/areas/1/geo.inc.c +++ b/levels/rr/areas/1/geo.inc.c @@ -18,7 +18,7 @@ const GeoLayout rr_geo_0009D0[] = { GEO_ASM(0, geo_exec_flying_carpet_timer_update), GEO_DISPLAY_LIST(LAYER_ALPHA, dl_cruiser_metal_holes), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/sa/areas/1/geo.inc.c b/levels/sa/areas/1/geo.inc.c index 43f0e511..4920f408 100644 --- a/levels/sa/areas/1/geo.inc.c +++ b/levels/sa/areas/1/geo.inc.c @@ -18,7 +18,7 @@ const GeoLayout sa_geo_000170[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, sa_seg7_dl_07002DE8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sa_seg7_dl_07002FD0), GEO_RENDER_OBJ(), - GEO_ASM(2, geo_enfvx_main), + GEO_ASM(2, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/scripts.c b/levels/scripts.c index 1a941749..ac5776cd 100644 --- a/levels/scripts.c +++ b/levels/scripts.c @@ -67,10 +67,10 @@ const LevelScript level_main_scripts_entry[] = { LOAD_MODEL_FROM_GEO(MODEL_SMOKE, smoke_geo), LOAD_MODEL_FROM_GEO(MODEL_SPARKLES, sparkles_geo), LOAD_MODEL_FROM_GEO(MODEL_BUBBLE, bubble_geo), - LOAD_MODEL_FROM_GEO(MODEL_SPOT_ON_GROUND, spot_on_ground_geo), - LOAD_MODEL_FROM_GEO(MODEL_WATER_WAVES_SURF, water_waves_surface_geo), + LOAD_MODEL_FROM_GEO(MODEL_SMALL_WATER_SPLASH, small_water_splash_geo), + LOAD_MODEL_FROM_GEO(MODEL_IDLE_WATER_WAVE, idle_water_wave_geo), LOAD_MODEL_FROM_GEO(MODEL_WATER_SPLASH, water_splash_geo), - LOAD_MODEL_FROM_GEO(MODEL_WATER_WAVES, water_waves_geo), + LOAD_MODEL_FROM_GEO(MODEL_WAVE_TRAIL, wave_trail_geo), LOAD_MODEL_FROM_GEO(MODEL_YELLOW_COIN, yellow_coin_geo), LOAD_MODEL_FROM_GEO(MODEL_STAR, star_geo), LOAD_MODEL_FROM_GEO(MODEL_TRANSPARENT_STAR, transparent_star_geo), diff --git a/levels/sl/areas/1/geo.inc.c b/levels/sl/areas/1/geo.inc.c index 537513b2..0631851d 100644 --- a/levels/sl/areas/1/geo.inc.c +++ b/levels/sl/areas/1/geo.inc.c @@ -25,7 +25,7 @@ const GeoLayout sl_geo_0003A8[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x1001, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 1, geo_enfvx_main), + GEO_ASM( 1, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/sl/areas/2/geo.inc.c b/levels/sl/areas/2/geo.inc.c index 37d72c1a..1cef0cad 100644 --- a/levels/sl/areas/2/geo.inc.c +++ b/levels/sl/areas/2/geo.inc.c @@ -20,7 +20,7 @@ const GeoLayout sl_geo_000484[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_0700C9E8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_0700CB58), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/sl/script.c b/levels/sl/script.c index ea90a9f7..59ff7a3e 100644 --- a/levels/sl/script.c +++ b/levels/sl/script.c @@ -29,8 +29,8 @@ static const LevelScript script_func_local_2[] = { }; static const LevelScript script_func_local_3[] = { - OBJECT(/*model*/ MODEL_PENGUIN, /*pos*/ 1715, 3328, 518, /*angle*/ 0, -51, 0, /*behParam*/ 0x00000000, /*beh*/ bhvWalkingPenguin), - OBJECT(/*model*/ MODEL_NONE, /*pos*/ 700, 3428, 700, /*angle*/ 0, 30, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSnowmanWindBlowing), + OBJECT(/*model*/ MODEL_PENGUIN, /*pos*/ 1715, 3328, 518, /*angle*/ 0, -51, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSLWalkingPenguin), + OBJECT(/*model*/ MODEL_NONE, /*pos*/ 700, 3428, 700, /*angle*/ 0, 30, 0, /*behParam*/ 0x00000000, /*beh*/ bhvSLSnowmanWind), OBJECT(/*model*/ MODEL_NONE, /*pos*/ 480, 2300, 1370, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvIgloo), OBJECT(/*model*/ MODEL_BIG_CHILL_BULLY, /*pos*/ 315, 1331, -4852, /*angle*/ 0, 0, 0, /*behParam*/ 0x01000000, /*beh*/ bhvBigChillBully), OBJECT(/*model*/ MODEL_MR_BLIZZARD_HIDDEN, /*pos*/ 2954, 970, 750, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvMrBlizzard), diff --git a/levels/ssl/areas/1/geo.inc.c b/levels/ssl/areas/1/geo.inc.c index a7466752..08ca9015 100644 --- a/levels/ssl/areas/1/geo.inc.c +++ b/levels/ssl/areas/1/geo.inc.c @@ -27,7 +27,7 @@ const GeoLayout ssl_geo_000648[] = { GEO_ASM(0x0802, geo_movtex_draw_colored), GEO_ASM(0x0803, geo_movtex_draw_colored), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ssl/areas/2/geo.inc.c b/levels/ssl/areas/2/geo.inc.c index dd1d30f6..f421c32f 100644 --- a/levels/ssl/areas/2/geo.inc.c +++ b/levels/ssl/areas/2/geo.inc.c @@ -24,7 +24,7 @@ const GeoLayout ssl_geo_0007CC[] = { GEO_ASM(0x802, geo_movtex_draw_nocolor), GEO_ASM(0x803, geo_movtex_draw_nocolor), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ssl/areas/3/geo.inc.c b/levels/ssl/areas/3/geo.inc.c index 0dfa476b..ab01ed2b 100644 --- a/levels/ssl/areas/3/geo.inc.c +++ b/levels/ssl/areas/3/geo.inc.c @@ -18,7 +18,7 @@ const GeoLayout ssl_geo_00088C[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_07021A08), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ssl_seg7_dl_07021DE8), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/thi/areas/1/geo.inc.c b/levels/thi/areas/1/geo.inc.c index b8c45ce7..d08e130b 100644 --- a/levels/thi/areas/1/geo.inc.c +++ b/levels/thi/areas/1/geo.inc.c @@ -23,7 +23,7 @@ const GeoLayout thi_geo_000608[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x1301, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/thi/areas/2/geo.inc.c b/levels/thi/areas/2/geo.inc.c index ee905543..eefb7455 100644 --- a/levels/thi/areas/2/geo.inc.c +++ b/levels/thi/areas/2/geo.inc.c @@ -28,7 +28,7 @@ const GeoLayout thi_geo_0006D4[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x1302, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/thi/areas/3/geo.inc.c b/levels/thi/areas/3/geo.inc.c index 2440471c..e3a6ebaa 100644 --- a/levels/thi/areas/3/geo.inc.c +++ b/levels/thi/areas/3/geo.inc.c @@ -20,7 +20,7 @@ const GeoLayout thi_geo_00079C[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07009D50), GEO_DISPLAY_LIST(LAYER_ALPHA, thi_seg7_dl_07009F58), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/totwc/areas/1/geo.inc.c b/levels/totwc/areas/1/geo.inc.c index dfd16acb..57c11e95 100644 --- a/levels/totwc/areas/1/geo.inc.c +++ b/levels/totwc/areas/1/geo.inc.c @@ -19,7 +19,7 @@ const GeoLayout totwc_geo_000188[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, totwc_seg7_dl_07007048), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, totwc_seg7_dl_070078B8), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ttc/areas/1/geo.inc.c b/levels/ttc/areas/1/geo.inc.c index 95a1351b..9773fc7b 100644 --- a/levels/ttc/areas/1/geo.inc.c +++ b/levels/ttc/areas/1/geo.inc.c @@ -22,7 +22,7 @@ const GeoLayout ttc_geo_0003B8[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ttc_seg7_dl_0700B1D8), GEO_DISPLAY_LIST(LAYER_ALPHA, ttc_seg7_dl_0700E878), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ttm/areas/1/geo.inc.c b/levels/ttm/areas/1/geo.inc.c index 5be9bbed..b93b3c11 100644 --- a/levels/ttm/areas/1/geo.inc.c +++ b/levels/ttm/areas/1/geo.inc.c @@ -18,8 +18,8 @@ const GeoLayout ttm_geo_000A70[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700A120), GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700A2E0), GEO_RENDER_OBJ(), - GEO_ASM( 0, Geo18_802D5D0C), - GEO_ASM( 512, Geo18_802D5B98), + GEO_ASM( 0, geo_painting_update), + GEO_ASM(PAINTING_ID(0, 2), geo_painting_draw), GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x3601, geo_movtex_draw_nocolor), GEO_ASM(0x3602, geo_movtex_draw_nocolor), @@ -27,7 +27,7 @@ const GeoLayout ttm_geo_000A70[] = { GEO_ASM(0x3604, geo_movtex_draw_nocolor), GEO_ASM(0x3605, geo_movtex_draw_nocolor), GEO_ASM(0x3601, geo_movtex_draw_water_regions), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ttm/areas/1/painting.inc.c b/levels/ttm/areas/1/painting.inc.c index db0b3756..f66a4a16 100644 --- a/levels/ttm/areas/1/painting.inc.c +++ b/levels/ttm/areas/1/painting.inc.c @@ -62,8 +62,10 @@ static const Gfx ttm_seg7_painting_dl_07012430[] = { }; // 0x07012450 - 0x0701296A -static const PaintingData ttm_seg7_painting_points_07012450[] = { - 85, +static const PaintingData ttm_seg7_painting_texture_map_bottom_07012450[] = { + 85, // num mappings + // Format: + // mesh vtx ID, texture X, texture Y 49, 2016, 889, 53, 2016, 685, 55, 1843, 787, @@ -150,8 +152,9 @@ static const PaintingData ttm_seg7_painting_points_07012450[] = { 150, 649, 0, 153, -32, 0, -// ttm_seg7_painting_triangles_07012650: - 132, + 132, // num groups + // Grouped by 5 + one remainder group, + // = 15 vertices per group + a few extra triangles 13, 8, 5, 0, 1, 2, 3, 0, 4, @@ -288,8 +291,10 @@ static const PaintingData ttm_seg7_painting_points_07012450[] = { // 0x0701296C - 0x07012E84 -static const PaintingData ttm_seg7_painting_points_0701296C[] = { - 85, +static const PaintingData ttm_seg7_painting_top_0701296C[] = { + 85, // num mappings + // Format: + // mesh vtx ID, texture X, texture Y 0, 2016, 72, 1, 2016, 0, 2, 1843, 0, @@ -376,8 +381,9 @@ static const PaintingData ttm_seg7_painting_points_0701296C[] = { 152, -32, 685, 153, -32, 992, -// ttm_seg7_painting_triangles_07012B6C: - 132, + 132, // num groups + // Grouped by 5 + one remainder group, + // = 15 vertices per group + a few extra triangles 10, 7, 13, 0, 1, 2, 3, 0, 2, @@ -514,9 +520,9 @@ static const PaintingData ttm_seg7_painting_points_0701296C[] = { // 0x07012E88 -static const PaintingData *const ttm_seg7_painting_data_07012E88[] = { - ttm_seg7_painting_points_07012450, - ttm_seg7_painting_points_0701296C, +static const PaintingData *const ttm_seg7_painting_texture_maps_07012E88[] = { + ttm_seg7_painting_texture_map_bottom_07012450, + ttm_seg7_painting_top_0701296C, }; UNUSED static const u64 ttm_unused_0 = 0x0; @@ -546,23 +552,26 @@ static const u8 *const ttm_seg7_painting_textures_07012EF8[] = { // 0x07012F00 (PaintingData) struct Painting ttm_slide_painting = { /* id */ 0x0000, - /* Face Count */ 0x02, - /* Ripple Shape */ RIPPLE_SHAPE_WAVE, + /* Image Count */ 0x02, + /* Texture Type */ PAINTING_IMAGE, /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */, /* Ripple Status */ 0x00, /* Rotation */ 0.0f, 90.0f, /* Position */ 3072.0f, 921.6f, -819.2f, - /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, - 1.0f, 0.9608f, 0.9524f, - 0.0f, 0.24f, 0.14f, - 0.0f, 40.0f, 30.0f, - 0.0f, - 0.0f, 0.0f, - ttm_seg7_painting_dl_07012E98, - ttm_seg7_painting_data_07012E88, - ttm_seg7_painting_textures_07012EF8, - 64, 32, - ttm_seg7_painting_dl_07012430, - RIPPLE_TRIGGER_PROXIMITY, 0xFF, 0x00, 0x00, 0x00, - 460.8f, + /* curr passive entry */ + /* Ripple Magnitude */ 0.0f, 20.0f, 80.0f, + /* Ripple Decay */ 1.0f, 0.9608f, 0.9524f, + /* Ripple Rate */ 0.0f, 0.24f, 0.14f, + /* Ripple Dispersion */ 0.0f, 40.0f, 30.0f, + /* Curr Ripple Timer */ 0.0f, + /* Curr Ripple x, y */ 0.0f, 0.0f, + /* Normal DList */ ttm_seg7_painting_dl_07012E98, + /* Texture Maps */ ttm_seg7_painting_texture_maps_07012E88, + /* Textures */ ttm_seg7_painting_textures_07012EF8, + /* Texture w, h */ 64, 32, + /* Ripple DList */ ttm_seg7_painting_dl_07012430, + /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY, + /* Alpha */ 0xFF, + /* Mario Below */ 0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */ + /* Size */ 460.8f, }; diff --git a/levels/ttm/areas/2/geo.inc.c b/levels/ttm/areas/2/geo.inc.c index f41c79c3..9af13cde 100644 --- a/levels/ttm/areas/2/geo.inc.c +++ b/levels/ttm/areas/2/geo.inc.c @@ -18,7 +18,7 @@ const GeoLayout ttm_geo_000B5C[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0701D798), GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0701DBB8), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ttm/areas/3/geo.inc.c b/levels/ttm/areas/3/geo.inc.c index 840096a9..a59642d2 100644 --- a/levels/ttm/areas/3/geo.inc.c +++ b/levels/ttm/areas/3/geo.inc.c @@ -19,7 +19,7 @@ const GeoLayout ttm_geo_000BEC[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07024C78), GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07025F48), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ttm/areas/4/geo.inc.c b/levels/ttm/areas/4/geo.inc.c index 7e59def3..5dc981f8 100644 --- a/levels/ttm/areas/4/geo.inc.c +++ b/levels/ttm/areas/4/geo.inc.c @@ -18,7 +18,7 @@ const GeoLayout ttm_geo_000C84[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0702A1B8), GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0702A8A0), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/vcutm/areas/1/geo.inc.c b/levels/vcutm/areas/1/geo.inc.c index 756e4a5b..86b60944 100644 --- a/levels/vcutm/areas/1/geo.inc.c +++ b/levels/vcutm/areas/1/geo.inc.c @@ -20,7 +20,7 @@ const GeoLayout vcutm_geo_000208[] = { GEO_DISPLAY_LIST(LAYER_OPAQUE, vcutm_seg7_dl_070093E8), GEO_DISPLAY_LIST(LAYER_ALPHA, vcutm_seg7_dl_070080D0), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/wdw/areas/1/geo.inc.c b/levels/wdw/areas/1/geo.inc.c index 112be125..662c3b91 100644 --- a/levels/wdw/areas/1/geo.inc.c +++ b/levels/wdw/areas/1/geo.inc.c @@ -23,7 +23,7 @@ const GeoLayout wdw_geo_000658[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x1101, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/wdw/areas/2/geo.inc.c b/levels/wdw/areas/2/geo.inc.c index b1f70c4a..352d1249 100644 --- a/levels/wdw/areas/2/geo.inc.c +++ b/levels/wdw/areas/2/geo.inc.c @@ -21,7 +21,7 @@ const GeoLayout wdw_geo_000724[] = { GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x1102, geo_movtex_draw_water_regions), GEO_RENDER_OBJ(), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/wf/areas/1/geo.inc.c b/levels/wf/areas/1/geo.inc.c index 7f4fcc83..b1c794ab 100644 --- a/levels/wf/areas/1/geo.inc.c +++ b/levels/wf/areas/1/geo.inc.c @@ -22,7 +22,7 @@ const GeoLayout wf_geo_000BF8[] = { GEO_RENDER_OBJ(), GEO_ASM( 0, geo_movtex_pause_control), GEO_ASM(0x2401, geo_movtex_draw_water_regions), - GEO_ASM( 0, geo_enfvx_main), + GEO_ASM( 0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/wmotr/areas/1/geo.inc.c b/levels/wmotr/areas/1/geo.inc.c index 915ea209..ba73389a 100644 --- a/levels/wmotr/areas/1/geo.inc.c +++ b/levels/wmotr/areas/1/geo.inc.c @@ -19,7 +19,7 @@ const GeoLayout wmotr_geo_0001F0[] = { GEO_DISPLAY_LIST(LAYER_TRANSPARENT, wmotr_seg7_dl_0700EFD8), GEO_DISPLAY_LIST(LAYER_TRANSPARENT, wmotr_seg7_dl_07010608), GEO_RENDER_OBJ(), - GEO_ASM(0, geo_enfvx_main), + GEO_ASM(0, geo_envfx_main), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/lib/asm/__osExceptionPreamble.s b/lib/asm/__osExceptionPreamble.s index e042bc38..21f38204 100644 --- a/lib/asm/__osExceptionPreamble.s +++ b/lib/asm/__osExceptionPreamble.s @@ -4,6 +4,9 @@ .include "macros.inc" +.ifdef VERSION_SH +.set VERSION_EU, 1 # HACK, someone fix this file, its poorly diff'd! +.endif .section .text, "ax" diff --git a/lib/src/D_802F4380.c b/lib/src/D_802F4380.c index 4da7dd27..cfc1ae25 100644 --- a/lib/src/D_802F4380.c +++ b/lib/src/D_802F4380.c @@ -2,7 +2,7 @@ #include "hardware.h" #include "new_func.h" #include "macros.h" -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) u32 D_802F4380() { u32 sp3c; u32 sp38; diff --git a/lib/src/osCreatePiManager.c b/lib/src/osCreatePiManager.c index 5b3d2869..0bdc9d2e 100644 --- a/lib/src/osCreatePiManager.c +++ b/lib/src/osCreatePiManager.c @@ -3,7 +3,7 @@ #define OS_PI_MGR_MESG_BUFF_SIZE 1 OSMgrArgs piMgrArgs = { 0 }; -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) OSPiHandle *D_80302DFC = NULL; #endif OSThread piMgrThread; diff --git a/lib/src/osInitialize.c b/lib/src/osInitialize.c index 0b9f7128..3cbca8ea 100644 --- a/lib/src/osInitialize.c +++ b/lib/src/osInitialize.c @@ -11,7 +11,7 @@ typedef struct { u32 instr03; } exceptionPreamble; -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) extern u32 EU_D_802f4330(u32, void (*)); extern void D_802F4380(); @@ -20,7 +20,7 @@ u32 D_80365CD0; // maybe initialized? u64 osClockRate = 62500000; u32 D_80334808 = 0; -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) u32 EU_D_80336C40; u32 EU_D_80336C44; @@ -41,7 +41,7 @@ void osInitialize(void) { u32 sp34; u32 sp30 = 0; -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) UNUSED u32 eu_sp34; UNUSED u32 eu_sp30; #endif @@ -73,7 +73,7 @@ void osInitialize(void) { if (osResetType == RESET_TYPE_COLD_RESET) { bzero(osAppNmiBuffer, sizeof(osAppNmiBuffer)); } -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) eu_sp30 = HW_REG(PI_STATUS_REG, u32); while (eu_sp30 & PI_STATUS_ERROR) { eu_sp30 = HW_REG(PI_STATUS_REG, u32); diff --git a/rename_sym.sh b/rename_sym.sh index c4619353..fd7da9eb 100755 --- a/rename_sym.sh +++ b/rename_sym.sh @@ -10,4 +10,4 @@ fi #echo "Replace $1 with $2?" #read -grep -rl "$1" text/**/*.{c,h} assets/**/*.c enhancements/**/*.{c,h,s} lib/**/*.{c,h,s} asm/**/*.s bin/**/*.c data/*.c levels/**/*.c actors/**/*.c src/**/*.{c,h} include/**/*.{h,in} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g" +grep -rl "$1" text/**/*.{c,h} assets/**/*.c enhancements/*.patch lib/**/*.{c,h,s} asm/**/*.s bin/**/*.c data/*.c levels/**/*.c actors/**/*.c src/**/*.{c,h} include/**/*.{h,in} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g" diff --git a/sm64.ld b/sm64.ld index 59a5a2a6..05e3e2d9 100755 --- a/sm64.ld +++ b/sm64.ld @@ -141,14 +141,14 @@ SECTIONS BUILD_DIR/src/game/obj_behaviors.o(.text); BUILD_DIR/src/game/obj_behaviors_2.o(.text); BUILD_DIR/src/audio/synthesis.o(.text); - BUILD_DIR/src/audio/memory.o(.text); + BUILD_DIR/src/audio/heap.o(.text); BUILD_DIR/src/audio/load.o(.text); BUILD_DIR/src/audio/playback.o(.text); BUILD_DIR/src/audio/effects.o(.text); BUILD_DIR/src/audio/seqplayer.o(.text); BUILD_DIR/src/audio/external.o(.text); BUILD_DIR/src/audio/port_eu.o(.text); -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) BUILD_DIR/libultra.a:string.o(.text); BUILD_DIR/libultra.a:_Printf.o(.text); BUILD_DIR/libultra.a:llmuldiv.o(.text); @@ -521,7 +521,7 @@ SECTIONS BUILD_DIR/src/game*.o(.rodata*); #endif BUILD_DIR/src/audio/synthesis.o(.rodata*); - BUILD_DIR/src/audio/memory.o(.rodata*); + BUILD_DIR/src/audio/heap.o(.rodata*); BUILD_DIR/src/audio/load.o(.rodata*); BUILD_DIR/src/audio/playback.o(.rodata*); BUILD_DIR/src/audio/effects.o(.rodata*); @@ -874,7 +874,7 @@ SECTIONS BUILD_DIR/src/audio/globals_start.o(.bss*); BUILD_DIR/src/audio/synthesis.o(.bss*); - BUILD_DIR/src/audio/memory.o(.bss*); + BUILD_DIR/src/audio/heap.o(.bss*); BUILD_DIR/src/audio/load.o(.bss*); BUILD_DIR/src/audio/data.o(.bss*); BUILD_DIR/src/audio/globals_end.o(.bss*); diff --git a/sm64.sh.sha1 b/sm64.sh.sha1 new file mode 100644 index 00000000..fd0d7f91 --- /dev/null +++ b/sm64.sh.sha1 @@ -0,0 +1 @@ +3f319ae697533a255a1003d09202379d78d5a2e0 build/sh/sm64.sh.z64 diff --git a/src/audio/data.c b/src/audio/data.c index b1ab8b16..10bbe19c 100644 --- a/src/audio/data.c +++ b/src/audio/data.c @@ -4,10 +4,10 @@ #include "data.h" #include "effects.h" -extern struct OSMesgQueue *OSMesgQueue0; -extern struct OSMesgQueue *OSMesgQueue1; -extern struct OSMesgQueue *OSMesgQueue2; -extern struct OSMesgQueue *OSMesgQueue3; +extern struct OSMesgQueue OSMesgQueue0; +extern struct OSMesgQueue OSMesgQueue1; +extern struct OSMesgQueue OSMesgQueue2; +extern struct OSMesgQueue OSMesgQueue3; #ifdef VERSION_EU struct ReverbSettingsEU sReverbSettings[] = { @@ -182,7 +182,7 @@ struct AdsrEnvelope gDefaultEnvelope[] = { #ifdef VERSION_EU struct NoteSubEu gZeroNoteSub = { 0 }; -struct NoteSubEu gDefaultNoteSub = { 1, 1 }; +struct NoteSubEu gDefaultNoteSub = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL } }; s16 sSawtoothWaves[256] = { 0, 1023, 2047, 3071, 4095, 5119, 6143, 7167, 8191, 9215, 10239, diff --git a/src/audio/effects.c b/src/audio/effects.c index 4ace8043..29446094 100644 --- a/src/audio/effects.c +++ b/src/audio/effects.c @@ -13,47 +13,68 @@ #endif #ifdef VERSION_EU -void sequence_channel_process_sound(struct SequenceChannel *seqChannel, s32 arg1) { - f32 weight; +static void sequence_channel_process_sound(struct SequenceChannel *seqChannel, s32 recalculateVolume) { + f32 channelVolume; s32 i; - if (seqChannel->unk1.as_bitfields.unk0b40 || arg1) { - weight = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->unkEu2C; + if (seqChannel->changes.as_bitfields.volume || recalculateVolume) { + channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->appliedFadeVolume; if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) { - weight = seqChannel->seqPlayer->muteVolumeScale * weight; + channelVolume = seqChannel->seqPlayer->muteVolumeScale * channelVolume; } - seqChannel->panChannelWeight = weight; + seqChannel->appliedVolume = channelVolume; } - if (seqChannel->unk1.as_bitfields.unk0b20) { - seqChannel->pan = seqChannel->unk9 * seqChannel->unkA; + if (seqChannel->changes.as_bitfields.pan) { + seqChannel->pan = seqChannel->newPan * seqChannel->panChannelWeight; } for (i = 0; i < 4; ++i) { struct SequenceChannelLayer *layer = seqChannel->layers[i]; - if (layer && layer->enabled && layer->note) { - if (layer->unkEu0b4) { + if (layer != NULL && layer->enabled && layer->note != NULL) { + if (layer->notePropertiesNeedInit) { layer->noteFreqScale = layer->freqScale * seqChannel->freqScale; - layer->noteVelocity = layer->velocitySquare * seqChannel->panChannelWeight; - layer->notePan = (seqChannel->pan + layer->euUnk5 * (0x80 - seqChannel->unkA)) >> 7; - layer->unkEu0b4 = 0; + layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume; + layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7; + layer->notePropertiesNeedInit = FALSE; } else { - if (seqChannel->unk1.as_bitfields.unk0b80) { + if (seqChannel->changes.as_bitfields.freqScale) { layer->noteFreqScale = layer->freqScale * seqChannel->freqScale; } - if (seqChannel->unk1.as_bitfields.unk0b40 || arg1) { - layer->noteVelocity = layer->velocitySquare * seqChannel->panChannelWeight; + if (seqChannel->changes.as_bitfields.volume || recalculateVolume) { + layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume; } - if (seqChannel->unk1.as_bitfields.unk0b20) { - layer->notePan = (seqChannel->pan + layer->euUnk5 * (0x80 - seqChannel->unkA)) >> 7; + if (seqChannel->changes.as_bitfields.pan) { + layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7; } } } } - seqChannel->unk1.as_u8 = 0; + seqChannel->changes.as_u8 = 0; } #else -void func_80319E70(void) { +static void sequence_channel_process_sound(struct SequenceChannel *seqChannel) { + f32 channelVolume; + f32 panLayerWeight; + f32 panFromChannel; + s32 i; + + channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->fadeVolume; + if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) { + channelVolume *= seqChannel->seqPlayer->muteVolumeScale; + } + + panFromChannel = seqChannel->pan * seqChannel->panChannelWeight; + panLayerWeight = US_FLOAT(1.0) - seqChannel->panChannelWeight; + + for (i = 0; i < 4; i++) { + struct SequenceChannelLayer *layer = seqChannel->layers[i]; + if (layer != NULL && layer->enabled && layer->note != NULL) { + layer->noteFreqScale = layer->freqScale * seqChannel->freqScale; + layer->noteVelocity = layer->velocitySquare * channelVolume; + layer->notePan = (layer->pan * panLayerWeight) + panFromChannel; + } + } } #endif @@ -63,7 +84,7 @@ void sequence_player_process_sound(struct SequencePlayer *seqPlayer) { if (seqPlayer->fadeTimer != 0) { seqPlayer->fadeVolume += seqPlayer->fadeVelocity; #ifdef VERSION_EU - seqPlayer->unk_eu = TRUE; + seqPlayer->recalculateVolume = TRUE; #endif if (seqPlayer->fadeVolume > US_FLOAT2(1)) { @@ -98,8 +119,8 @@ void sequence_player_process_sound(struct SequencePlayer *seqPlayer) { } #ifdef VERSION_EU - if (seqPlayer->unk_eu) { - seqPlayer->unkEu2C = seqPlayer->fadeVolume * seqPlayer->unkEu28; + if (seqPlayer->recalculateVolume) { + seqPlayer->appliedFadeVolume = seqPlayer->fadeVolume * seqPlayer->fadeVolumeScale; } #endif @@ -108,37 +129,15 @@ void sequence_player_process_sound(struct SequencePlayer *seqPlayer) { if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == TRUE && seqPlayer->channels[i]->enabled == TRUE) { #ifdef VERSION_EU - sequence_channel_process_sound(seqPlayer->channels[i], seqPlayer->unk_eu); + sequence_channel_process_sound(seqPlayer->channels[i], seqPlayer->recalculateVolume); #else - f32 channelVolume; - f32 panLayerWeight; - f32 panFromChannel; - s32 layerIndex; - struct SequenceChannel *seqChannel = seqPlayer->channels[i]; - - channelVolume = - seqChannel->seqPlayer->fadeVolume * (seqChannel->volume * seqChannel->volumeScale); - if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) { - channelVolume *= seqChannel->seqPlayer->muteVolumeScale; - } - - panFromChannel = seqChannel->panChannelWeight * seqChannel->pan; - panLayerWeight = US_FLOAT(1.0) - seqChannel->panChannelWeight; - - for (layerIndex = 0; layerIndex < 4; layerIndex++) { - struct SequenceChannelLayer *seqLayer = seqChannel->layers[layerIndex]; - if (seqLayer != NULL && seqLayer->enabled && seqLayer->note != NULL) { - seqLayer->noteFreqScale = seqChannel->freqScale * seqLayer->freqScale; - seqLayer->noteVelocity = seqLayer->velocitySquare * channelVolume; - seqLayer->notePan = (seqLayer->pan * panLayerWeight) + panFromChannel; - } - } + sequence_channel_process_sound(seqPlayer->channels[i]); #endif } } #ifdef VERSION_EU - seqPlayer->unk_eu = FALSE; + seqPlayer->recalculateVolume = FALSE; #endif } @@ -224,18 +223,10 @@ f32 get_vibrato_freq_scale(struct VibratoState *vib) { } vib->extentChangeTimer--; -#ifdef VERSION_EU - } else if ((s32) vib->extent != (*vib).seqChannel->vibratoExtentTarget) { + } else if (vib->seqChannel->vibratoExtentTarget != (s32) vib->extent) { if ((vib->extentChangeTimer = vib->seqChannel->vibratoExtentChangeDelay) == 0) { vib->extent = (s32) vib->seqChannel->vibratoExtentTarget; } -#else - } else if ((s32) vib->extent != vib->seqChannel->vibratoExtentTarget) { - vib->extentChangeTimer = vib->seqChannel->vibratoExtentChangeDelay; - if (vib->extentChangeTimer == 0) { - vib->extent = (s32) vib->seqChannel->vibratoExtentTarget; - } -#endif } if (vib->rateChangeTimer) { @@ -246,18 +237,10 @@ f32 get_vibrato_freq_scale(struct VibratoState *vib) { } vib->rateChangeTimer--; -#ifdef VERSION_EU - } else if ((s32) vib->rate != (*vib).seqChannel->vibratoRateTarget) { + } else if (vib->seqChannel->vibratoRateTarget != (s32) vib->rate) { if ((vib->rateChangeTimer = vib->seqChannel->vibratoRateChangeDelay) == 0) { vib->rate = (s32) vib->seqChannel->vibratoRateTarget; } -#else - } else if ((s32) vib->rate != vib->seqChannel->vibratoRateTarget) { - vib->rateChangeTimer = vib->seqChannel->vibratoRateChangeDelay; - if (vib->rateChangeTimer == 0) { - vib->rate = (s32) vib->seqChannel->vibratoRateTarget; - } -#endif } if (vib->extent == 0) { @@ -339,15 +322,13 @@ void note_vibrato_init(struct Note *note) { vib->seqChannel = note->parentLayer->seqChannel; seqChannel = vib->seqChannel; - vib->extentChangeTimer = seqChannel->vibratoExtentChangeDelay; - if (vib->extentChangeTimer == 0) { + if ((vib->extentChangeTimer = seqChannel->vibratoExtentChangeDelay) == 0) { vib->extent = seqChannel->vibratoExtentTarget; } else { vib->extent = seqChannel->vibratoExtentStart; } - vib->rateChangeTimer = seqChannel->vibratoRateChangeDelay; - if (vib->rateChangeTimer == 0) { + if ((vib->rateChangeTimer = seqChannel->vibratoRateChangeDelay) == 0) { vib->rate = seqChannel->vibratoRateTarget; } else { vib->rate = seqChannel->vibratoRateStart; @@ -396,11 +377,7 @@ s32 adsr_update(struct AdsrState *adsr) { #endif if (action & ADSR_ACTION_HANG) { adsr->state = ADSR_STATE_HANG; -#ifdef VERSION_EU break; -#else - goto CONT; -#endif } // fallthrough } @@ -446,11 +423,7 @@ s32 adsr_update(struct AdsrState *adsr) { break; } if (adsr->state != ADSR_STATE_FADE) { -#ifdef VERSION_EU break; -#else - goto CONT; -#endif } // fallthrough @@ -467,11 +440,7 @@ s32 adsr_update(struct AdsrState *adsr) { // fallthrough case ADSR_STATE_HANG: -#ifdef VERSION_EU break; -#else - goto CONT; -#endif case ADSR_STATE_DECAY: case ADSR_STATE_RELEASE: { @@ -490,11 +459,7 @@ s32 adsr_update(struct AdsrState *adsr) { #endif adsr->state = ADSR_STATE_SUSTAIN; } -#ifdef VERSION_EU break; -#else - goto CONT; -#endif } #ifdef VERSION_EU @@ -508,11 +473,7 @@ s32 adsr_update(struct AdsrState *adsr) { adsr->state = ADSR_STATE_DISABLED; } #endif -#ifdef VERSION_EU break; -#else - goto CONT; -#endif } case ADSR_STATE_SUSTAIN: @@ -520,17 +481,9 @@ s32 adsr_update(struct AdsrState *adsr) { if (adsr->delay == 0) { adsr->state = ADSR_STATE_RELEASE; } -#ifdef VERSION_EU break; -#else - goto CONT; -#endif } -#ifndef VERSION_EU -CONT: -#endif - if ((action & ADSR_ACTION_DECAY)) { adsr->state = ADSR_STATE_DECAY; adsr->action = action & ~ADSR_ACTION_DECAY; diff --git a/src/audio/external.c b/src/audio/external.c index 70c57d21..fcc89971 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -1,6 +1,6 @@ #include #include "sm64.h" -#include "memory.h" +#include "heap.h" #include "load.h" #include "data.h" #include "seqplayer.h" @@ -753,10 +753,8 @@ void func_8031D838(s32 player, FadeT fadeInTime, u8 targetVolume) { #ifdef VERSION_EU extern void func_802ad7a0(void); -void maybe_tick_game_sound(void) -{ - if (sGameLoopTicked != 0) - { +void maybe_tick_game_sound(void) { + if (sGameLoopTicked != 0) { update_game_sound(); sGameLoopTicked = 0; } @@ -764,6 +762,7 @@ void maybe_tick_game_sound(void) } void func_eu_802e9bec(s32 player, s32 channel, s32 arg2) { + // EU verson of unused_803209D8 // chan->stopSomething2 = arg2? func_802ad770(0x08000000 | (player & 0xff) << 16 | (channel & 0xff) << 8, (s8) arg2); } @@ -1607,12 +1606,6 @@ void update_game_sound(void) { #undef ARG2_VAL1 #undef ARG2_VAL2 -#if defined(VERSION_EU) && !defined(NON_MATCHING) -// Just regalloc differences -void play_sequence(u8 player, u8 seqId, u16 fadeTimer); -GLOBAL_ASM("asm/non_matchings/eu/play_sequence.s") -#else - void play_sequence(u8 player, u8 seqId, u16 fadeTimer) { u8 temp_ret; u8 i; @@ -1629,13 +1622,13 @@ void play_sequence(u8 player, u8 seqId, u16 fadeTimer) { } #ifdef VERSION_EU - func_802ad770(0x46000000 | (player & 0xff) << 16, seqId & 0x80); - func_802ad74c(0x82000000 | (player & 0xff) << 16 | ((seqId & 0x7f) & 0xff) << 8, fadeTimer); + func_802ad770(0x46000000 | ((u8)(u32)player) << 16, seqId & 0x80); + func_802ad74c(0x82000000 | ((u8)(u32)player) << 16 | ((u8)(seqId & 0x7f)) << 8, fadeTimer); if (player == 0) { temp_ret = func_803200E4(0); if (temp_ret != 0xff) { - gSequencePlayers[0].unkEu28 = (f32) temp_ret / US_FLOAT(127.0); + gSequencePlayers[0].fadeVolumeScale = (f32) temp_ret / US_FLOAT(127.0); } } #else @@ -1653,7 +1646,6 @@ void play_sequence(u8 player, u8 seqId, u16 fadeTimer) { } #endif } -#endif void sequence_player_fade_out(u8 player, u16 fadeTimer) { #ifdef VERSION_EU @@ -2440,7 +2432,7 @@ void sound_reset(u8 presetId) { sGameLoopTicked = 0; disable_all_sequence_players(); sound_init(); -#if defined(VERSION_JP) || defined(VERSION_US) +#if defined(VERSION_JP) || defined(VERSION_US) || defined(VERSION_SH) audio_reset_session(&gAudioSessionPresets[presetId]); #else audio_reset_session_eu(presetId); diff --git a/src/audio/memory.c b/src/audio/heap.c similarity index 87% rename from src/audio/memory.c rename to src/audio/heap.c index e1a37ddd..a11a3201 100644 --- a/src/audio/memory.c +++ b/src/audio/heap.c @@ -1,7 +1,7 @@ #include #include -#include "memory.h" +#include "heap.h" #include "data.h" #include "load.h" #include "synthesis.h" @@ -31,7 +31,7 @@ u8 sReverbDownsampleRateLog; // never read struct SoundAllocPool gAudioSessionPool; struct SoundAllocPool gAudioInitPool; struct SoundAllocPool gNotesAndBuffersPool; -u8 sAudioMemoryPad[0x20]; // probably two unused pools +u8 sAudioHeapPad[0x20]; // probably two unused pools struct SoundAllocPool gSeqAndBankPool; struct SoundAllocPool gPersistentCommonPool; struct SoundAllocPool gTemporaryCommonPool; @@ -95,8 +95,7 @@ f64 root_newton_step(f64 x, s32 k, f64 d) * * @return the root, or 1.0 if d is 0 */ -f64 kth_root(f64 d, s32 k) -{ +f64 kth_root(f64 d, s32 k) { f64 root = 1.5; f64 next; f64 diff; @@ -128,7 +127,7 @@ f64 kth_root(f64 d, s32 k) #endif #ifdef VERSION_EU -void func_eu_802e1cd0(s32 UNUSED unused, s32 len) { +void build_vol_rampings_table(s32 UNUSED unused, s32 len) { s32 i; s32 step; s32 d; @@ -308,30 +307,34 @@ static void unused_803163D4() { } #endif -#if defined(VERSION_EU) && !defined(NON_MATCHING) -GLOBAL_ASM("asm/non_matchings/eu/audio/alloc_bank_or_seq.s") -#else - -#ifdef NON_MATCHING void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg3, s32 id) { // arg3 = 0, 1 or 2? - u8 *table; // sp5C - u8 isSound; // sp5B + struct TemporaryPool *tp; // sp30 + struct PersistentPool *persistent = &arg0->persistent; struct SoundAllocPool *pool; void *ret; - u32 firstVal; - u32 secondVal; +#ifndef VERSION_EU + u16 UNUSED _firstVal; + u16 UNUSED _secondVal; +#else + u16 firstVal; + u16 secondVal; +#endif + u32 nullID = -1; + u8 *table; + u8 isSound; +#ifndef VERSION_EU + u16 firstVal; + u16 secondVal; u32 bothDiscardable; u32 leftDiscardable, rightDiscardable; u32 leftNotLoaded, rightNotLoaded; u32 leftAvail, rightAvail; - UNUSED s32 temp; - struct TemporaryPool *v1; // sp30 - struct PersistentPool *persistent = &arg0->persistent; +#endif if (arg3 == 0) { - v1 = &arg0->temporary; + tp = &arg0->temporary; if (arg0 == &gSeqLoadedPool) { table = gSeqLoadStatus; isSound = FALSE; @@ -340,10 +343,10 @@ void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg isSound = TRUE; } - firstVal = (v1->entries[0].id == -1 ? SOUND_LOAD_STATUS_NOT_LOADED - : table[v1->entries[0].id]); // a3, a2 - secondVal = - (v1->entries[1].id == -1 ? SOUND_LOAD_STATUS_NOT_LOADED : table[v1->entries[1].id]); // a1 + firstVal = (tp->entries[0].id == (s8)nullID ? SOUND_LOAD_STATUS_NOT_LOADED : table[tp->entries[0].id]); // a3, a2 + secondVal = (tp->entries[1].id == (s8)nullID ? SOUND_LOAD_STATUS_NOT_LOADED : table[tp->entries[1].id]); // a1 + +#ifndef VERSION_EU leftNotLoaded = (firstVal == SOUND_LOAD_STATUS_NOT_LOADED); leftDiscardable = (firstVal == SOUND_LOAD_STATUS_DISCARDABLE); // t0 leftAvail = (firstVal != SOUND_LOAD_STATUS_IN_PROGRESS); @@ -353,83 +356,111 @@ void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg bothDiscardable = (leftDiscardable && rightDiscardable); // a0 if (leftNotLoaded) { - v1->nextSide = 0; + tp->nextSide = 0; } else if (rightNotLoaded) { - v1->nextSide = 1; + tp->nextSide = 1; } else if (bothDiscardable) { // Use the opposite side from last time. - } else if (leftDiscardable) { - v1->nextSide = 0; + } else if (firstVal == SOUND_LOAD_STATUS_DISCARDABLE) { //??! + tp->nextSide = 0; } else if (rightDiscardable) { - v1->nextSide = 1; + tp->nextSide = 1; } else if (leftAvail) { - v1->nextSide = 0; + tp->nextSide = 0; } else if (rightAvail) { - v1->nextSide = 1; + tp->nextSide = 1; } else { // Both left and right sides are being loaded into. return NULL; } +#else + if (firstVal == SOUND_LOAD_STATUS_NOT_LOADED) { + tp->nextSide = 0; + } else if (secondVal == SOUND_LOAD_STATUS_NOT_LOADED) { + tp->nextSide = 1; + } else if ((firstVal == SOUND_LOAD_STATUS_DISCARDABLE) && (secondVal == SOUND_LOAD_STATUS_DISCARDABLE)) { + // Use the opposite side from last time. + } else if (firstVal == SOUND_LOAD_STATUS_DISCARDABLE) { + tp->nextSide = 0; + } else if (secondVal == SOUND_LOAD_STATUS_DISCARDABLE) { + tp->nextSide = 1; + } else if (firstVal != SOUND_LOAD_STATUS_IN_PROGRESS) { + tp->nextSide = 0; + } else if (secondVal != SOUND_LOAD_STATUS_IN_PROGRESS) { + tp->nextSide = 1; + } else { + // Both left and right sides are being loaded into. + return NULL; + } +#endif - if (v1->entries[v1->nextSide].id != -1) { - table[v1->entries[v1->nextSide].id] = SOUND_LOAD_STATUS_NOT_LOADED; + pool = &arg0->temporary.pool; // a1 + if (tp->entries[tp->nextSide].id != (s8)nullID) { + table[tp->entries[tp->nextSide].id] = SOUND_LOAD_STATUS_NOT_LOADED; if (isSound == TRUE) { - discard_bank(v1->entries[v1->nextSide].id); + discard_bank(tp->entries[tp->nextSide].id); } } - pool = &arg0->temporary.pool; // a1 - switch (v1->nextSide) { + switch (tp->nextSide) { case 0: - v1->entries[0].ptr = pool->start; - v1->entries[0].id = id; - v1->entries[0].size = size; + tp->entries[0].ptr = pool->start; + tp->entries[0].id = id; + tp->entries[0].size = size; pool->cur = pool->start + size; - if (v1->entries[1].ptr < pool->cur) { + if (tp->entries[1].ptr < pool->cur) { // Throw out the entry on the other side if it doesn't fit. // (possible @bug: what if it's currently being loaded?) - table[v1->entries[1].id] = SOUND_LOAD_STATUS_NOT_LOADED; + table[tp->entries[1].id] = SOUND_LOAD_STATUS_NOT_LOADED; switch (isSound) { case FALSE: - discard_sequence(v1->entries[1].id); + discard_sequence(tp->entries[1].id); break; case TRUE: - discard_bank(v1->entries[1].id); + discard_bank(tp->entries[1].id); break; } - v1->entries[1].id = -1; - v1->entries[1].ptr = pool->size + pool->start; + tp->entries[1].id = (s32)nullID; +#ifdef VERSION_EU + tp->entries[1].ptr = pool->start + pool->size; +#else + tp->entries[1].ptr = pool->size + pool->start; +#endif } - ret = v1->entries[0].ptr; + ret = tp->entries[0].ptr; break; case 1: - v1->entries[1].ptr = pool->size + pool->start - size - 0x10; - v1->entries[1].id = id; - v1->entries[1].size = size; +#ifdef VERSION_EU + tp->entries[1].ptr = pool->start + pool->size - size - 0x10; +#else + tp->entries[1].ptr = pool->size + pool->start - size - 0x10; +#endif + tp->entries[1].id = id; + tp->entries[1].size = size; - if (v1->entries[1].ptr < pool->cur) { - table[v1->entries[0].id] = SOUND_LOAD_STATUS_NOT_LOADED; + if (tp->entries[1].ptr < pool->cur) { + table[tp->entries[0].id] = SOUND_LOAD_STATUS_NOT_LOADED; switch (isSound) { case FALSE: - discard_sequence(v1->entries[0].id); + discard_sequence(tp->entries[0].id); break; case TRUE: - discard_bank(v1->entries[0].id); + discard_bank(tp->entries[0].id); break; } - v1->entries[0].id = -1; + tp->entries[0].id = (s32)nullID; pool->cur = pool->start; } - ret = v1->entries[1].ptr; + ret = tp->entries[1].ptr; break; default: @@ -438,19 +469,31 @@ void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg // Switch sides for next time in case both entries are // SOUND_LOAD_STATUS_DISCARDABLE. - v1->nextSide ^= 1; + tp->nextSide ^= 1; return ret; } +#ifdef VERSION_EU + ret = soundAlloc(&arg0->persistent.pool, arg1 * size); + arg0->persistent.entries[arg0->persistent.numEntries].ptr = ret; + + if (ret == NULL) +#else persistent->entries[persistent->numEntries].ptr = soundAlloc(&persistent->pool, arg1 * size); - if (persistent->entries[persistent->numEntries].ptr == NULL) { + if (persistent->entries[persistent->numEntries].ptr == NULL) +#endif + { switch (arg3) { case 2: +#ifdef VERSION_EU + return alloc_bank_or_seq(arg0, arg1, size, 0, id); +#else // Prevent tail call optimization. ret = alloc_bank_or_seq(arg0, arg1, size, 0, id); return ret; +#endif case 1: return NULL; } @@ -460,14 +503,12 @@ void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg // Because the buffer is small enough that more don't fit? persistent->entries[persistent->numEntries].id = id; persistent->entries[persistent->numEntries].size = size; - persistent->numEntries++; - return persistent->entries[persistent->numEntries - 1].ptr; -} - +#ifdef VERSION_EU + return persistent->entries[persistent->numEntries++].ptr; #else -GLOBAL_ASM("asm/non_matchings/alloc_bank_or_seq.s") -#endif + persistent->numEntries++; return persistent->entries[persistent->numEntries - 1].ptr; #endif +} void *get_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 id) { u32 i; @@ -548,7 +589,7 @@ void decrease_reverb_gain(void) { #endif #ifdef VERSION_EU -s32 func_eu_802E2AA0(void) { +s32 audio_shut_down_and_reset_step(void) { s32 i; s32 j; switch (gAudioResetStatus) { @@ -621,7 +662,6 @@ void wait_for_audio_frames(s32 frames) { void audio_reset_session(struct AudioSessionSettings *preset) { #else void audio_reset_session(void) { - // TODO: verify compilation again and try to match better struct AudioSessionSettingsEU *preset = &gAudioSessionPresets[gAudioResetPresetIdToLoad]; struct ReverbSettingsEU *reverbSettings; #endif @@ -886,7 +926,7 @@ void audio_reset_session(void) { init_sample_dma_buffers(gMaxSimultaneousNotes); #ifdef VERSION_EU - func_eu_802e1cd0(0, gAudioBufferParameters.samplesPerUpdate); + build_vol_rampings_table(0, gAudioBufferParameters.samplesPerUpdate); #endif osWritebackDCacheAll(); diff --git a/src/audio/memory.h b/src/audio/heap.h similarity index 94% rename from src/audio/memory.h rename to src/audio/heap.h index 141c5d4d..5226baa8 100644 --- a/src/audio/memory.h +++ b/src/audio/heap.h @@ -1,5 +1,5 @@ -#ifndef AUDIO_MEMORY_H -#define AUDIO_MEMORY_H +#ifndef AUDIO_HEAP_H +#define AUDIO_HEAP_H #include "internal.h" @@ -63,9 +63,10 @@ void sound_init_main_pools(s32 sizeForAudioInitPool); void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg3, s32 id); void *get_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 arg2); #ifdef VERSION_EU +s32 audio_shut_down_and_reset_step(void); void audio_reset_session(void); #else void audio_reset_session(struct AudioSessionSettings *preset); #endif -#endif /* AUDIO_MEMORY_H */ +#endif /* AUDIO_HEAP_H */ diff --git a/src/audio/internal.h b/src/audio/internal.h index ff098280..19a91bba 100644 --- a/src/audio/internal.h +++ b/src/audio/internal.h @@ -215,7 +215,7 @@ struct SequencePlayer /*0x000, 0x000*/ u8 seqDmaInProgress : 1; /*0x000, 0x000*/ u8 bankDmaInProgress : 1; #ifdef VERSION_EU - /* 0x000*/ u8 unk_eu : 1; + /* 0x000*/ u8 recalculateVolume : 1; #endif #ifndef VERSION_EU /*0x001 */ s8 seqVariation; @@ -251,8 +251,8 @@ struct SequencePlayer /*0x020, 0x020*/ f32 volume; // set to 0.0f /*0x024, 0x024*/ f32 muteVolumeScale; // set to 0.5f #ifdef VERSION_EU - /* , 0x028*/ f32 unkEu28; - /* , 0x02C*/ f32 unkEu2C; + /* , 0x028*/ f32 fadeVolumeScale; + /* , 0x02C*/ f32 appliedFadeVolume; #else /* */ u8 pad2[4]; #endif @@ -340,12 +340,12 @@ struct SequenceChannel #ifdef VERSION_EU /* , 0x01*/ union { struct { - u8 unk0b80 : 1; - u8 unk0b40 : 1; - u8 unk0b20 : 1; + u8 freqScale : 1; + u8 volume : 1; + u8 pan : 1; } as_bitfields; u8 as_u8; - } unk1; + } changes; #endif /*0x01, 0x02*/ u8 noteAllocPolicy; /*0x02, 0x03*/ u8 muteBehavior; @@ -354,9 +354,9 @@ struct SequenceChannel /*0x05, 0x06*/ u8 bankId; #ifdef VERSION_EU /* , 0x07*/ u8 reverbIndex; - /* , 0x08*/ u8 unk8; - /* , 0x09*/ u8 unk9; - /* , 0x0A*/ u8 unkA; + /* , 0x08*/ u8 bookOffset; + /* , 0x09*/ u8 newPan; + /* , 0x0A*/ u8 panChannelWeight; // proportion of pan that comes from the channel (0..128) #else /*0x06, */ u8 updatesPerFrameUnused; #endif @@ -374,11 +374,12 @@ struct SequenceChannel /*0x1C, 0x20*/ f32 volumeScale; /*0x20, 0x24*/ f32 volume; #ifndef VERSION_EU - /*0x24, 0x28*/ f32 pan; + /*0x24, */ f32 pan; + /*0x28, */ f32 panChannelWeight; // proportion of pan that comes from the channel (0..1) #else - /*0x24, 0x28*/ s32 pan; + /* , 0x28*/ s32 pan; + /* , 0x2C*/ f32 appliedVolume; #endif - /*0x28, 0x2C*/ f32 panChannelWeight; // proportion of pan that comes from the channel (0..1) /*0x2C, 0x30*/ f32 freqScale; /*0x30, 0x34*/ u8 (*dynTable)[][2]; /*0x34, ????*/ struct Note *noteUnused; // never read @@ -401,16 +402,16 @@ struct SequenceChannelLayer // Maybe SequenceTrack? /*0x00, 0x00*/ u8 stopSomething : 1; // ? /*0x00, 0x00*/ u8 continuousNotes : 1; // keep the same note for consecutive notes with the same sound #ifdef VERSION_EU - /* , 0x00*/ u8 unkEu0b8 : 1; - /* , 0x00*/ u8 unkEu0b4 : 1; - /* , 0x00*/ u8 unkEu0b2 : 1; - /* , 0x01*/ u8 euUnk1; // euInstOrWave? + /* , 0x00*/ u8 unusedEu0b8 : 1; + /* , 0x00*/ u8 notePropertiesNeedInit : 1; + /* , 0x00*/ u8 ignoreDrumPan : 1; + /* , 0x01*/ u8 instOrWave; #endif /*0x01, 0x02*/ u8 status; /*0x02, 0x03*/ u8 noteDuration; // set to 0x80 /*0x03, 0x04*/ u8 portamentoTargetNote; #ifdef VERSION_EU - /* , 0x05*/ u8 euUnk5; // contains US/JP pan * 128.0f + /* , 0x05*/ u8 pan; // 0..128 /* , 0x06*/ u8 notePan; #endif /*0x04, 0x08*/ struct Portamento portamento; @@ -422,7 +423,7 @@ struct SequenceChannelLayer // Maybe SequenceTrack? /*0x20, 0x24*/ f32 freqScale; /*0x24, 0x28*/ f32 velocitySquare; #ifndef VERSION_EU - /*0x28*/ f32 pan; + /*0x28, */ f32 pan; // 0..1 #endif /*0x2C, 0x2C*/ f32 noteVelocity; #ifndef VERSION_EU @@ -452,7 +453,7 @@ struct NoteSynthesisState /*0x01*/ u8 sampleDmaIndex; /*0x02*/ u8 prevHeadsetPanRight; /*0x03*/ u8 prevHeadsetPanLeft; - /* */ u16 samplePosFrac; //? + /*0x04*/ u16 samplePosFrac; /*0x08*/ s32 samplePosInt; /*0x0C*/ struct NoteSynthesisBuffers *synthesisBuffers; /*0x10*/ s16 curVolLeft; @@ -485,8 +486,8 @@ struct NoteSubEu /*0x00*/ u8 stereoStrongLeft : 1; /*0x00*/ u8 stereoHeadsetEffects : 1; /*0x00*/ u8 usesHeadsetPanEffects : 1; - /*0x01*/ u8 unk1b567 : 3; - /*0x01*/ u8 unk1b234 : 3; + /*0x01*/ u8 reverbIndex : 3; + /*0x01*/ u8 bookOffset : 3; /*0x01*/ u8 isSyntheticWave : 1; /*0x01*/ u8 hasTwoAdpcmParts : 1; /*0x02*/ u8 bankId; @@ -506,7 +507,9 @@ struct Note /* U/J, EU */ /*0xA4, 0x00*/ struct AudioListItem listItem; /* 0x10*/ struct NoteSynthesisState synthesisState; +#ifdef TARGET_N64 u8 pad0[12]; +#endif /*0x04, 0x30*/ u8 priority; /* 0x31*/ u8 waveId; /* 0x32*/ u8 sampleCountIndex; @@ -643,20 +646,40 @@ struct AudioBufferParametersEU { struct EuAudioCmd { union { +#if IS_BIG_ENDIAN struct { u8 op; u8 arg1; u8 arg2; u8 arg3; } s; +#else + struct { + u8 arg3; + u8 arg2; + u8 arg1; + u8 op; + } s; +#endif s32 first; } u; union { s32 as_s32; u32 as_u32; f32 as_f32; +#if IS_BIG_ENDIAN u8 as_u8; s8 as_s8; +#else + struct { + u8 pad0[3]; + u8 as_u8; + }; + struct { + u8 pad1[3]; + s8 as_s8; + }; +#endif } u2; }; diff --git a/src/audio/load.c b/src/audio/load.c index 6cbad7b3..50775004 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -2,7 +2,7 @@ #include #include "load.h" -#include "memory.h" +#include "heap.h" #include "data.h" #include "seqplayer.h" @@ -19,8 +19,7 @@ struct SharedDma { }; // size = 0x10 // EU only -void func_802ada64(void); -s32 func_eu_802E2AA0(void); +void port_eu_init(void); struct Note *gNotes; @@ -425,27 +424,27 @@ void patch_sound(UNUSED struct AudioBankSound *sound, UNUSED u8 *memBase, UNUSED } #ifndef VERSION_EU -#define PATCH_SOUND(_sound, mem, offset) \ -{ \ - struct AudioBankSound *sound = _sound; \ - struct AudioBankSample *sample; \ - void *patched; \ - if ((*sound).sample != (void *) 0) \ - { \ - patched = (void *)(((unsigned int)(*sound).sample) + ((unsigned int)((unsigned char *) mem))); \ - (*sound).sample = patched; \ - sample = (*sound).sample; \ - if ((*sample).loaded == 0) \ - { \ - patched = (void *)(((unsigned int)(*sample).sampleAddr) + ((unsigned int) offset)); \ - (*sample).sampleAddr = patched; \ - patched = (void *)(((unsigned int)(*sample).loop) + ((unsigned int)((unsigned char *) mem))); \ - (*sample).loop = patched; \ - patched = (void *)(((unsigned int)(*sample).book) + ((unsigned int)((unsigned char *) mem))); \ - (*sample).book = patched; \ - (*sample).loaded = 1; \ - } \ - } \ +#define PATCH_SOUND(_sound, mem, offset) \ +{ \ + struct AudioBankSound *sound = _sound; \ + struct AudioBankSample *sample; \ + void *patched; \ + if ((*sound).sample != (void *) 0) \ + { \ + patched = (void *)(((uintptr_t)(*sound).sample) + ((uintptr_t)((u8 *) mem))); \ + (*sound).sample = patched; \ + sample = (*sound).sample; \ + if ((*sample).loaded == 0) \ + { \ + patched = (void *)(((uintptr_t)(*sample).sampleAddr) + ((uintptr_t) offset)); \ + (*sample).sampleAddr = patched; \ + patched = (void *)(((uintptr_t)(*sample).loop) + ((uintptr_t)((u8 *) mem))); \ + (*sample).loop = patched; \ + patched = (void *)(((uintptr_t)(*sample).book) + ((uintptr_t)((u8 *) mem))); \ + (*sample).book = patched; \ + (*sample).loaded = 1; \ + } \ + } \ } #endif @@ -469,7 +468,7 @@ void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 drums = mem->drums; #ifndef VERSION_EU if (drums != NULL && numDrums > 0) { - mem->drums = (void *)((unsigned int) drums + (unsigned int) mem); + mem->drums = (void *)((uintptr_t) drums + (uintptr_t) mem); if (numDrums > 0) //! unneeded when -sopt is enabled for (i = 0; i < numDrums; i++) { #else @@ -923,7 +922,7 @@ void audio_init() { D_EU_802298D0 = 20.03042f; gRefreshRate = 50; - func_802ada64(); + port_eu_init(); if (k) { } #endif @@ -958,7 +957,7 @@ void audio_init() { #ifdef VERSION_EU gAudioResetPresetIdToLoad = 0; gAudioResetStatus = 1; - func_eu_802E2AA0(); + audio_shut_down_and_reset_step(); #else audio_reset_session(&gAudioSessionPresets[0]); #endif diff --git a/src/audio/playback.c b/src/audio/playback.c index 445b3cee..376f1817 100644 --- a/src/audio/playback.c +++ b/src/audio/playback.c @@ -1,7 +1,7 @@ #include #include -#include "memory.h" +#include "heap.h" #include "data.h" #include "load.h" #include "seqplayer.h" @@ -102,7 +102,7 @@ void note_set_resampling_rate(struct Note *note, f32 resamplingRateInput) { note->noteSubEu.resamplingRateFixedPoint = (s32) (resamplingRate * 32768.0f); } -struct AudioBankSound *func_eu_802e4e5c(struct Instrument *instrument, s32 semitone) { +struct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone) { struct AudioBankSound *sound; if (semitone < instrument->normalRangeLo) { sound = &instrument->lowNotesSound; @@ -114,7 +114,7 @@ struct AudioBankSound *func_eu_802e4e5c(struct Instrument *instrument, s32 semit return sound; } -struct Instrument *func_eu_802e4e98(s32 bankId, s32 instId) { +struct Instrument *get_instrument_inner(s32 bankId, s32 instId) { struct Instrument *inst; if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) { @@ -146,7 +146,7 @@ struct Instrument *func_eu_802e4e98(s32 bankId, s32 instId) { return NULL; } -struct Drum *func_eu_802e4fb8(s32 bankId, s32 drumId) { +struct Drum *get_drum(s32 bankId, s32 drumId) { struct Drum *drum; if (drumId >= gCtlEntries[bankId].numDrums) { gAudioErrorFlags = ((bankId << 8) + drumId) + 0x4000000; @@ -223,7 +223,7 @@ void process_notes(void) { u8 reverb; UNUSED u8 pad3; u8 pan; - u8 unk; + u8 bookOffset; #endif struct NoteAttributes *attributes; #ifndef VERSION_EU @@ -321,13 +321,13 @@ void process_notes(void) { reverb = attributes->reverb; if (1) { } - unk = noteSubEu->unk1b234; + bookOffset = noteSubEu->bookOffset; } else { frequency = playbackState->parentLayer->noteFreqScale; velocity = playbackState->parentLayer->noteVelocity; pan = playbackState->parentLayer->notePan; reverb = playbackState->parentLayer->seqChannel->reverb; - unk = playbackState->parentLayer->seqChannel->unk8 & 0x7; // bitfield? + bookOffset = playbackState->parentLayer->seqChannel->bookOffset & 0x7; } frequency *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale; @@ -335,7 +335,7 @@ void process_notes(void) { velocity = velocity * scale * scale; note_set_resampling_rate(note, frequency); note_set_vel_pan_reverb(note, velocity, pan, reverb); - noteSubEu->unk1b234 = unk; + noteSubEu->bookOffset = bookOffset; skip:; } #else @@ -589,7 +589,7 @@ void init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLaye #ifdef VERSION_EU s32 sampleCountIndex; s32 waveSampleCountIndex; - s32 waveId = seqLayer->euUnk1; + s32 waveId = seqLayer->instOrWave; if (waveId == 0xff) { waveId = seqLayer->seqChannel->instOrWave; } @@ -799,14 +799,14 @@ void note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLaye note->prevParentLayer = NO_LAYER; note->parentLayer = seqLayer; note->priority = seqLayer->seqChannel->notePriority; - seqLayer->unkEu0b4 = TRUE; + seqLayer->notePropertiesNeedInit = TRUE; seqLayer->status = SOUND_LOAD_STATUS_DISCARDABLE; // "loaded" seqLayer->note = note; seqLayer->seqChannel->noteUnused = note; seqLayer->seqChannel->layerUnused = seqLayer; seqLayer->noteVelocity = 0.0f; note_init(note); - instId = seqLayer->euUnk1; + instId = seqLayer->instOrWave; if (instId == 0xff) { instId = seqLayer->seqChannel->instOrWave; } @@ -823,7 +823,7 @@ void note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLaye } sub->bankId = seqLayer->seqChannel->bankId; sub->stereoHeadsetEffects = seqLayer->seqChannel->stereoHeadsetEffects; - sub->unk1b567 = seqLayer->seqChannel->reverbIndex & 3; + sub->reverbIndex = seqLayer->seqChannel->reverbIndex & 3; } #else s32 note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer) { diff --git a/src/audio/playback.h b/src/audio/playback.h index b69665df..b267fd09 100644 --- a/src/audio/playback.h +++ b/src/audio/playback.h @@ -29,8 +29,9 @@ void reclaim_notes(void); void note_init_all(void); #ifdef VERSION_EU -struct AudioBankSound *func_eu_802e4e5c(struct Instrument *instrument, s32 semitone); -struct Drum *func_eu_802e4fb8(s32 bankId, s32 drumId); +struct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone); +struct Instrument *get_instrument_inner(s32 bankId, s32 instId); +struct Drum *get_drum(s32 bankId, s32 drumId); void note_init_volume(struct Note *note); void note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverb); void note_set_frequency(struct Note *note, f32 frequency); diff --git a/src/audio/port_eu.c b/src/audio/port_eu.c index 539f66be..461f988e 100644 --- a/src/audio/port_eu.c +++ b/src/audio/port_eu.c @@ -29,9 +29,9 @@ extern struct EuAudioCmd sAudioCmd[0x100]; void func_8031D690(s32 player, FadeT fadeInTime); void sequence_player_fade_out_internal(s32 player, FadeT fadeOutTime); -void func_802ad668(void); +void port_eu_init_queues(void); void decrease_sample_dma_ttls(void); -s32 func_eu_802E2AA0(void); +s32 audio_shut_down_and_reset_step(void); void func_802ad7ec(u32); struct SPTask *create_next_audio_frame_task(void) { @@ -76,7 +76,7 @@ struct SPTask *create_next_audio_frame_task(void) { } if (gAudioResetStatus != 0) { - if (func_eu_802E2AA0() == 0) { + if (audio_shut_down_and_reset_step() == 0) { if (gAudioResetStatus == 0) { osSendMesg(OSMesgQueues[3], (OSMesg) (s32) gAudioResetPresetIdToLoad, OS_MESG_NOBLOCK); } @@ -164,14 +164,14 @@ void eu_process_audio_cmd(struct EuAudioCmd *cmd) { case 0xf1: for (i = 0; i < 4; i++) { gSequencePlayers[i].muted = TRUE; - gSequencePlayers[i].unk_eu = TRUE; + gSequencePlayers[i].recalculateVolume = TRUE; } break; case 0xf2: for (i = 0; i < 4; i++) { gSequencePlayers[i].muted = FALSE; - gSequencePlayers[i].unk_eu = TRUE; + gSequencePlayers[i].recalculateVolume = TRUE; } break; } @@ -207,7 +207,7 @@ void func_8031D690(s32 player, FadeT fadeInTime) { } } -void func_802ad668(void) { +void port_eu_init_queues(void) { D_EU_80302010 = 0; D_EU_80302014 = 0; osCreateMesgQueue(OSMesgQueues[0], &OSMesg0, 1); @@ -262,8 +262,8 @@ void func_802ad7ec(u32 arg0) { else if ((cmd->u.s.op & 0x40) != 0) { switch (cmd->u.s.op) { case 0x41: - seqPlayer->unkEu28 = cmd->u2.as_f32; - seqPlayer->unk_eu = TRUE; + seqPlayer->fadeVolumeScale = cmd->u2.as_f32; + seqPlayer->recalculateVolume = TRUE; break; case 0x47: @@ -286,19 +286,19 @@ void func_802ad7ec(u32 arg0) { switch (cmd->u.s.op) { case 1: chan->volumeScale = cmd->u2.as_f32; - chan->unk1.as_bitfields.unk0b40 = TRUE; + chan->changes.as_bitfields.volume = TRUE; break; case 2: chan->volume = cmd->u2.as_f32; - chan->unk1.as_bitfields.unk0b40 = TRUE; + chan->changes.as_bitfields.volume = TRUE; break; case 3: - chan->unk9 = cmd->u2.as_s8; - chan->unk1.as_bitfields.unk0b20 = TRUE; + chan->newPan = cmd->u2.as_s8; + chan->changes.as_bitfields.pan = TRUE; break; case 4: chan->freqScale = cmd->u2.as_f32; - chan->unk1.as_bitfields.unk0b80 = TRUE; + chan->changes.as_bitfields.freqScale = TRUE; break; case 5: chan->reverb = cmd->u2.as_s8; @@ -319,8 +319,8 @@ void func_802ad7ec(u32 arg0) { } } -void func_802ada64(void) { - func_802ad668(); +void port_eu_init(void) { + port_eu_init_queues(); } #endif diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index c6fb6515..7e66a220 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -1,7 +1,7 @@ #include #include -#include "memory.h" +#include "heap.h" #include "data.h" #include "load.h" #include "seqplayer.h" @@ -33,11 +33,11 @@ void sequence_channel_init(struct SequenceChannel *seqChannel) { seqChannel->transposition = 0; seqChannel->largeNotes = FALSE; #ifdef VERSION_EU - seqChannel->unk8 = 0; - seqChannel->unk1.as_u8 = 0xff; + seqChannel->bookOffset = 0; + seqChannel->changes.as_u8 = 0xff; seqChannel->scriptState.depth = 0; - seqChannel->unk9 = 0x40; - seqChannel->unkA = 0x80; + seqChannel->newPan = 0x40; + seqChannel->panChannelWeight = 0x80; seqChannel->noteUnused = NULL; seqChannel->reverbIndex = 0; #else @@ -105,14 +105,14 @@ s32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex) { layer->continuousNotes = FALSE; layer->finished = FALSE; #ifdef VERSION_EU - layer->unkEu0b2 = FALSE; + layer->ignoreDrumPan = FALSE; #endif layer->portamento.mode = 0; layer->scriptState.depth = 0; layer->status = SOUND_LOAD_STATUS_NOT_LOADED; layer->noteDuration = 0x80; #ifdef VERSION_EU - layer->euUnk5 = 0x40; + layer->pan = 0x40; #endif layer->transposition = 0; layer->delay = 0; @@ -123,7 +123,7 @@ s32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex) { #ifdef VERSION_EU layer->freqScale = 1.0f; layer->velocitySquare = 0.0f; - layer->euUnk1 = 0xff; + layer->instOrWave = 0xff; #else layer->velocitySquare = 0.0f; layer->pan = 0.5f; @@ -244,18 +244,18 @@ void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 chan } } -#if defined(VERSION_EU) && !defined(NON_MATCHING) -GLOBAL_ASM("asm/non_matchings/eu/audio/sequence_channel_enable.s") -#else void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void *arg2) { struct SequenceChannel *seqChannel = seqPlayer->channels[channelIndex]; s32 i; #ifdef VERSION_EU if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) { - // not matching exactly, but this is the logic at least (stubbed printfs?) - if (seqPlayer == &gSequencePlayers[0]) { - } else if (seqPlayer == &gSequencePlayers[1]) { + struct SequencePlayer *bgMusic = &gSequencePlayers[0]; + struct SequencePlayer *miscMusic = &gSequencePlayers[1]; + + if (seqPlayer == bgMusic) { + } else if (seqPlayer == miscMusic) { + } else { } } else { #else @@ -273,7 +273,6 @@ void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, } } } -#endif void sequence_player_disable(struct SequencePlayer *seqPlayer) { sequence_player_disable_channels(seqPlayer, 0xffff); @@ -464,7 +463,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { seqPlayer = seqChannel->seqPlayer; #ifdef VERSION_EU - layer->unkEu0b4 = TRUE; + layer->notePropertiesNeedInit = TRUE; #endif for (;;) { @@ -553,7 +552,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { layer->velocitySquare = (f32)(temp_a0_5 * temp_a0_5); } else { #ifdef VERSION_EU - layer->euUnk5 = temp_a0_5; + layer->pan = temp_a0_5; #else layer->pan = (f32) temp_a0_5 / US_FLOAT(128.0); #endif @@ -624,9 +623,9 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { if (instId >= 0x7f) { #ifdef VERSION_EU if (instId == 0x7f) { - layer->euUnk1 = 0; + layer->instOrWave = 0; } else { - layer->euUnk1 = instId; + layer->instOrWave = instId; layer->instrument = NULL; } if (instId != 0xff) { @@ -639,11 +638,11 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { #ifdef VERSION_EU instId = get_instrument(seqChannel, instId, &layer->instrument, &layer->adsr); - layer->euUnk1 = instId; + layer->instOrWave = instId; if (instId == 0) { - layer->euUnk1 = 0xff; + layer->instOrWave = 0xff; } - //layer->euUnk1 = instId == 0 ? 0xff : instId; + //layer->instOrWave = instId == 0 ? 0xff : instId; break; #else bankId = seqChannel->bankId; // maybe a temp, to match get_instrument @@ -732,7 +731,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { break; case 0xcc: - layer->unkEu0b2 = TRUE; + layer->ignoreDrumPan = TRUE; break; #endif @@ -869,9 +868,9 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { layer->stopSomething = TRUE; } else { #ifdef VERSION_EU - if ((layer->euUnk1 == 0xff ? seqChannel->instOrWave : layer->euUnk1) == 0) { + if ((layer->instOrWave == 0xff ? seqChannel->instOrWave : layer->instOrWave) == 0) { drumIndex = cmdSemitone + seqChannel->transposition + layer->transposition; - drum = func_eu_802e4fb8(seqChannel->bankId, drumIndex); + drum = get_drum(seqChannel->bankId, drumIndex); #else if (seqChannel->instOrWave == 0) { // drum drumIndex = cmdSemitone + seqChannel->transposition + layer->transposition; @@ -893,8 +892,8 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { layer->adsr.envelope = drum->envelope; layer->adsr.releaseRate = drum->releaseRate; #ifdef VERSION_EU - if (!layer->unkEu0b2) { - layer->euUnk5 = drum->pan; + if (!layer->ignoreDrumPan) { + layer->pan = drum->pan; } #else layer->pan = FLOAT_CAST(drum->pan) / US_FLOAT(128.0); @@ -912,7 +911,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { layer->stopSomething = TRUE; } else { #ifdef VERSION_EU - if (layer->euUnk1 == 0xff) { + if (layer->instOrWave == 0xff) { instrument = seqChannel->instrument; } else { instrument = layer->instrument; @@ -931,7 +930,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { } if (instrument != NULL) { #ifdef VERSION_EU - sound = func_eu_802e4e5c(instrument, usedSemitone); + sound = instrument_get_audio_bank_sound(instrument, usedSemitone); #else if (usedSemitone < instrument->normalRangeLo) { sound = &instrument->lowNotesSound; @@ -990,7 +989,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { } } else if (instrument != NULL) { #ifdef VERSION_EU - sound = func_eu_802e4e5c(instrument, semitone); + sound = instrument_get_audio_bank_sound(instrument, semitone); #else if (semitone < instrument->normalRangeLo) { sound = &instrument->lowNotesSound; @@ -1055,14 +1054,12 @@ GLOBAL_ASM("asm/non_matchings/seq_channel_layer_process_script_jp.s") GLOBAL_ASM("asm/non_matchings/seq_channel_layer_process_script_us.s") #endif -struct Instrument *func_eu_802e4e98(s32 bankId, s32 instId); - u8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut, struct AdsrSettings *adsr) { struct Instrument *inst; #ifdef VERSION_EU - inst = func_eu_802e4e98(seqChannel->bankId, instId); + inst = get_instrument_inner(seqChannel->bankId, instId); if (inst == NULL) { *instOut = NULL; @@ -1362,21 +1359,21 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) { case 0xdf: // chan_setvol sequence_channel_set_volume(seqChannel, m64_read_u8(state)); #ifdef VERSION_EU - seqChannel->unk1.as_bitfields.unk0b40 = TRUE; + seqChannel->changes.as_bitfields.volume = TRUE; #endif break; case 0xe0: // chan_setvolscale seqChannel->volumeScale = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0); #ifdef VERSION_EU - seqChannel->unk1.as_bitfields.unk0b40 = TRUE; + seqChannel->changes.as_bitfields.volume = TRUE; #endif break; case 0xde: // chan_freqscale; pitch bend using raw frequency multiplier N/2^15 (N is u16) sp5A = m64_read_s16(state); #ifdef VERSION_EU - seqChannel->unk1.as_bitfields.unk0b80 = TRUE; + seqChannel->changes.as_bitfields.freqScale = TRUE; #endif seqChannel->freqScale = FLOAT_CAST(sp5A) / US_FLOAT(32768.0); break; @@ -1386,14 +1383,14 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) { temp = m64_read_u8(state) + 127; seqChannel->freqScale = gPitchBendFrequencyScale[temp]; #ifdef VERSION_EU - seqChannel->unk1.as_bitfields.unk0b80 = TRUE; + seqChannel->changes.as_bitfields.freqScale = TRUE; #endif break; case 0xdd: // chan_setpan #ifdef VERSION_EU - seqChannel->unk9 = m64_read_u8(state); - seqChannel->unk1.as_bitfields.unk0b20 = TRUE; + seqChannel->newPan = m64_read_u8(state); + seqChannel->changes.as_bitfields.pan = TRUE; #else seqChannel->pan = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0); #endif @@ -1401,8 +1398,8 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) { case 0xdc: // chan_setpanmix; set proportion of pan to come from channel (0..128) #ifdef VERSION_EU - seqChannel->unkA = m64_read_u8(state); - seqChannel->unk1.as_bitfields.unk0b20 = TRUE; + seqChannel->panChannelWeight = m64_read_u8(state); + seqChannel->changes.as_bitfields.pan = TRUE; #else seqChannel->panChannelWeight = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0); #endif @@ -1544,7 +1541,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) { #ifdef VERSION_EU case 0xe6: - seqChannel->unk8 = m64_read_u8(state); + seqChannel->bookOffset = m64_read_u8(state); break; case 0xe7: @@ -1554,11 +1551,11 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) { seqChannel->noteAllocPolicy = *arr++; seqChannel->notePriority = *arr++; seqChannel->transposition = (s8) *arr++; - seqChannel->unk9 = *arr++; - seqChannel->unkA = *arr++; + seqChannel->newPan = *arr++; + seqChannel->panChannelWeight = *arr++; seqChannel->reverb = *arr++; seqChannel->reverbIndex = *arr++; // reverb index? - seqChannel->unk1.as_bitfields.unk0b20 = TRUE; + seqChannel->changes.as_bitfields.pan = TRUE; break; case 0xe8: @@ -1566,11 +1563,11 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) { seqChannel->noteAllocPolicy = m64_read_u8(state); seqChannel->notePriority = m64_read_u8(state); seqChannel->transposition = (s8) m64_read_u8(state); - seqChannel->unk9 = m64_read_u8(state); - seqChannel->unkA = m64_read_u8(state); + seqChannel->newPan = m64_read_u8(state); + seqChannel->panChannelWeight = m64_read_u8(state); seqChannel->reverb = m64_read_u8(state); seqChannel->reverbIndex = m64_read_u8(state); - seqChannel->unk1.as_bitfields.unk0b20 = TRUE; + seqChannel->changes.as_bitfields.pan = TRUE; break; case 0xec: @@ -1689,14 +1686,10 @@ GLOBAL_ASM("asm/non_matchings/sequence_channel_process_script_jp.s") GLOBAL_ASM("asm/non_matchings/sequence_channel_process_script_us.s") #endif -#if defined(VERSION_EU) && !defined(NON_MATCHING) -GLOBAL_ASM("asm/non_matchings/eu/audio/sequence_player_process_sequence.s") -#else void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { u8 cmd; u8 loBits; u8 temp; - s8 tempSigned; s32 value; s32 i; u16 u16v; @@ -1758,6 +1751,10 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { if (osRecvMesg(&seqPlayer->seqDmaMesgQueue, NULL, 0) == -1) { return; } +#ifndef AVOID_UB + if (temp) { + } +#endif #else if (seqPlayer->seqDmaMesg == NULL) { return; @@ -1791,10 +1788,14 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { state = &seqPlayer->scriptState; if (seqPlayer->delay > 1) { +#ifndef AVOID_UB + if (temp) { + } +#endif seqPlayer->delay--; } else { #ifdef VERSION_EU - seqPlayer->unk_eu = 1; + seqPlayer->recalculateVolume = 1; #endif for (;;) { cmd = m64_read_u8(state); @@ -1804,7 +1805,11 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { sequence_player_disable(seqPlayer); break; } +#ifdef VERSION_EU + state->pc = state->stack[--state->depth]; +#else state->depth--, state->pc = state->stack[state->depth]; +#endif } if (cmd == 0xfd) // seq_delay @@ -1873,14 +1878,14 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { case 0xf4: case 0xf3: case 0xf2: - tempSigned = m64_read_u8(state); + temp = m64_read_u8(state); if (cmd == 0xf3 && value != 0) { break; } if (cmd == 0xf2 && value >= 0) { break; } - state->pc += tempSigned; + state->pc += (s8)temp; break; #endif @@ -1942,7 +1947,7 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { case SEQUENCE_PLAYER_STATE_2: seqPlayer->fadeTimer = u16v; seqPlayer->state = temp; - seqPlayer->fadeVelocity = (0.0f - seqPlayer->fadeVolume) / (s32) u16v; + seqPlayer->fadeVelocity = (0.0f - seqPlayer->fadeVolume) / (s32) (u16v & 0xFFFFu); break; } break; @@ -1988,16 +1993,16 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { break; case 0xda: // seq_changevol - tempSigned = m64_read_u8(state); + temp = m64_read_u8(state); seqPlayer->fadeVolume = - seqPlayer->fadeVolume + (f32) tempSigned / US_FLOAT(127.0); + seqPlayer->fadeVolume + (f32) (s8)temp / US_FLOAT(127.0); break; #endif #ifdef VERSION_EU case 0xd9: - tempSigned = m64_read_u8(state); - seqPlayer->unkEu28 = tempSigned / 127.0f; + temp = m64_read_u8(state); + seqPlayer->fadeVolumeScale = (s8)temp / 127.0f; break; #endif @@ -2012,8 +2017,8 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { break; case 0xd5: // seq_setmutescale - tempSigned = m64_read_u8(state); - seqPlayer->muteVolumeScale = (f32) tempSigned / US_FLOAT(127.0); + temp = m64_read_u8(state); + seqPlayer->muteVolumeScale = (f32) (s8)temp / US_FLOAT(127.0); break; case 0xd4: // seq_mute @@ -2125,7 +2130,6 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { #endif } } -#endif // This runs 240 times per second. void process_sequences(UNUSED s32 iterationsRemaining) { @@ -2172,7 +2176,7 @@ void init_sequence_player(u32 player) { seqPlayer->shortNoteDurationTable = gDefaultShortNoteDurationTable; seqPlayer->fadeVolume = 1.0f; #ifdef VERSION_EU - seqPlayer->unkEu28 = 1.0f; + seqPlayer->fadeVolumeScale = 1.0f; #endif seqPlayer->fadeVelocity = 0.0f; seqPlayer->volume = 0.0f; diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index 5d1f7e3d..e051d63c 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -2,7 +2,7 @@ #include #include "synthesis.h" -#include "memory.h" +#include "heap.h" #include "data.h" #include "load.h" #include "seqplayer.h" @@ -81,19 +81,16 @@ u8 sAudioSynthesisPad[0x20]; #endif #if defined(VERSION_EU) -#ifndef NON_MATCHING -GLOBAL_ASM("asm/non_matchings/eu/audio/prepare_reverb_ring_buffer.s") -#else // Equivalent functionality as the US/JP version, // just that the reverb structure is chosen from an array with index void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) { - struct SynthesisReverb *reverb = &gSynthesisReverbs[reverbIndex]; struct ReverbRingBufferItem *item; + struct SynthesisReverb *reverb = &gSynthesisReverbs[reverbIndex]; s32 srcPos; s32 dstPos; s32 nSamples; - //s32 numSamplesAfterDownsampling; s32 excessiveSamples; + s32 UNUSED pad[3]; if (reverb->downsampleRate != 1) { if (reverb->framesLeftToIgnore == 0) { // Now that the RSP has finished, downsample the samples produced two frames ago by skipping @@ -105,9 +102,9 @@ void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) for (srcPos = 0, dstPos = 0; dstPos < item->lengths[0] / 2; srcPos += reverb->downsampleRate, dstPos++) { - reverb->ringBuffer.left[dstPos + item->startPos] = + reverb->ringBuffer.left[item->startPos + dstPos] = item->toDownsampleLeft[srcPos]; - reverb->ringBuffer.right[dstPos + item->startPos] = + reverb->ringBuffer.right[item->startPos + dstPos] = item->toDownsampleRight[srcPos]; } for (dstPos = 0; dstPos < item->lengths[1] / 2; srcPos += reverb->downsampleRate, dstPos++) { @@ -117,11 +114,9 @@ void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) } } - //numSamplesAfterDownsampling = - nSamples = chunkLen / reverb->downsampleRate; - excessiveSamples = - (nSamples + reverb->nextRingBufferPos) - reverb->bufSizePerChannel; item = &reverb->items[reverb->curFrame][updateIndex]; + nSamples = chunkLen / reverb->downsampleRate; + excessiveSamples = (nSamples + reverb->nextRingBufferPos) - reverb->bufSizePerChannel; if (excessiveSamples < 0) { // There is space in the ring buffer before it wraps around item->lengths[0] = nSamples * 2; @@ -130,7 +125,6 @@ void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) reverb->nextRingBufferPos += nSamples; } else { // Ring buffer wrapped around - //nSamples = numSamplesAfterDownsampling - excessiveSamples; item->lengths[0] = (nSamples - excessiveSamples) * 2; item->lengths[1] = excessiveSamples * 2; item->startPos = reverb->nextRingBufferPos; @@ -140,7 +134,6 @@ void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) item->numSamplesAfterDownsampling = nSamples; item->chunkLen = chunkLen; } -#endif #else void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex) { struct ReverbRingBufferItem *item; @@ -261,50 +254,33 @@ s32 get_volume_ramping(u16 sourceVol, u16 targetVol, s32 arg2) { #endif #ifdef VERSION_EU -#ifndef NON_MATCHING -GLOBAL_ASM("asm/non_matchings/eu/audio/synthesis_execute.s") -#else +//TODO: (Scrub C) pointless mask and whitespace u64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, u16 *aiBuf, s32 bufLen) { - s32 nextVolRampTable; - s32 temp; - s32 i; - s32 remaining; + s32 i, j; f32 *leftVolRamp; f32 *rightVolRamp; - s32 chunkLen; - s32 j; u32 *aiBufPtr; u64 *cmd = cmdBuf; + s32 chunkLen; + s32 nextVolRampTable; for (i = gAudioBufferParameters.updatesPerFrame; i > 0; i--) { process_sequences(i - 1); synthesis_load_note_subs_eu(gAudioBufferParameters.updatesPerFrame - i); } aSegment(cmd++, 0, 0); - remaining = bufLen; aiBufPtr = (u32 *) aiBuf; for (i = gAudioBufferParameters.updatesPerFrame; i > 0; i--) { if (i == 1) { - leftVolRamp = gLeftVolRampings[nextVolRampTable]; - rightVolRamp = gRightVolRampings[nextVolRampTable]; - chunkLen = remaining; + // self-assignment has no affect when added here, could possibly simplify a macro definition + chunkLen = bufLen; nextVolRampTable = nextVolRampTable; leftVolRamp = gLeftVolRampings[nextVolRampTable]; rightVolRamp = gRightVolRampings[nextVolRampTable & 0xFFFFFFFF]; } else { - temp = remaining / i; - if (temp >= gAudioBufferParameters.samplesPerUpdateMax) { - leftVolRamp = gLeftVolRampings[2]; - rightVolRamp = gRightVolRampings[2]; - chunkLen = gAudioBufferParameters.samplesPerUpdateMax; - nextVolRampTable = 2; - } else if (temp <= gAudioBufferParameters.samplesPerUpdateMin) { - leftVolRamp = gLeftVolRampings[0]; - rightVolRamp = gRightVolRampings[0]; - chunkLen = gAudioBufferParameters.samplesPerUpdateMin; - nextVolRampTable = 0; + if (bufLen / i >= gAudioBufferParameters.samplesPerUpdateMax) { + chunkLen = gAudioBufferParameters.samplesPerUpdateMax; nextVolRampTable = 2; leftVolRamp = gLeftVolRampings[2]; rightVolRamp = gRightVolRampings[2]; + } else if (bufLen / i <= gAudioBufferParameters.samplesPerUpdateMin) { + chunkLen = gAudioBufferParameters.samplesPerUpdateMin; nextVolRampTable = 0; leftVolRamp = gLeftVolRampings[0]; rightVolRamp = gRightVolRampings[0]; } else { - leftVolRamp = gLeftVolRampings[1]; - rightVolRamp = gRightVolRampings[1]; - chunkLen = gAudioBufferParameters.samplesPerUpdate; - nextVolRampTable = 1; + chunkLen = gAudioBufferParameters.samplesPerUpdate; nextVolRampTable = 1; leftVolRamp = gLeftVolRampings[1]; rightVolRamp = gRightVolRampings[1]; } } gCurrentLeftVolRamping = leftVolRamp; @@ -315,19 +291,19 @@ u64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, u16 *aiBuf, s32 bufLen) { } } cmd = synthesis_do_one_audio_update((u16 *) aiBufPtr, chunkLen, cmd, gAudioBufferParameters.updatesPerFrame - i); - remaining -= chunkLen; + bufLen -= chunkLen; aiBufPtr += chunkLen; } - for (i = 0; i < gNumSynthesisReverbs; i++) { - if (gSynthesisReverbs[i].framesLeftToIgnore != 0) { - gSynthesisReverbs[i].framesLeftToIgnore--; + + for (j = 0; j < gNumSynthesisReverbs; j++) { + if (gSynthesisReverbs[j].framesLeftToIgnore != 0) { + gSynthesisReverbs[j].framesLeftToIgnore--; } - gSynthesisReverbs[i].curFrame ^= 1; + gSynthesisReverbs[j].curFrame ^= 1; } *writtenCmds = cmd - cmdBuf; return cmd; } -#endif #else // bufLen will be divisible by 16 u64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, u16 *aiBuf, s32 bufLen) { @@ -372,171 +348,153 @@ u64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, u16 *aiBuf, s32 bufLen) { #ifdef VERSION_EU -#ifndef NON_MATCHING -GLOBAL_ASM("asm/non_matchings/eu/audio/synthesis_resample_and_mix_reverb.s") -u64 *synthesis_resample_and_mix_reverb(u64 *cmd, s32 bufLen, s16 reverbIndex, s16 updateIndex); -#else u64 *synthesis_resample_and_mix_reverb(u64 *cmd, s32 bufLen, s16 reverbIndex, s16 updateIndex) { - struct ReverbRingBufferItem *item; // sp5C + struct ReverbRingBufferItem *item; s16 temp_t9; // sp5a s16 sp58; // sp58 - struct SynthesisReverb *reverb; - reverb = &gSynthesisReverbs[reverbIndex]; - item = &reverb->items[reverb->curFrame][updateIndex]; + item = &gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex]; aClearBuffer(cmd++, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH); - if (reverb->downsampleRate == 1) { + if (gSynthesisReverbs[reverbIndex].downsampleRate == 1) { cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH, item->startPos, item->lengths[0], reverbIndex); if (item->lengths[1] != 0) { cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH + item->lengths[0], 0, item->lengths[1], reverbIndex); } aSetBuffer(cmd++, 0, 0, 0, DEFAULT_LEN_2CH); aMix(cmd++, 0, 0x7fff, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH); - aMix(cmd++, 0, 0x8000 + reverb->reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH); + aMix(cmd++, 0, 0x8000 + gSynthesisReverbs[reverbIndex].reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH); } else { - temp_t9 = (item->startPos & 7) * 2; - sp58 = ALIGN(temp_t9 + item->lengths[0], 4); + temp_t9 = (item->startPos % 8u) * 2; + sp58 = ALIGN(item->lengths[0] + (sp58=temp_t9), 4); + cmd = synthesis_load_reverb_ring_buffer(cmd, 0x20, (item->startPos - temp_t9 / 2), DEFAULT_LEN_1CH, reverbIndex); if (item->lengths[1] != 0) { cmd = synthesis_load_reverb_ring_buffer(cmd, 0x20 + sp58, 0, DEFAULT_LEN_1CH - sp58, reverbIndex); } aSetBuffer(cmd++, 0, temp_t9 + DMEM_ADDR_ADPCM_RESAMPLED, DMEM_ADDR_WET_LEFT_CH, bufLen * 2); - aResample(cmd++, reverb->resampleFlags, reverb->resampleRate, VIRTUAL_TO_PHYSICAL2(reverb->resampleStateLeft)); + aResample(cmd++, gSynthesisReverbs[reverbIndex].resampleFlags, gSynthesisReverbs[reverbIndex].resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].resampleStateLeft)); aSetBuffer(cmd++, 0, temp_t9 + DMEM_ADDR_ADPCM_RESAMPLED2, DMEM_ADDR_WET_RIGHT_CH, bufLen * 2); - aResample(cmd++, reverb->resampleFlags, reverb->resampleRate, VIRTUAL_TO_PHYSICAL2(reverb->resampleStateRight)); + aResample(cmd++, gSynthesisReverbs[reverbIndex].resampleFlags, gSynthesisReverbs[reverbIndex].resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].resampleStateRight)); aSetBuffer(cmd++, 0, 0, 0, DEFAULT_LEN_2CH); aMix(cmd++, 0, 0x7fff, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH); - aMix(cmd++, 0, 0x8000 + reverb->reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH); + aMix(cmd++, 0, 0x8000 + gSynthesisReverbs[reverbIndex].reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH); } return cmd; } -#endif -#ifndef NON_MATCHING -GLOBAL_ASM("asm/non_matchings/eu/audio/func_eu_802e00d8.s") -u64 *func_eu_802e00d8(u64 *cmd, s16 reverbIndex, s16 updateIndex); -#else -u64 *func_eu_802e00d8(u64 *cmd, s16 reverbIndex, s16 updateIndex) { - struct SynthesisReverb *reverb; +u64 *synthesis_save_reverb_samples(u64 *cmdBuf, s16 reverbIndex, s16 updateIndex) { struct ReverbRingBufferItem *item; + struct SynthesisReverb *reverb; + u64 *cmd = cmdBuf; reverb = &gSynthesisReverbs[reverbIndex]; item = &reverb->items[reverb->curFrame][updateIndex]; if (reverb->useReverb != 0) { + if (1) { + } if (reverb->downsampleRate == 1) { - cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH, item->startPos, item->lengths[0], reverbIndex); + // Put the oldest samples in the ring buffer into the wet channels + cmd = cmdBuf = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH, item->startPos, item->lengths[0], reverbIndex); if (item->lengths[1] != 0) { + // Ring buffer wrapped cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH + item->lengths[0], 0, item->lengths[1], reverbIndex); + cmdBuf = cmd; } } else { - aSetBuffer(cmd++, 0, 0, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH); - aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(reverb->items[reverb->curFrame][updateIndex].toDownsampleLeft)); + // Downsampling is done later by CPU when RSP is done, therefore we need to have double + // buffering. Left and right buffers are adjacent in memory. + aSetBuffer(cmdBuf++, 0, 0, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH); + aSaveBuffer(cmdBuf++, VIRTUAL_TO_PHYSICAL2(reverb->items[reverb->curFrame][updateIndex].toDownsampleLeft)); reverb->resampleFlags = 0; } } - return cmd; + return cmdBuf; } #endif -#endif #ifdef VERSION_EU -#ifndef NON_MATCHING -GLOBAL_ASM("asm/non_matchings/eu/audio/synthesis_do_one_audio_update.s") -#else u64 *synthesis_do_one_audio_update(u16 *aiBuf, s32 bufLen, u64 *cmd, u32 updateIndex) { - u8 sp84[60]; - struct SynthesisReverb *sp60; - s32 temp_lo; - s32 temp_lo_2; - u8 temp_v1; - u8 temp_v1_2; - struct NoteSubEu *temp_t5; - struct NoteSubEu *temp_v0; - s32 phi_s1; - s16 phi_s2; - s16 phi_s3; - s32 phi_s1_2; - s32 phi_v1_2; - s32 phi_s1_3; - s16 phi_s3_2; - s32 phi_s1_4; - u8 *phi_s0_2; - s32 bufLen2; + struct NoteSubEu *noteSubEu; + u8 noteIndices[56]; + s32 temp; + s32 i; + s16 j; + s16 notePos = 0; if (gNumSynthesisReverbs == 0) { - phi_s2 = 0; - for (phi_s1 = 0; phi_s1 < gMaxSimultaneousNotes; phi_s1++) { - if (gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + phi_s1].enabled) { - sp84[phi_s2++] = phi_s1; + for (i = 0; i < gMaxSimultaneousNotes; i++) { + temp = updateIndex; + if (gNoteSubsEu[gMaxSimultaneousNotes * temp + i].enabled) { + noteIndices[notePos++] = i; } } } else { - phi_s2 = 0; - for (phi_s3 = 0; phi_s3 < gNumSynthesisReverbs; phi_s3++) { - for (phi_s1_2 = 0; phi_s1_2 < gMaxSimultaneousNotes; phi_s1_2++) { - temp_v0 = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + phi_s1_2]; - if (temp_v0->enabled) { - if (phi_s3 == temp_v0->unk1b567) { - sp84[phi_s2++] = phi_s1_2; - } + for (j = 0; j < gNumSynthesisReverbs; j++) { + for (i = 0; i < gMaxSimultaneousNotes; i++) { + temp = updateIndex; + noteSubEu = &gNoteSubsEu[gMaxSimultaneousNotes * temp + i]; + if (noteSubEu->enabled && j == noteSubEu->reverbIndex) { + noteIndices[notePos++] = i; } } } - phi_v1_2 = gMaxSimultaneousNotes * updateIndex; - for (phi_s1_3 = 0; phi_s1_3 < gMaxSimultaneousNotes; phi_s1_3++) { - if (gNoteSubsEu[phi_v1_2].enabled) { - if (temp_v0->unk1b567 >= gNumSynthesisReverbs) { - sp84[phi_s2++] = phi_s1_3; - } + + for (i = 0; i < gMaxSimultaneousNotes; i++) { + temp = updateIndex; + noteSubEu = &gNoteSubsEu[gMaxSimultaneousNotes * temp + i]; + if (noteSubEu->enabled && noteSubEu->reverbIndex >= gNumSynthesisReverbs) { + noteIndices[notePos++] = i; } - phi_v1_2++; } } aClearBuffer(cmd++, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH); - phi_s1_4 = 0; - for (phi_s3_2 = 0; phi_s3_2 < gNumSynthesisReverbs; phi_s3_2++) { - sp60 = &gSynthesisReverbs[phi_s3_2]; - gUseReverb = sp60->useReverb; + i = 0; + for (j = 0; j < gNumSynthesisReverbs; j++) { + gUseReverb = gSynthesisReverbs[j].useReverb; if (gUseReverb != 0) { - cmd = synthesis_resample_and_mix_reverb(cmd, bufLen, phi_s3_2, (s16) updateIndex); + cmd = synthesis_resample_and_mix_reverb(cmd, bufLen, j, updateIndex); } - for (; phi_s1_4 < phi_s2; phi_s1_4++) { - temp_v1 = sp84[phi_s1_4]; - temp_lo = updateIndex * gMaxSimultaneousNotes; - if (phi_s3_2 == gNoteSubsEu[temp_v1 + temp_lo].unk1b567) { - cmd = synthesis_process_note(&gNotes[temp_v1], &gNoteSubsEu[temp_v1 + temp_lo], &gNotes[temp_v1].synthesisState, aiBuf, bufLen, cmd); + for (; i < notePos; i++) { + temp = updateIndex; + temp *= gMaxSimultaneousNotes; + if (j == gNoteSubsEu[temp + noteIndices[i]].reverbIndex) { + cmd = synthesis_process_note(&gNotes[noteIndices[i]], + &gNoteSubsEu[temp + noteIndices[i]], + &gNotes[noteIndices[i]].synthesisState, + aiBuf, bufLen, cmd); + continue; } else { break; } } - if (sp60->useReverb != 0) { - cmd = func_eu_802e00d8(cmd, phi_s3_2, (s16) updateIndex); + if (gSynthesisReverbs[j].useReverb != 0) { + cmd = synthesis_save_reverb_samples(cmd, j, updateIndex); } } - phi_s0_2 = &sp84[phi_s1_4]; - for (; phi_s1_4 < phi_s2; phi_s1_4++) { - temp_v1_2 = *phi_s0_2; - temp_lo_2 = updateIndex * gMaxSimultaneousNotes; - temp_t5 = &gNoteSubsEu[temp_v1_2 + temp_lo_2]; - if (IS_BANK_LOAD_COMPLETE(temp_t5->bankId) == TRUE) { - cmd = synthesis_process_note(&gNotes[temp_v1_2], &gNoteSubsEu[temp_v1_2 + temp_lo_2], &gNotes[temp_v1_2].synthesisState, aiBuf, bufLen, cmd); + for (; i < notePos; i++) { + temp = updateIndex; + temp *= gMaxSimultaneousNotes; + if (IS_BANK_LOAD_COMPLETE(gNoteSubsEu[temp + noteIndices[i]].bankId) == TRUE) { + cmd = synthesis_process_note(&gNotes[noteIndices[i]], + &gNoteSubsEu[temp + noteIndices[i]], + &gNotes[noteIndices[i]].synthesisState, + aiBuf, bufLen, cmd); } else { - gAudioErrorFlags = (temp_t5->bankId + (phi_s1_4 << 8)) + 0x10000000; + gAudioErrorFlags = (gNoteSubsEu[temp + noteIndices[i]].bankId + (i << 8)) + 0x10000000; } - phi_s0_2++; } - bufLen2 = bufLen * 2; - aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, bufLen2); + + temp = bufLen * 2; + aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, temp); aInterleave(cmd++, DMEM_ADDR_LEFT_CH, DMEM_ADDR_RIGHT_CH); - aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, bufLen2 * 2); + aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, temp * 2); aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(aiBuf)); return cmd; } -#endif #else u64 *synthesis_do_one_audio_update(u16 *aiBuf, s32 bufLen, u64 *cmd, u32 updateIndex) { UNUSED s32 pad1[1]; @@ -738,8 +696,8 @@ u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) { if (noteSubEu->isSyntheticWave) { noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_UNCOMPRESSED_NOTE + synthesisState->samplePosInt * 2; - synthesisState->samplePosInt += (samplesLenFixedPoint >> 10); - cmd = load_wave_samples(cmd, noteSubEu, synthesisState, samplesLenFixedPoint >> 10); + synthesisState->samplePosInt += (samplesLenFixedPoint >> 0x10); + cmd = load_wave_samples(cmd, noteSubEu, synthesisState, samplesLenFixedPoint >> 0x10); } #else if (note->sound == NULL) { @@ -798,11 +756,15 @@ u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) { u32 nEntries; // v1 curLoadedBook = audioBookSample->book->book; nEntries = audioBookSample->book->order * audioBookSample->book->npredictors; +#ifdef VERSION_EU + aLoadADPCM(cmd++, nEntries * 16, VIRTUAL_TO_PHYSICAL2(curLoadedBook + noteSubEu->bookOffset)); +#else aLoadADPCM(cmd++, nEntries * 16, VIRTUAL_TO_PHYSICAL2(curLoadedBook)); +#endif } #ifdef VERSION_EU - if (noteSubEu->unk1b234) { + if (noteSubEu->bookOffset) { curLoadedBook = (s16 *) &euUnknownData_80301950; // what's this? never read } #endif @@ -952,8 +914,8 @@ u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) { (samplesLenAdjusted - nAdpcmSamplesProcessed) * 2); #ifdef VERSION_EU noteSubEu->finished = 1; - noteSubEu->finished = 1; - noteSubEu->enabled = 0; + note->noteSubEu.finished = 1; + note->noteSubEu.enabled = 0; #else note->samplePosInt = 0; note->finished = 1; @@ -1049,6 +1011,9 @@ u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) { flags = A_INIT; noteSubEu->needsInit = FALSE; } + + cmd = final_resample(cmd, synthesisState, bufLen * 2, resamplingRateFixedPoint, + noteSamplesDmemAddrBeforeResampling, flags); #else if (note->needsInit == TRUE) { flags = A_INIT; @@ -1075,8 +1040,6 @@ u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) { } #ifdef VERSION_EU - cmd = final_resample(cmd, synthesisState, bufLen * 2, resamplingRateFixedPoint, - noteSamplesDmemAddrBeforeResampling, flags); cmd = process_envelope(cmd, noteSubEu, synthesisState, bufLen, 0, s0); #else cmd = process_envelope(cmd, note, bufLen, 0, s0, flags); @@ -1105,7 +1068,7 @@ u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) { return cmd; } -#elif defined(VERSION_JP) +#elif defined(VERSION_JP) || defined(VERSION_SH) // todo: extract this nonmatching if applicable. GLOBAL_ASM("asm/non_matchings/synthesis_process_notes_jp.s") #elif defined(VERSION_US) GLOBAL_ASM("asm/non_matchings/synthesis_process_notes_us.s") @@ -1335,41 +1298,44 @@ u64 *process_envelope(u64 *cmd, struct NoteSubEu *note, struct NoteSynthesisStat return cmd; } -#if defined(VERSION_EU) && !defined(NON_MATCHING) -GLOBAL_ASM("asm/non_matchings/eu/audio/note_apply_headset_pan_effects.s") -#else #ifdef VERSION_EU u64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight) { #else u64 *note_apply_headset_pan_effects(u64 *cmd, struct Note *note, s32 bufLen, s32 flags, s32 leftRight) { #endif u16 dest; - u16 prevPanShift; - u16 panShift; u16 pitch; // t2 #ifndef VERSION_EU + u16 prevPanShift; + u16 panShift; UNUSED s32 padding[11]; +#else + u8 prevPanShift; + u8 panShift; + UNUSED u8 unkDebug; #endif switch (leftRight) { case 1: dest = DMEM_ADDR_LEFT_CH; - note->prevHeadsetPanLeft = 0; #ifndef VERSION_EU + note->prevHeadsetPanLeft = 0; panShift = note->headsetPanRight; #else panShift = noteSubEu->headsetPanRight; + note->prevHeadsetPanLeft = 0; #endif prevPanShift = note->prevHeadsetPanRight; note->prevHeadsetPanRight = panShift; break; case 2: dest = DMEM_ADDR_RIGHT_CH; - note->prevHeadsetPanRight = 0; #ifndef VERSION_EU + note->prevHeadsetPanRight = 0; panShift = note->headsetPanLeft; #else panShift = noteSubEu->headsetPanLeft; + note->prevHeadsetPanRight = 0; #endif prevPanShift = note->prevHeadsetPanLeft; @@ -1392,13 +1358,23 @@ u64 *note_apply_headset_pan_effects(u64 *cmd, struct Note *note, s32 bufLen, s32 aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, 32); aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState)); +#ifdef VERSION_EU + pitch = (bufLen << 0xf) / (bufLen + panShift - prevPanShift + 8); + if (pitch) { + } +#else pitch = (bufLen << 0xf) / (panShift + bufLen - prevPanShift + 8); +#endif aSetBuffer(cmd++, 0, DMEM_ADDR_NOTE_PAN_TEMP + 8, DMEM_ADDR_TEMP, panShift + bufLen - prevPanShift); aResample(cmd++, 0, pitch, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState)); } else { pitch = (panShift == 0) ? (bufLen << 0xf) / (bufLen - prevPanShift - 4) : (bufLen << 0xf) / (bufLen + panShift - prevPanShift); +#if defined(VERSION_EU) && !defined(AVOID_UB) + if (unkDebug) { // UB + } +#endif aSetBuffer(cmd++, 0, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP, panShift + bufLen - prevPanShift); aResample(cmd++, 0, pitch, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState)); @@ -1430,7 +1406,6 @@ u64 *note_apply_headset_pan_effects(u64 *cmd, struct Note *note, s32 bufLen, s32 return cmd; } -#endif #if !defined(VERSION_EU) // Moved to playback.c in EU diff --git a/src/engine/behavior_script.c b/src/engine/behavior_script.c index d8b5ac28..3e963221 100644 --- a/src/engine/behavior_script.c +++ b/src/engine/behavior_script.c @@ -92,7 +92,7 @@ static void Unknown80383E44(void) // ? } static s32 beh_cmd_hide(void) { - obj_hide(); + cur_obj_hide(); gBehCommand++; return BEH_CONTINUE; } @@ -122,7 +122,7 @@ static s32 beh_cmd_spawn_child(void) { struct Object *child = spawn_object_at_origin(gCurrentObject, 0, model, behavior); - copy_object_pos_and_angle(child, gCurrentObject); + obj_copy_pos_and_angle(child, gCurrentObject); gBehCommand += 3; return BEH_CONTINUE; @@ -134,7 +134,7 @@ static s32 beh_cmd_spawn_obj(void) { struct Object *object = spawn_object_at_origin(gCurrentObject, 0, model, behavior); - copy_object_pos_and_angle(object, gCurrentObject); + obj_copy_pos_and_angle(object, gCurrentObject); gCurrentObject->prevObj = object; @@ -149,7 +149,7 @@ static s32 beh_cmd_spawn_child_with_param(void) { struct Object *child = spawn_object_at_origin(gCurrentObject, 0, model, behavior); - copy_object_pos_and_angle(child, gCurrentObject); + obj_copy_pos_and_angle(child, gCurrentObject); child->oBehParams2ndByte = behParam; @@ -562,13 +562,13 @@ static s32 Behavior24(void) { } static s32 beh_cmd_begin(void) { - if (obj_has_behavior(bhvHauntedChair)) { + if (cur_obj_has_behavior(bhvHauntedChair)) { bhv_init_room(); } - if (obj_has_behavior(bhvMadPiano)) { + if (cur_obj_has_behavior(bhvMadPiano)) { bhv_init_room(); } - if (obj_has_behavior(bhvMessagePanel)) { + if (cur_obj_has_behavior(bhvMessagePanel)) { gCurrentObject->oCollisionDistance = 150.0f; } gBehCommand++; @@ -622,7 +622,7 @@ static s32 beh_cmd_scale(void) { UNUSED u8 sp1f = (u8)((gBehCommand[0] >> 16) & 0xFF); s16 sp1c = gBehCommand[0] & 0xFFFF; - obj_scale((f32) sp1c / 100.0f); + cur_obj_scale((f32) sp1c / 100.0f); gBehCommand++; return BEH_CONTINUE; @@ -658,9 +658,10 @@ static s32 beh_cmd_bit_clear_int32(void) { return BEH_CONTINUE; } -static s32 beh_cmd_spawn_water_splash(void) { - struct WaterSplashParams *arg0 = (struct WaterSplashParams *) gBehCommand[1]; - spawn_water_splash(gCurrentObject, arg0); +static s32 beh_cmd_spawn_water_droplet(void) { + struct WaterDropletParams *dropletParams = (struct WaterDropletParams *) gBehCommand[1]; + spawn_water_droplet(gCurrentObject, dropletParams); + gBehCommand += 2; return BEH_CONTINUE; } @@ -738,7 +739,7 @@ static BehCommandProc BehaviorJumpTable[] = { beh_cmd_tex_anim_rate, beh_cmd_disable_rendering, Behavior36, - beh_cmd_spawn_water_splash, + beh_cmd_spawn_water_droplet, }; void cur_object_exec_behavior(void) { @@ -757,7 +758,7 @@ void cur_object_exec_behavior(void) { } if (flagsLo & OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO) { - gCurrentObject->oAngleToMario = angle_to_object(gCurrentObject, gMarioObject); + gCurrentObject->oAngleToMario = obj_angle_to_object(gCurrentObject, gMarioObject); } if (gCurrentObject->oAction != gCurrentObject->oPrevAction) { @@ -786,7 +787,7 @@ void cur_object_exec_behavior(void) { flagsLo = (s16) gCurrentObject->oFlags; if (flagsLo & OBJ_FLAG_0010) { - obj_set_facing_to_move_angles(gCurrentObject); + obj_set_face_angle_to_move_angle(gCurrentObject); } if (flagsLo & OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW) { @@ -794,19 +795,19 @@ void cur_object_exec_behavior(void) { } if (flagsLo & OBJ_FLAG_MOVE_XZ_USING_FVEL) { - obj_move_xz_using_fvel_and_yaw(); + cur_obj_move_xz_using_fvel_and_yaw(); } if (flagsLo & OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL) { - obj_move_y_with_terminal_vel(); + cur_obj_move_y_with_terminal_vel(); } if (flagsLo & OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT) { - build_object_transform_relative_to_parent(gCurrentObject); + obj_build_transform_relative_to_parent(gCurrentObject); } if (flagsLo & OBJ_FLAG_0800) { - func_802A2270(gCurrentObject); + obj_set_throw_matrix_from_transform(gCurrentObject); } if (flagsLo & OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE) { @@ -814,7 +815,7 @@ void cur_object_exec_behavior(void) { } if (gCurrentObject->oRoom != -1) { - obj_enable_rendering_if_mario_in_room(); + cur_obj_enable_rendering_if_mario_in_room(); } else if ((flagsLo & OBJ_FLAG_COMPUTE_DIST_TO_MARIO) && gCurrentObject->collisionData == NULL) { if (!(flagsLo & OBJ_FLAG_ACTIVE_FROM_AFAR)) { if (distanceFromMario > gCurrentObject->oDrawingDistance) { diff --git a/src/engine/level_script.c b/src/engine/level_script.c index 328b672a..7a28953b 100644 --- a/src/engine/level_script.c +++ b/src/engine/level_script.c @@ -295,7 +295,7 @@ static void level_cmd_load_mario_head(void) { } static void level_cmd_load_mio0_texture(void) { - func_80278304(CMD_GET(s16, 2), CMD_GET(void *, 4), CMD_GET(void *, 8)); + load_segment_decompress_heap(CMD_GET(s16, 2), CMD_GET(void *, 4), CMD_GET(void *, 8)); sCurrentCmd = CMD_NEXT; } @@ -310,7 +310,7 @@ static void level_cmd_init_level(void) { static void level_cmd_clear_level(void) { clear_objects(); - func_8027A7C4(); + clear_area_graph_nodes(); clear_areas(); main_pool_pop_state(); @@ -630,8 +630,8 @@ static void level_cmd_load_area(void) { sCurrentCmd = CMD_NEXT; } -static void level_cmd_2A(void) { - func_8027A998(); +static void level_cmd_unload_area(void) { + unload_area(); sCurrentCmd = CMD_NEXT; } @@ -649,7 +649,7 @@ static void level_cmd_set_mario_start_pos(void) { } static void level_cmd_2C(void) { - func_8027AA88(); + unload_mario_area(); sCurrentCmd = CMD_NEXT; } @@ -692,7 +692,7 @@ static void level_cmd_set_menu_music(void) { } static void level_cmd_38(void) { - func_802491FC(CMD_GET(s16, 2)); + fadeout_music(CMD_GET(s16, 2)); sCurrentCmd = CMD_NEXT; } @@ -781,7 +781,7 @@ static void (*LevelScriptJumpTable[])(void) = { /*27*/ level_cmd_create_painting_warp_node, /*28*/ level_cmd_create_instant_warp, /*29*/ level_cmd_load_area, - /*2A*/ level_cmd_2A, + /*2A*/ level_cmd_unload_area, /*2B*/ level_cmd_set_mario_start_pos, /*2C*/ level_cmd_2C, /*2D*/ level_cmd_2D, diff --git a/src/engine/surface_load.c b/src/engine/surface_load.c index 32a6a24e..704e752b 100644 --- a/src/engine/surface_load.c +++ b/src/engine/surface_load.c @@ -623,10 +623,10 @@ void transform_object_vertices(s16 **data, s16 *vertexData) { if (gCurrentObject->header.gfx.throwMatrix == NULL) { gCurrentObject->header.gfx.throwMatrix = objectTransform; - build_object_transform_from_pos_and_angle(gCurrentObject, O_POS_INDEX, O_FACE_ANGLE_INDEX); + obj_build_transform_from_pos_and_angle(gCurrentObject, O_POS_INDEX, O_FACE_ANGLE_INDEX); } - apply_object_scale_to_matrix(gCurrentObject, m, *objectTransform); + obj_apply_scale_to_matrix(gCurrentObject, m, *objectTransform); // Go through all vertices, rotating and translating them to transform the object. while (numVertices--) { diff --git a/src/game/area.c b/src/game/area.c index 126bca42..8253a330 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -76,7 +76,7 @@ const char *gNoControllerMsg[] = { }; #endif -void func_8027A220(Vp *a, Vp *b, u8 c, u8 d, u8 e) { +void override_viewport_and_clip(Vp *a, Vp *b, u8 c, u8 d, u8 e) { u16 sp6 = ((c >> 3) << 11) | ((d >> 3) << 6) | ((e >> 3) << 1) | 1; gFBSetColor = (sp6 << 16) | sp6; @@ -138,13 +138,13 @@ struct ObjectWarpNode *area_get_warp_node(u8 id) { return node; } -struct ObjectWarpNode *func_8027A478(struct Object *o) { +struct ObjectWarpNode *area_get_warp_node_from_params(struct Object *o) { u8 sp1F = (o->oBehParams & 0x00FF0000) >> 16; return area_get_warp_node(sp1F); } -void func_8027A4C4(void) { +void load_obj_warp_nodes(void) { struct ObjectWarpNode *sp24; struct Object *sp20 = (struct Object *) gObjParentGraphNode.children; @@ -152,7 +152,7 @@ void func_8027A4C4(void) { struct Object *sp1C = sp20; if (sp1C->activeFlags && get_mario_spawn_type(sp1C) != 0) { - sp24 = func_8027A478(sp1C); + sp24 = area_get_warp_node_from_params(sp1C); if (sp24 != NULL) { sp24->object = sp1C; } @@ -192,7 +192,7 @@ void clear_areas(void) { } } -void func_8027A7C4(void) { +void clear_area_graph_nodes(void) { s32 i; if (gCurrentArea != NULL) { @@ -223,12 +223,12 @@ void load_area(s32 index) { spawn_objects_from_info(0, gCurrentArea->objectSpawnInfos); } - func_8027A4C4(); + load_obj_warp_nodes(); geo_call_global_function_nodes(gCurrentArea->unk04, GEO_CONTEXT_AREA_LOAD); } } -void func_8027A998(void) { +void unload_area(void) { if (gCurrentArea != NULL) { unload_objects_from_area(0, gCurrentArea->index); geo_call_global_function_nodes(gCurrentArea->unk04, GEO_CONTEXT_AREA_UNLOAD); @@ -249,13 +249,13 @@ void load_mario_area(void) { } } -void func_8027AA88(void) { +void unload_mario_area(void) { if (gCurrentArea != NULL && (gCurrentArea->flags & 0x01)) { unload_objects_from_area(0, gMarioSpawnInfo->activeAreaIndex); gCurrentArea->flags &= ~0x01; if (gCurrentArea->flags == 0) { - func_8027A998(); + unload_area(); } } } @@ -264,7 +264,7 @@ void change_area(s32 index) { s32 areaFlags = gCurrentArea->flags; if (gCurrAreaIndex != index) { - func_8027A998(); + unload_area(); load_area(index); gCurrentArea->flags = areaFlags; diff --git a/src/game/area.h b/src/game/area.h index 67c02d9c..2452d86f 100644 --- a/src/game/area.h +++ b/src/game/area.h @@ -134,16 +134,16 @@ extern s16 gCurrSaveFileNum; extern s16 gCurrLevelNum; -void func_8027A220(Vp *a, Vp *b, u8 c, u8 d, u8 e); +void override_viewport_and_clip(Vp *a, Vp *b, u8 c, u8 d, u8 e); void print_intro_text(void); u32 get_mario_spawn_type(struct Object *o); struct ObjectWarpNode *area_get_warp_node(u8 id); void clear_areas(void); -void func_8027A7C4(void); +void clear_area_graph_nodes(void); void load_area(s32 index); -void func_8027A998(void); +void unload_area(void); void load_mario_area(void); -void func_8027AA88(void); +void unload_mario_area(void); void change_area(s32 index); void area_update_objects(void); void play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue); diff --git a/src/game/behavior_actions.c b/src/game/behavior_actions.c index 028530e3..73c96f4e 100644 --- a/src/game/behavior_actions.c +++ b/src/game/behavior_actions.c @@ -74,13 +74,6 @@ struct Struct802C0DF0 { const BehaviorScript *behavior; }; -struct Struct8032FE4C { - s32 unk0; - s32 unk1; - f32 unk2; - f32 unk3; -}; - struct Struct8032F754 { s32 unk0; Vec3f unk1; @@ -93,7 +86,7 @@ struct Struct8032FCE8 { void *unk2; }; -extern void BehClimbDetectLoop(); +extern void bhv_pole_base_loop(); extern s16 gDebugInfo[][8]; extern s8 gDoorAdjacentRooms[][2]; extern u8 inside_castle_seg7_collision_ddd_warp_2[]; @@ -107,7 +100,7 @@ extern struct Animation *blue_fish_seg3_anims_0301C2B0[]; extern struct Animation *cyan_fish_seg6_anims_0600E264[]; extern struct Animation *blue_fish_seg3_anims_0301C2B0[]; -void func_802A8D18(f32, f32, s32); +void common_anchor_mario_behavior(f32, f32, s32); s32 mario_moving_fast_enough_to_make_piranha_plant_bite(void); void obj_set_secondary_camera_focus(void); @@ -141,7 +134,7 @@ s16 D_8032F0CC[] = { 6047, 5664, 5292, 4934, 4587, 4254, 3933, 3624, 3329, 3046, struct SpawnParticlesInfo D_8032F270 = { 2, 20, MODEL_MIST, 0, 40, 5, 30, 20, 252, 30, 330.0f, 10.0f }; // generate_wind_puffs/dust (something like that) -void func_802AA618(s32 sp18, s32 sp1C, f32 sp20) { +void spawn_mist_particles_variable(s32 sp18, s32 sp1C, f32 sp20) { D_8032F270.sizeBase = sp20; D_8032F270.sizeRange = sp20 / 20.0; D_8032F270.offsetY = sp1C; @@ -152,7 +145,7 @@ void func_802AA618(s32 sp18, s32 sp1C, f32 sp20) { } else { D_8032F270.count = 4; } - obj_spawn_particles(&D_8032F270); + cur_obj_spawn_particles(&D_8032F270); } #include "behaviors/sparkle_spawn_star.inc.c" @@ -187,16 +180,16 @@ void func_802AA618(s32 sp18, s32 sp1C, f32 sp20) { #include "behaviors/breakable_box.inc.c" // not sure what this is doing here. not in a behavior file. -Gfx *Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) { +Gfx *geo_move_mario_part_from_parent(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) { Mat4 sp20; struct Object *sp1C; if (run == TRUE) { sp1C = (struct Object *) gCurGraphNodeObject; if (sp1C == gMarioObject && sp1C->prevObj != NULL) { - func_8029D704(sp20, mtx, gCurGraphNodeCamera->matrixPtr); - func_8029D558(sp20, sp1C->prevObj); - func_8029EA0C(sp1C->prevObj); + create_transformation_from_matrices(sp20, mtx, gCurGraphNodeCamera->matrixPtr); + obj_update_pos_from_parent_transformation(sp20, sp1C->prevObj); + obj_set_gfx_pos_from_pos(sp1C->prevObj); } } return NULL; @@ -211,7 +204,7 @@ Gfx *Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) { // not in behavior file // n is the number of objects to spawn, r if the rate of change of phase (frequency?) -void func_802B2328(s32 n, s32 a1, s32 a2, s32 r) { +void spawn_sparkle_particles(s32 n, s32 a1, s32 a2, s32 r) { s32 i; s16 separation = 0x10000 / n; // Evenly spread around a circle for (i = 0; i < n; i++) { @@ -232,6 +225,15 @@ void func_802B2328(s32 n, s32 a1, s32 a2, s32 r) { #include "behaviors/bullet_bill.inc.c" #include "behaviors/bowser.inc.c" #include "behaviors/blue_fish.inc.c" + +// Not in behavior file, duplicate of vec3f_copy except without bad return. +// Used in a few behavior files. +void vec3f_copy_2(Vec3f dest, Vec3f src) { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; +} + #include "behaviors/checkerboard_platform.inc.c" #include "behaviors/ddd_warp.inc.c" #include "behaviors/water_pillar.inc.c" @@ -252,6 +254,18 @@ void func_802B2328(s32 n, s32 a1, s32 a2, s32 r) { #include "behaviors/tox_box.inc.c" #include "behaviors/piranha_plant.inc.c" #include "behaviors/bowser_puzzle_piece.inc.c" + +s32 set_obj_anim_with_accel_and_sound(s16 a0, s16 a1, s32 a2) { + f32 sp1C; + if ((sp1C = o->header.gfx.unk38.animAccel / (f32) 0x10000) == 0) + sp1C = 1.0f; + if (cur_obj_check_anim_frame_in_range(a0, sp1C) || cur_obj_check_anim_frame_in_range(a1, sp1C)) { + cur_obj_play_sound_2(a2); + return 1; + } + return 0; +} + #include "behaviors/tuxie.inc.c" #include "behaviors/fish.inc.c" #include "behaviors/express_elevator.inc.c" @@ -280,7 +294,7 @@ void func_802B2328(s32 n, s32 a1, s32 a2, s32 r) { #include "behaviors/sparkle_spawn.inc.c" #include "behaviors/scuttlebug.inc.c" // :scuttleeyes: #include "behaviors/whomp.inc.c" -#include "behaviors/water_splash.inc.c" -#include "behaviors/wind_particle.inc.c" -#include "behaviors/snowman_wind.inc.c" -#include "behaviors/walking_penguin.inc.c" +#include "behaviors/water_splashes_and_waves.inc.c" +#include "behaviors/strong_wind_particle.inc.c" +#include "behaviors/sl_snowman_wind.inc.c" +#include "behaviors/sl_walking_penguin.inc.c" diff --git a/src/game/behavior_actions.h b/src/game/behavior_actions.h index 5e6989c2..7607d787 100644 --- a/src/game/behavior_actions.h +++ b/src/game/behavior_actions.h @@ -1,20 +1,21 @@ #ifndef _BEHAVIOR_ACTIONS_H #define _BEHAVIOR_ACTIONS_H -extern void func_802AA618(s32,s32,f32); +extern void spawn_mist_particles_variable(s32,s32,f32); extern void bhv_spawn_star_no_level_exit(u32); extern void bhv_star_door_loop_2(); extern void spawn_triangle_break_particles(s16,s16,f32,s16); -extern void func_802ADA94(void); -extern void func_802ADBBC(u32); -extern void func_802ADC20(s16,s16); -extern s32 func_802B0C54(f32,f32); -extern s32 func_802B2894(f32*,f32*,f32,f32); -void func_802B8F7C(Vec3f dest,Vec3f src); -extern void func_802BCFC4(f32,f32,s16,s16); + +extern void spawn_mist_from_global(void); +extern void clear_particle_flags(u32); +extern void spawn_wind_particles(s16,s16); +extern s32 check_if_moving_over_floor(f32,f32); +extern s32 arc_to_goal_pos(f32*,f32*,f32,f32); +void vec3f_copy_2(Vec3f dest,Vec3f src); +extern void tox_box_move(f32,f32,s16,s16); extern void play_penguin_walking_sound(s32); -extern s32 func_802C5A64(s32*); -extern void func_802C76E0(s32, f32, f32, f32, f32); +extern s32 update_angle_from_move_flags(s32*); +extern void cur_obj_spawn_strong_wind_particles(s32, f32, f32, f32, f32); void bhv_cap_switch_loop(void); void bhv_tiny_star_particles_init(void); @@ -29,7 +30,7 @@ void bhv_mr_i_particle_loop(void); void bhv_piranha_particle_loop(void); void bhv_giant_pole_loop(void); void bhv_pole_init(void); -void BehClimbDetectLoop(void); +void bhv_pole_base_loop(void); void bhv_thi_huge_island_top_loop(void); void bhv_thi_tiny_island_top_loop(void); void bhv_king_bobomb_loop(void); @@ -58,7 +59,7 @@ void bhv_kickable_board_loop(void); void bhv_tower_door_loop(void); void bhv_wf_rotating_wooden_platform_loop(void); void bhv_koopa_shell_underwater_loop(void); -void BehFadingWarpLoop(void); +void bhv_fading_warp_loop(void); void bhv_warp_loop(void); void bhv_white_puff_exploding_loop(void); void bhv_spawned_star_init(void); @@ -85,7 +86,7 @@ void bhv_water_mist_loop(void); void bhv_water_mist_spawn_loop(void); void bhv_water_mist_2_loop(void); void bhv_pound_white_puffs_init(void); -void bhv_unused_0e40_init(void); +void bhv_ground_sand_init(void); void bhv_ground_snow_init(void); void bhv_wind_loop(void); void bhv_unused_particle_spawn_loop(void); @@ -161,7 +162,7 @@ void bhv_flame_moving_forward_growing_loop(void); void bhv_flame_bowser_init(void); void bhv_flame_bowser_loop(void); void bhv_flame_large_burning_out_init(void); -void bhv_blue_fish_loop(void); +void bhv_blue_fish_movement_loop(void); void bhv_tank_fish_group_loop(void); void bhv_checkerboard_elevator_group_init(void); void bhv_checkerboard_platform_init(void); @@ -194,13 +195,13 @@ void bhv_lll_bowser_puzzle_piece_loop(void); void bhv_lll_bowser_puzzle_loop(void); void bhv_tuxies_mother_loop(void); void bhv_small_penguin_loop(void); +void bhv_large_fish_group_loop(void); void bhv_fish_loop(void); -void bhv_fish_group_2_loop(void); void bhv_wdw_express_elevator_loop(void); -void bhv_bird_chirp_chirp_loop(void); -void bhv_cheep_cheep_loop(void); +void bhv_bub_spawner_loop(void); +void bhv_bub_loop(void); void bhv_exclamation_box_loop(void); -void bhv_rotatin_exclamation_box_loop(void); +void bhv_rotating_exclamation_box_loop(void); void bhv_sound_spawner_init(void); void bhv_bowsers_sub_loop(void); void bhv_sushi_shark_loop(void); @@ -241,16 +242,16 @@ void bhv_sparkle_spawn_loop(void); void bhv_scuttlebug_loop(void); void bhv_scuttlebug_spawn_loop(void); void bhv_whomp_loop(void); -void bhv_water_splash_loop(void); -void bhv_water_drops_loop(void); -void bhv_water_surface_white_wave_init(void); -void bhv_object_bubble_ripples_init(void); -void bhv_surface_waves_loop(void); -void bhv_surface_wave_shrinking_init(void); -void bhv_wave_trail_loop(void); -void bhv_white_wind_particle_loop(void); -void bhv_snowman_wind_blowing_loop(void); -void bhv_walking_penguin_loop(void); +void bhv_water_splash_spawn_droplets(void); +void bhv_water_droplet_loop(void); +void bhv_water_droplet_splash_init(void); +void bhv_bubble_splash_init(void); +void bhv_idle_water_wave_loop(void); +void bhv_shallow_water_splash_init(void); +void bhv_wave_trail_shrink(void); +void bhv_strong_wind_particle_loop(void); +void bhv_sl_snowman_wind_loop(void); +void bhv_sl_walking_penguin_loop(void); void bhv_menu_button_init(void); void bhv_menu_button_loop(void); void bhv_menu_button_manager_init(void); @@ -544,32 +545,32 @@ void bhv_intro_peach_loop(void); void bhv_end_birds_1_loop(void); void bhv_end_birds_2_loop(void); void bhv_intro_scene_loop(void); -void BehDustSmokeLoop(void); -void BehYoshiLoop(void); -void bhvLllVolcanoFallingTrap_loop(void); +void bhv_dust_smoke_loop(void); +void bhv_yoshi_loop(void); +void bhv_volcano_trap_loop(void); -extern Gfx *Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx); +extern Gfx *geo_move_mario_part_from_parent(s32 run, UNUSED struct GraphNode *node, Mat4 mtx); // Bowser -extern Gfx *Geo18_802B7D44(s32 a0, struct GraphNode *node, UNUSED s32 a2); -extern Gfx *Geo18_802B798C(s32 run, UNUSED struct GraphNode *node, Mat4 mtx); +extern Gfx *geo_bits_bowser_coloring(s32 a0, struct GraphNode *node, UNUSED s32 a2); +extern Gfx *geo_update_body_rot_from_parent(s32 run, UNUSED struct GraphNode *node, Mat4 mtx); extern Gfx *geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx); // Tuxie extern Gfx *geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx); // Cap switch -extern Gfx *Geo18_802A719C(s32 run, UNUSED struct GraphNode *node, Mat4 mtx); +extern Gfx *geo_update_held_mario_pos(s32 run, UNUSED struct GraphNode *node, Mat4 mtx); // Snufit -extern Gfx *Geo18_8030D93C(s32 arg0, struct GraphNode *node, UNUSED void *arg2); -extern Gfx *Geo18_8030D9AC(s32 arg0, struct GraphNode *node, UNUSED void *arg2); +extern Gfx *geo_snufit_move_mask(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c); +extern Gfx *geo_snufit_scale_body(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c); // Bowser key cutscene -extern Gfx *Geo18_802BA2B0(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]); +extern Gfx *geo_scale_bowser_key(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]); // Water splash -extern struct WaterSplashParams D_8032FDD0; -extern struct WaterSplashParams D_8032FE18; +extern struct WaterDropletParams sShallowWaterSplashDropletParams; +extern struct WaterDropletParams sShallowWaterWaveDropletParams; #endif // _BEHAVIOR_ACTIONS_H diff --git a/src/game/behaviors/amp.inc.c b/src/game/behaviors/amp.inc.c index 2faa47a4..a8ea0e06 100644 --- a/src/game/behaviors/amp.inc.c +++ b/src/game/behaviors/amp.inc.c @@ -31,7 +31,7 @@ void bhv_homing_amp_init(void) { // Homing amps start at 1/10th their normal size. // They grow when they "appear" to Mario. - obj_scale(0.1f); + cur_obj_scale(0.1f); // Hide the amp (until Mario gets near). o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE; @@ -44,7 +44,7 @@ static void check_amp_attack(void) { // Strange placement for this call. The hitbox is never cleared. // For perspective, this code is run every frame of bhv_circling_amp_loop // and every frame of a homing amp's HOMING_AMP_ACT_CHASE action. - set_object_hitbox(o, &sAmpHitbox); + obj_set_hitbox(o, &sAmpHitbox); if (o->oInteractStatus & INT_STATUS_INTERACTED) { // Unnecessary if statement, maybe caused by a macro for @@ -77,11 +77,11 @@ static void homing_amp_appear_loop(void) { o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, targetYaw, 0x1000); // For 30 frames, make the amp "appear" by increasing its size by 0.03 each frame, - // except for the first frame (when oTimer == 0) because the expression in obj_scale + // except for the first frame (when oTimer == 0) because the expression in cur_obj_scale // evaluates to 0.1, which is the same as it was before. After 30 frames, it ends at // a scale factor of 0.97. The amp remains at 97% of its real height for 60 more frames. if (o->oTimer < 30) { - obj_scale(0.1 + 0.9 * (f32)(o->oTimer / 30.0f)); + cur_obj_scale(0.1 + 0.9 * (f32)(o->oTimer / 30.0f)); } else { o->oAnimState = 1; } @@ -89,7 +89,7 @@ static void homing_amp_appear_loop(void) { // Once the timer becomes greater than 90, i.e. 91 frames have passed, // reset the amp's size and start chasing Mario. if (o->oTimer >= 91) { - obj_scale(1.0f); + cur_obj_scale(1.0f); o->oAction = HOMING_AMP_ACT_CHASE; o->oAmpYPhase = 0; } @@ -181,7 +181,7 @@ static void amp_attack_cooldown_loop(void) { o->header.gfx.unk38.animFrame += 2; o->oForwardVel = 0; - obj_become_intangible(); + cur_obj_become_intangible(); if (o->oTimer >= 31) { o->oAnimState = 0; @@ -189,7 +189,7 @@ static void amp_attack_cooldown_loop(void) { if (o->oTimer >= 91) { o->oAnimState = 1; - obj_become_tangible(); + cur_obj_become_tangible(); o->oAction = HOMING_AMP_ACT_CHASE; } } @@ -213,7 +213,7 @@ void bhv_homing_amp_loop(void) { case HOMING_AMP_ACT_CHASE: homing_amp_chase_loop(); - PlaySound(SOUND_AIR_AMP_BUZZ); + cur_obj_play_sound_1(SOUND_AIR_AMP_BUZZ); break; case HOMING_AMP_ACT_GIVE_UP: @@ -292,7 +292,7 @@ static void fixed_circling_amp_idle_loop(void) { // Oscillate o->oAmpYPhase++; - // Where there is a PlaySound call in the main circling amp update function, + // Where there is a cur_obj_play_sound_1 call in the main circling amp update function, // there is nothing here. Fixed amps are the only amps that never play // the "amp buzzing" sound. } @@ -318,7 +318,7 @@ static void circling_amp_idle_loop(void) { // Oscillate o->oAmpYPhase++; - PlaySound(SOUND_AIR_AMP_BUZZ); + cur_obj_play_sound_1(SOUND_AIR_AMP_BUZZ); } /** diff --git a/src/game/behaviors/animated_floor_switch.inc.c b/src/game/behaviors/animated_floor_switch.inc.c index 82a72d6a..1f3bc978 100644 --- a/src/game/behaviors/animated_floor_switch.inc.c +++ b/src/game/behaviors/animated_floor_switch.inc.c @@ -32,7 +32,7 @@ struct Struct80331A54 D_80331A54[][5] = { s16 D_80331ACC[] = { 250, 200, 200 }; void bhv_animates_on_floor_switch_press_init(void) { - o->parentObj = obj_nearest_object_with_behavior(bhvFloorSwitchAnimatesObject); + o->parentObj = cur_obj_nearest_object_with_behavior(bhvFloorSwitchAnimatesObject); } void bhv_animates_on_floor_switch_press_loop(void) { @@ -53,9 +53,9 @@ void bhv_animates_on_floor_switch_press_loop(void) { if (o->oFloorSwitchPressAnimationUnkF4 != 0) { if (o->oFloorSwitchPressAnimationUnkF4 < 60) { - PlaySound(SOUND_GENERAL2_SWITCH_TICK_SLOW); + cur_obj_play_sound_1(SOUND_GENERAL2_SWITCH_TICK_SLOW); } else { - PlaySound(SOUND_GENERAL2_SWITCH_TICK_FAST); + cur_obj_play_sound_1(SOUND_GENERAL2_SWITCH_TICK_FAST); } if (--o->oFloorSwitchPressAnimationUnkF4 == 0) { @@ -73,5 +73,5 @@ void bhv_animates_on_floor_switch_press_loop(void) { o->collisionData = segmented_to_virtual( D_80331A54[o->oBehParams2ndByte][o->oFloorSwitchPressAnimationUnkF8 / 2].unk00); - obj_set_model(D_80331A54[o->oBehParams2ndByte][o->oFloorSwitchPressAnimationUnkF8 / 2].unk04); + cur_obj_set_model(D_80331A54[o->oBehParams2ndByte][o->oFloorSwitchPressAnimationUnkF8 / 2].unk04); } diff --git a/src/game/behaviors/bbh_haunted_bookshelf.inc.c b/src/game/behaviors/bbh_haunted_bookshelf.inc.c index a8ccdca0..8a7eff1d 100644 --- a/src/game/behaviors/bbh_haunted_bookshelf.inc.c +++ b/src/game/behaviors/bbh_haunted_bookshelf.inc.c @@ -32,11 +32,11 @@ void bhv_haunted_bookshelf_loop(void) { case HAUNTED_BOOKSHELF_ACT_RECEDE: // Move the bookshelf and play the sound o->oPosX += 5.0f; - PlaySound(SOUND_ENV_ELEVATOR4_2); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4_2); // Delete the object after 102 frames if (o->oTimer > 101) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } break; diff --git a/src/game/behaviors/bbh_merry_go_round.inc.c b/src/game/behaviors/bbh_merry_go_round.inc.c index ab10aa0e..827b2e6c 100644 --- a/src/game/behaviors/bbh_merry_go_round.inc.c +++ b/src/game/behaviors/bbh_merry_go_round.inc.c @@ -33,10 +33,10 @@ static void handle_merry_go_round_music(void) { } // All floors in the merry-go-round's enclosure have surface type 0x1A. - // The obj_is_mario_on_platform check is redundant since the merry-go-round + // The cur_obj_is_mario_on_platform check is redundant since the merry-go-round // has surface type 0x1A, so Mario cannot be on the merry-go-round // without being on a floor with surface type 0x1A (SURFACE_MGR_MUSIC). - if (obj_is_mario_on_platform() || marioFloorType == SURFACE_MGR_MUSIC) { + if (cur_obj_is_mario_on_platform() || marioFloorType == SURFACE_MGR_MUSIC) { // If Mario is in the merry-go-round's enclosure, play only the merry-go-round music. play_secondary_music(SEQ_EVENT_MERRY_GO_ROUND, 0, 78, 50); gMarioOnMerryGoRound = TRUE; @@ -57,7 +57,7 @@ static void handle_merry_go_round_music(void) { func_80321080(300); // Switch to BBH music? FIXME: Audio needs labelling o->oMerryGoRoundMusicShouldPlay = FALSE; } else { - PlaySound(SOUND_ENV_MERRY_GO_ROUND_CREAKING); + cur_obj_play_sound_1(SOUND_ENV_MERRY_GO_ROUND_CREAKING); } } } diff --git a/src/game/behaviors/beta_boo_key.inc.c b/src/game/behaviors/beta_boo_key.inc.c index f418601b..27a85dee 100644 --- a/src/game/behaviors/beta_boo_key.inc.c +++ b/src/game/behaviors/beta_boo_key.inc.c @@ -25,7 +25,7 @@ void bhv_alpha_boo_key_loop(void) { o->oFaceAngleRoll += 0x200; o->oFaceAngleYaw += 0x200; - if (are_objects_collided(o, gMarioObject)) { + if (obj_check_if_collided_with_object(o, gMarioObject)) { // This line makes the object inside the key's parent boo drop. // Was this intended to make the boo die when the key is collected? // Boos don't read from oBooDeathStatus, they only set it to let the @@ -38,7 +38,7 @@ void bhv_alpha_boo_key_loop(void) { o->parentObj->oBooDeathStatus = BOO_DEATH_STATUS_DYING; // Delete the object and spawn sparkles - mark_object_for_deletion(o); + obj_mark_for_deletion(o); spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles); } } @@ -51,8 +51,8 @@ void bhv_alpha_boo_key_loop(void) { */ static void beta_boo_key_dropped_loop(void) { // Apply standard physics to the key - obj_update_floor_and_walls(); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); // Slowly increase the Y offset to make the model aligned correctly. // This is spread out over 13 frames so that it's not noticable. @@ -82,9 +82,9 @@ static void beta_boo_key_dropped_loop(void) { // If the key hits the floor or 90 frames have elapsed since it was dropped, // become tangible and handle collision. if (o->oTimer > 90 || o->oMoveFlags & OBJ_MOVE_LANDED) { - obj_become_tangible(); + cur_obj_become_tangible(); - if (are_objects_collided(o, gMarioObject)) { + if (obj_check_if_collided_with_object(o, gMarioObject)) { // This interaction status is 0x01, the first interaction status flag. // It was only used for Hoot in the final game, but it seems it could've // done something else or held some special meaning in beta. @@ -97,7 +97,7 @@ static void beta_boo_key_dropped_loop(void) { o->parentObj->oInteractStatus = INT_STATUS_HOOT_GRABBED_BY_MARIO; // Delete the object and spawn sparkles - mark_object_for_deletion(o); + obj_mark_for_deletion(o); spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles); } } @@ -113,7 +113,7 @@ static void beta_boo_key_drop(void) { // Update the key to be inside the boo struct Object *parent = o->parentObj; - copy_object_pos(o, parent); + obj_copy_pos(o, parent); // This if statement to only run this code on the first frame // is redundant, since it instantly sets the action to BETA_BOO_KEY_ACT_DROPPED @@ -147,7 +147,7 @@ static void beta_boo_key_drop(void) { static void beta_boo_key_inside_boo_loop(void) { // Update the key to be inside the boo at all times struct Object *parent = o->parentObj; - copy_object_pos(o, parent); + obj_copy_pos(o, parent); // Use a Y offset of 40 to make the key model aligned correctly. // (Why didn't they use oGraphYOffset?) @@ -170,5 +170,5 @@ static void (*sBetaBooKeyActions[])(void) = { beta_boo_key_inside_boo_loop, beta * Update function for bhvBetaBooKey. */ void bhv_beta_boo_key_loop(void) { - obj_call_action_function(sBetaBooKeyActions); + cur_obj_call_action_function(sBetaBooKeyActions); } diff --git a/src/game/behaviors/beta_bowser_anchor.inc.c b/src/game/behaviors/beta_bowser_anchor.inc.c index 0dd12a28..e12d204c 100644 --- a/src/game/behaviors/beta_bowser_anchor.inc.c +++ b/src/game/behaviors/beta_bowser_anchor.inc.c @@ -14,10 +14,10 @@ void bhv_beta_bowser_anchor_loop(void) { // Set the object's position to be 30 units above Mario's feet, // and 300 units in front of him. - obj_set_pos_relative(gMarioObject, 0, 30.0f, 300.0f); + cur_obj_set_pos_relative(gMarioObject, 0, 30.0f, 300.0f); o->hitboxRadius = gDebugInfo[4][0] + 100; o->hitboxHeight = gDebugInfo[4][1] + 300; - attack_collided_non_mario_object(o); + obj_attack_collided_from_other_object(o); } diff --git a/src/game/behaviors/beta_chest.inc.c b/src/game/behaviors/beta_chest.inc.c index 51872fad..07c2daf8 100644 --- a/src/game/behaviors/beta_chest.inc.c +++ b/src/game/behaviors/beta_chest.inc.c @@ -12,7 +12,7 @@ */ void bhv_beta_chest_bottom_init(void) { // Set the object's model - obj_set_model(MODEL_TREASURE_CHEST_BASE); + cur_obj_set_model(MODEL_TREASURE_CHEST_BASE); // ??? Pointless code? // Maybe chests were originally intended to have random yaws. @@ -33,7 +33,7 @@ void bhv_beta_chest_bottom_init(void) { * with radius 200 units and height 200 units. */ void bhv_beta_chest_bottom_loop(void) { - obj_push_mario_away_from_cylinder(200.0f, 200.0f); + cur_obj_push_mario_away_from_cylinder(200.0f, 200.0f); } /** diff --git a/src/game/behaviors/beta_holdable_object.inc.c b/src/game/behaviors/beta_holdable_object.inc.c index c451f200..b4ec61f9 100644 --- a/src/game/behaviors/beta_holdable_object.inc.c +++ b/src/game/behaviors/beta_holdable_object.inc.c @@ -21,9 +21,9 @@ void bhv_beta_holdable_object_init(void) { */ static void beta_holdable_object_drop(void) { // Re-enable rendering - obj_enable_rendering(); + cur_obj_enable_rendering(); - obj_get_dropped(); + cur_obj_get_dropped(); o->oHeldState = HELD_FREE; @@ -35,10 +35,10 @@ static void beta_holdable_object_drop(void) { * Throw the object. */ static void beta_holdable_object_throw(void) { - // obj_enable_rendering_2 just calls obj_enable_rendering and does + // cur_obj_enable_rendering_2 just calls cur_obj_enable_rendering and does // nothing else; it's useless here. Maybe it originally did more? - obj_enable_rendering_2(); - obj_enable_rendering(); + cur_obj_enable_rendering_2(); + cur_obj_enable_rendering(); o->oHeldState = HELD_FREE; @@ -64,7 +64,7 @@ void bhv_beta_holdable_object_loop(void) { case HELD_HELD: // Disable rendering to hide the object while it's held - obj_disable_rendering(); + cur_obj_disable_rendering(); break; case HELD_THROWN: diff --git a/src/game/behaviors/beta_trampoline.inc.c b/src/game/behaviors/beta_trampoline.inc.c index efeaf12a..f9c248f5 100644 --- a/src/game/behaviors/beta_trampoline.inc.c +++ b/src/game/behaviors/beta_trampoline.inc.c @@ -20,8 +20,8 @@ void bhv_beta_trampoline_spring_loop(void) { f32 yDisplacement; // Update to be 75 units under the trampoline top - copy_object_pos_and_angle(o, o->parentObj); - copy_object_graph_y_offset(o, o->parentObj); + obj_copy_pos_and_angle(o, o->parentObj); + obj_copy_graph_y_offset(o, o->parentObj); o->oPosY -= 75.0f; // If the trampoline top is above its original position, @@ -42,7 +42,7 @@ void bhv_beta_trampoline_spring_loop(void) { } // Scale the spring - scale_object_xyz(o, 1.0f, yScale, 1.0f); + obj_scale_xyz(o, 1.0f, yScale, 1.0f); } /** @@ -53,7 +53,7 @@ void bhv_beta_trampoline_spring_loop(void) { * do anything. */ void bhv_beta_trampoline_top_loop(void) { - obj_set_model(MODEL_TRAMPOLINE); + cur_obj_set_model(MODEL_TRAMPOLINE); // When initialized, spawn the rest of the trampoline if (o->oTimer == 0) { @@ -83,5 +83,5 @@ void bhv_beta_trampoline_top_loop(void) { // that the trampoline is currently in use. This potential // trampoline infrastructure is found in mario_step.c. See // that file for more details. - nop_80254E50(); + stub_mario_step_2(); } diff --git a/src/game/behaviors/bird.inc.c b/src/game/behaviors/bird.inc.c index c6ef8e14..f59081df 100644 --- a/src/game/behaviors/bird.inc.c +++ b/src/game/behaviors/bird.inc.c @@ -21,7 +21,7 @@ static void bird_act_inactive(void) { if (o->oBehParams2ndByte != BIRD_BP_SPAWNED) { s32 i; - PlaySound2(SOUND_GENERAL_BIRDS_FLY_AWAY); + cur_obj_play_sound_2(SOUND_GENERAL_BIRDS_FLY_AWAY); for (i = 0; i < 6; i++) { spawn_object(o, MODEL_BIRDS, bhvBird); @@ -42,7 +42,7 @@ static void bird_act_inactive(void) { o->oBirdSpeed = 40.0f; - obj_unhide(); + cur_obj_unhide(); } } @@ -63,12 +63,12 @@ static void bird_act_fly(void) { // is itself. In other words, when a group of birds has its spawner bird // fly past Y=8000, they will all despawn simultaneously. Otherwise, fly. if (o->parentObj->oPosY > 8000.0f) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { // If the bird is a spawner bird, fly towards its home; otherwise, // fly towards the bird's spawner bird. if (o->oBehParams2ndByte != BIRD_BP_SPAWNED) { - distance = obj_lateral_dist_to_home(); + distance = cur_obj_lateral_dist_to_home(); // The spawner bird will start with its downwards (positive) pitch // and will continuously decrease its pitch (i.e. make itself face more upwards) @@ -76,13 +76,13 @@ static void bird_act_fly(void) { // This is done by making its target pitch the arctangent of its distance // to its home and its position - 10,000 (which is always negative). o->oBirdTargetPitch = atan2s(distance, o->oPosY - 10000.0f); - o->oBirdTargetYaw = obj_angle_to_home(); + o->oBirdTargetYaw = cur_obj_angle_to_home(); } else { distance = lateral_dist_between_objects(o, o->parentObj); // The bird's target pitch will face directly to its spawner bird. o->oBirdTargetPitch = atan2s(distance, o->oPosY - o->parentObj->oPosY); - o->oBirdTargetYaw = angle_to_object(o, o->parentObj); + o->oBirdTargetYaw = obj_angle_to_object(o, o->parentObj); // The bird goes faster the farther it is from its spawner bird so it can catch up. o->oBirdSpeed = 0.04f * dist_between_objects(o, o->parentObj) + 20.0f; @@ -90,7 +90,7 @@ static void bird_act_fly(void) { // Approach to match the bird's target yaw and pitch. obj_move_pitch_approach(o->oBirdTargetPitch, 140); - obj_rotate_yaw_toward(o->oBirdTargetYaw, 800); + cur_obj_rotate_yaw_toward(o->oBirdTargetYaw, 800); obj_roll_to_match_yaw_turn(o->oBirdTargetYaw, 0x3000, 600); } @@ -100,7 +100,7 @@ static void bird_act_fly(void) { // a constant added to its Y position every frame since // its Y velocity is reset every frame by // obj_compute_vel_from_move_pitch. - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } /** diff --git a/src/game/behaviors/blue_coin.inc.c b/src/game/behaviors/blue_coin.inc.c index 8429648f..6f90fa5e 100644 --- a/src/game/behaviors/blue_coin.inc.c +++ b/src/game/behaviors/blue_coin.inc.c @@ -13,11 +13,11 @@ void bhv_hidden_blue_coin_loop(void) { switch (o->oAction) { case HIDDEN_BLUE_COIN_ACT_INACTIVE: // Become invisible and intangible - obj_disable_rendering(); - obj_become_intangible(); + cur_obj_disable_rendering(); + cur_obj_become_intangible(); // Set action to HIDDEN_BLUE_COIN_ACT_WAITING after the blue coin switch is found. - o->oHiddenBlueCoinSwitch = obj_nearest_object_with_behavior(bhvBlueCoinSwitch); + o->oHiddenBlueCoinSwitch = cur_obj_nearest_object_with_behavior(bhvBlueCoinSwitch); if (o->oHiddenBlueCoinSwitch != NULL) { o->oAction++; @@ -35,19 +35,19 @@ void bhv_hidden_blue_coin_loop(void) { break; case HIDDEN_BLUE_COIN_ACT_ACTIVE: // Become tangible - obj_enable_rendering(); - obj_become_tangible(); + cur_obj_enable_rendering(); + cur_obj_become_tangible(); // Delete the coin once collected if (o->oInteractStatus & INT_STATUS_INTERACTED) { spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } // After 200 frames of waiting and 20 2-frame blinks (for 240 frames total), // delete the object. - if (obj_wait_then_blink(200, 20)) { - mark_object_for_deletion(o); + if (cur_obj_wait_then_blink(200, 20)) { + obj_mark_for_deletion(o); } break; @@ -61,7 +61,7 @@ void bhv_hidden_blue_coin_loop(void) { */ void bhv_blue_coin_switch_loop(void) { // The switch's model is 1/3 size. - obj_scale(3.0f); + cur_obj_scale(3.0f); switch (o->oAction) { case BLUE_COIN_SWITCH_ACT_IDLE: @@ -77,7 +77,7 @@ void bhv_blue_coin_switch_loop(void) { // Set gravity to 0 so it doesn't accelerate when receding. o->oGravity = 0.0f; - PlaySound2(SOUND_GENERAL_SWITCH_DOOR_OPEN); + cur_obj_play_sound_2(SOUND_GENERAL_SWITCH_DOOR_OPEN); } } @@ -90,7 +90,7 @@ void bhv_blue_coin_switch_loop(void) { // This is probably an off-by-one error, since the switch is 100 units tall // and recedes at 20 units/frame, which means it will fully recede after 5 frames. if (o->oTimer > 5) { - obj_hide(); + cur_obj_hide(); // Set to BLUE_COIN_SWITCH_ACT_TICKING o->oAction++; @@ -98,13 +98,13 @@ void bhv_blue_coin_switch_loop(void) { o->oPosY = gMarioObject->oPosY - 40.0f; // Spawn particles. There's a function that calls this same function - // with the same arguments, func_802A3004, why didn't they just call that? - func_802AA618(0, 0, 46.0f); + // with the same arguments, spawn_mist_particles, why didn't they just call that? + spawn_mist_particles_variable(0, 0, 46.0f); } else { // Have collision while receding load_object_collision_model(); // Recede - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } break; @@ -118,8 +118,8 @@ void bhv_blue_coin_switch_loop(void) { // Delete the switch (which stops the sound) after the last coin is collected, // or after the coins unload after the 240-frame timer expires. - if (obj_nearest_object_with_behavior(bhvHiddenBlueCoin) == NULL || o->oTimer > 240) { - mark_object_for_deletion(o); + if (cur_obj_nearest_object_with_behavior(bhvHiddenBlueCoin) == NULL || o->oTimer > 240) { + obj_mark_for_deletion(o); } break; diff --git a/src/game/behaviors/blue_fish.inc.c b/src/game/behaviors/blue_fish.inc.c index bddb80c3..c9cea526 100644 --- a/src/game/behaviors/blue_fish.inc.c +++ b/src/game/behaviors/blue_fish.inc.c @@ -1,76 +1,127 @@ -// blue_fish.c.inc +/** + * @file blue_fish.inc.c + * Implements behaviour and spawning for bhvBlueFish located in the castle aquarium outside of SA. + */ -void bhv_blue_fish_loop(void) { - f32 sp24; +/** + * Determines fish movement. + */ +void bhv_blue_fish_movement_loop(void) { + f32 randomSwitch; switch (o->oAction) { - case 0: - func_8029ED98(0, 1.0f); + // Initial dive phase after spawning + case BLUE_FISH_ACT_DIVE: + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); + + // Assigns random values to variables that help determine natural motion. if (o->oTimer == 0) { - o->oBlueFishUnk100 = RandomSign() << 11; - o->oBlueFishUnkF4 = RandomFloat() * 2; - o->oBlueFishUnkF8 = (s32)(RandomFloat() * 30) & 0xFE; - sp24 = RandomFloat() * 5; - if (sp24 < 2.0f) + o->oBlueFishRandomAngle = RandomSign() << 11; + o->oBlueFishRandomVel = RandomFloat() * 2; + o->oBlueFishRandomTime = (s32)(RandomFloat() * 30) & 0xFE; + + // Adjusts pitch velocity or sets to zero dependant on outcome of randomSwitch. + randomSwitch = RandomFloat() * 5; + if (randomSwitch < 2.0f) { o->oAngleVelPitch = random_f32_around_zero(128); - else + } else { o->oAngleVelPitch = 0; + } } - o->oForwardVel = o->oBlueFishUnkF4 + 3.0f; - if (o->oTimer >= o->oBlueFishUnkF8 + 60) + + // Set forward velocity and progress oAction to BLUE_FISH_ACT_TURN. + o->oForwardVel = o->oBlueFishRandomVel + 3.0f; + if (o->oTimer >= o->oBlueFishRandomTime + 60) { o->oAction++; - if (o->oTimer < (o->oBlueFishUnkF8 + 60) / 2) + } + + // Set pitch velocity + if (o->oTimer < (o->oBlueFishRandomTime + 60) / 2) { o->oFaceAnglePitch += o->oAngleVelPitch; - else + } else { o->oFaceAnglePitch -= o->oAngleVelPitch; + } + + // Calculate new Y velocity o->oVelY = -sins(o->oFaceAnglePitch) * o->oForwardVel; break; - case 1: - func_8029ED98(0, 2.0f); - o->oMoveAngleYaw = (s32)(o->oBlueFishUnk100 + o->oMoveAngleYaw); - if (o->oTimer == 15) + // Animates and adjusts fish yaw angle. + case BLUE_FISH_ACT_TURN: + cur_obj_init_animation_with_accel_and_sound(0, 2.0f); + o->oMoveAngleYaw = (s32)(o->oBlueFishRandomAngle + o->oMoveAngleYaw); + if (o->oTimer == 15) { o->oAction++; - break; - case 2: - func_8029ED98(0, 1.0f); - if (o->oTimer >= o->oBlueFishUnkF8 + 60) + } + break; + // Animates and adjusts pitch to an upward direction. + case BLUE_FISH_ACT_ASCEND: + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); + + // Progresses oAction to BLUE_FISH_ACT_TURN_BACK after elapsed time. + if (o->oTimer >= o->oBlueFishRandomTime + 60) { o->oAction++; - if (o->oTimer < (o->oBlueFishUnkF8 + 60) / 2) + } + + // Adjusts pitch angle. Direction relies on time not passed. + if (o->oTimer < (o->oBlueFishRandomTime + 60) / 2) { o->oFaceAnglePitch -= o->oAngleVelPitch; - else + } else { o->oFaceAnglePitch += o->oAngleVelPitch; - break; - case 3: - func_8029ED98(0, 2.0f); - o->oMoveAngleYaw = (s32)(o->oBlueFishUnk100 + o->oMoveAngleYaw); - if (o->oTimer == 15) - o->oAction = 0; + } + break; + // Animates and turns fish around + case BLUE_FISH_ACT_TURN_BACK: + cur_obj_init_animation_with_accel_and_sound(0, 2.0f); + o->oMoveAngleYaw = (s32)(o->oBlueFishRandomAngle + o->oMoveAngleYaw); + + // Sets the fish back to the BLUE_FISH_ACT_DIVE phase. + if (o->oTimer == 15) { + o->oAction = BLUE_FISH_ACT_DIVE; + } break; } + + // Calculates Y velocity and calls physics engine. o->oVelY = -sins(o->oFaceAnglePitch) * o->oForwardVel; - obj_move_using_fvel_and_gravity(); - if (o->parentObj->oAction == 2) - mark_object_for_deletion(o); + cur_obj_move_using_fvel_and_gravity(); + + // Deletes object if the parent has oAction set to BLUE_FISH_ACT_DUPLICATE. + if (o->parentObj->oAction == BLUE_FISH_ACT_DUPLICATE) { + obj_mark_for_deletion(o); + } } +/** + * Spawns fifteen fish if Mario resides in room fifteen or seven. + * They move at random within 200.0f + */ void bhv_tank_fish_group_loop(void) { struct Object *fish; s32 i; switch (o->oAction) { - case 0: + case BLUE_FISH_ACT_SPAWN: if (gMarioCurrentRoom == 15 || gMarioCurrentRoom == 7) { + + // spawns fifteen fish and moves them within 200.0f for (i = 0; i < 15; i++) { fish = spawn_object_relative(0, 300, 0, -200, o, MODEL_FISH, bhvBlueFish); - translate_object_xyz_random(fish, 200.0f); + obj_translate_xyz_random(fish, 200.0f); } + + // Proceed to BLUE_FISH_ACT_ROOM phase. o->oAction++; } break; - case 1: - if (gMarioCurrentRoom != 15 && gMarioCurrentRoom != 7) + + // Sets next oAction phase if Mario is not in rooms fifteen and seven. + case BLUE_FISH_ACT_ROOM: + if (gMarioCurrentRoom != 15 && gMarioCurrentRoom != 7) { o->oAction++; + } break; - case 2: - o->oAction = 0; + + // Sets oAction to the BLUE_FISH_ACT_SPAWN phase. + case BLUE_FISH_ACT_DUPLICATE: + o->oAction = BLUE_FISH_ACT_SPAWN; break; } } diff --git a/src/game/behaviors/bobomb.inc.c b/src/game/behaviors/bobomb.inc.c index f5510f0a..a05d38dd 100644 --- a/src/game/behaviors/bobomb.inc.c +++ b/src/game/behaviors/bobomb.inc.c @@ -19,7 +19,7 @@ void bhv_bobomb_init(void) { o->oInteractionSubtype = INT_SUBTYPE_KICKABLE; } -void func_802E5B7C(void) { +void bobomb_spawn_coin(void) { if (((o->oBehParams >> 8) & 0x1) == 0) { obj_spawn_yellow_coins(o, 1); o->oBehParams = 0x100; @@ -27,22 +27,23 @@ void func_802E5B7C(void) { } } -void BobombExplodeLoop(void) { +void bobomb_act_explode(void) { struct Object *explosion; if (o->oTimer < 5) - obj_scale(1.0 + (f32) o->oTimer / 5.0); + cur_obj_scale(1.0 + (f32) o->oTimer / 5.0); else { explosion = spawn_object(o, MODEL_EXPLOSION, bhvExplosion); explosion->oGraphYOffset += 100.0f; - func_802E5B7C(); + bobomb_spawn_coin(); create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000); o->activeFlags = 0; } } -void CheckBobombInteractions(void) { - set_object_hitbox(o, &sBobombHitbox); + +void bobomb_check_interactions(void) { + obj_set_hitbox(o, &sBobombHitbox); if ((o->oInteractStatus & INT_STATUS_INTERACTED) != 0) /* bit 15 */ { if ((o->oInteractStatus & INTERACT_GRABBABLE) != 0) /* bit 1 */ @@ -59,11 +60,11 @@ void CheckBobombInteractions(void) { o->oInteractStatus = 0; } - if (attack_collided_non_mario_object(o) == 1) + if (obj_attack_collided_from_other_object(o) == 1) o->oAction = BOBOMB_ACT_EXPLODE; } -void BobombPatrolLoop(void) { +void bobomb_act_patrol(void) { UNUSED s8 filler[4]; UNUSED s16 sp22; s16 collisionFlags; @@ -80,7 +81,7 @@ void BobombPatrolLoop(void) { obj_check_floor_death(collisionFlags, sObjFloor); } -void BobombChaseMarioLoop(void) { +void bobomb_act_chase_mario(void) { UNUSED u8 filler[4]; s16 sp1a, collisionFlags; @@ -90,35 +91,35 @@ void BobombChaseMarioLoop(void) { collisionFlags = object_step(); if (sp1a == 5 || sp1a == 16) - PlaySound2(SOUND_OBJ_BOBOMB_WALK); + cur_obj_play_sound_2(SOUND_OBJ_BOBOMB_WALK); obj_turn_toward_object(o, gMarioObject, 16, 0x800); obj_check_floor_death(collisionFlags, sObjFloor); } -void BobombLaunchedLoop(void) { +void bobomb_act_launched(void) { s16 collisionFlags = 0; collisionFlags = object_step(); if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED) o->oAction = BOBOMB_ACT_EXPLODE; /* bit 0 */ } -void GenericBobombFreeLoop(void) { +void generic_bobomb_free_loop(void) { switch (o->oAction) { case BOBOMB_ACT_PATROL: - BobombPatrolLoop(); + bobomb_act_patrol(); break; case BOBOMB_ACT_LAUNCHED: - BobombLaunchedLoop(); + bobomb_act_launched(); break; case BOBOMB_ACT_CHASE_MARIO: - BobombChaseMarioLoop(); + bobomb_act_chase_mario(); break; case BOBOMB_ACT_EXPLODE: - BobombExplodeLoop(); + bobomb_act_explode(); break; case BOBOMB_ACT_LAVA_DEATH: @@ -132,20 +133,20 @@ void GenericBobombFreeLoop(void) { break; } - CheckBobombInteractions(); + bobomb_check_interactions(); if (o->oBobombFuseTimer >= 151) o->oAction = 3; } -void StationaryBobombFreeLoop(void) { +void stationary_bobomb_free_loop(void) { switch (o->oAction) { case BOBOMB_ACT_LAUNCHED: - BobombLaunchedLoop(); + bobomb_act_launched(); break; case BOBOMB_ACT_EXPLODE: - BobombExplodeLoop(); + bobomb_act_explode(); break; case BOBOMB_ACT_LAVA_DEATH: @@ -159,28 +160,28 @@ void StationaryBobombFreeLoop(void) { break; } - CheckBobombInteractions(); + bobomb_check_interactions(); if (o->oBobombFuseTimer >= 151) o->oAction = 3; } -void BobombFreeLoop(void) { +void bobomb_free_loop(void) { if (o->oBehParams2ndByte == BOBOMB_BP_STYPE_GENERIC) - GenericBobombFreeLoop(); + generic_bobomb_free_loop(); else - StationaryBobombFreeLoop(); + stationary_bobomb_free_loop(); } -void BobombHeldLoop(void) { +void bobomb_held_loop(void) { o->header.gfx.node.flags |= 0x10; /* bit 4 */ - SetObjAnimation(1); - obj_set_pos_relative(gMarioObject, 0, 60.0f, 100.0); + cur_obj_init_animation(1); + cur_obj_set_pos_relative(gMarioObject, 0, 60.0f, 100.0); o->oBobombFuseLit = 1; if (o->oBobombFuseTimer >= 151) { //! Although the Bob-omb's action is set to explode when the fuse timer expires, - // BobombExplodeLoop() will not execute until the bob-omb's held state changes. + // bobomb_act_explode() will not execute until the bob-omb's held state changes. // This allows the Bob-omb to be regrabbed indefinitely. gMarioObject->oInteractStatus |= INTERACT_DAMAGE; /* bit 3 */ @@ -188,18 +189,18 @@ void BobombHeldLoop(void) { } } -void BobombDroppedLoop(void) { - obj_get_dropped(); +void bobomb_dropped_loop(void) { + cur_obj_get_dropped(); o->header.gfx.node.flags &= ~0x10; /* bit 4 = 0 */ - SetObjAnimation(0); + cur_obj_init_animation(0); o->oHeldState = 0; o->oAction = BOBOMB_ACT_PATROL; } -void BobombThrownLoop(void) { - obj_enable_rendering_2(); +void bobomb_thrown_loop(void) { + cur_obj_enable_rendering_2(); o->header.gfx.node.flags &= ~0x10; /* bit 4 = 0 */ o->oHeldState = 0; @@ -211,7 +212,7 @@ void BobombThrownLoop(void) { // sp18 = blinkTimer -void ObjRandomBlink(s32 *blinkTimer) { +void curr_obj_random_blink(s32 *blinkTimer) { if (*blinkTimer == 0) { if ((s16)(RandomFloat() * 100.0f) == 0) { o->oAnimState = 1; @@ -235,23 +236,23 @@ void bhv_bobomb_loop(void) { if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 4000) != 0) { switch (o->oHeldState) { case HELD_FREE: - BobombFreeLoop(); + bobomb_free_loop(); break; case HELD_HELD: - BobombHeldLoop(); + bobomb_held_loop(); break; case HELD_THROWN: - BobombThrownLoop(); + bobomb_thrown_loop(); break; case HELD_DROPPED: - BobombDroppedLoop(); + bobomb_dropped_loop(); break; } - ObjRandomBlink(&o->oBobombBlinkTimer); + curr_obj_random_blink(&o->oBobombBlinkTimer); if (o->oBobombFuseLit == 1) { if (o->oBobombFuseTimer >= 121) @@ -263,7 +264,7 @@ void bhv_bobomb_loop(void) { == 0) /* oBobombFuseTimer % 2 or oBobombFuseTimer % 8 */ spawn_object(o, MODEL_SMOKE, bhvBobombFuseSmoke); - PlaySound(SOUND_AIR_BOBOMB_LIT_FUSE); + cur_obj_play_sound_1(SOUND_AIR_BOBOMB_LIT_FUSE); o->oBobombFuseTimer++; } @@ -274,7 +275,7 @@ void bhv_bobomb_fuse_smoke_init(void) { o->oPosX += (s32)(RandomFloat() * 80.0f) - 40; o->oPosY += (s32)(RandomFloat() * 80.0f) + 60; o->oPosZ += (s32)(RandomFloat() * 80.0f) - 40; - obj_scale(1.2f); + cur_obj_scale(1.2f); } void bhv_bobomb_buddy_init(void) { @@ -284,7 +285,7 @@ void bhv_bobomb_buddy_init(void) { o->oInteractionSubtype = INT_SUBTYPE_NPC; } -void BobombBuddyIdleLoop(void) { +void bobomb_buddy_act_idle(void) { UNUSED u8 filler[4]; s16 sp1a = o->header.gfx.unk38.animFrame; UNUSED s16 collisionFlags = 0; @@ -296,7 +297,7 @@ void BobombBuddyIdleLoop(void) { collisionFlags = object_step(); if ((sp1a == 5) || (sp1a == 16)) - PlaySound2(SOUND_OBJ_BOBOMB_WALK); + cur_obj_play_sound_2(SOUND_OBJ_BOBOMB_WALK); if (o->oDistanceToMario < 1000.0f) o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x140); @@ -313,7 +314,7 @@ void BobombBuddyIdleLoop(void) { * dialogSecondText is called after Bob-omb Buddy has the cannon(s) ready and * then tells Mario that is "Ready for blastoff". */ -void BobombBuddyCannonLoop(s16 dialogFirstText, s16 dialogSecondText) { +void bobomb_buddy_cannon_dialog(s16 dialogFirstText, s16 dialogSecondText) { struct Object *cannonClosed; s16 buddyText, cutscene; @@ -322,7 +323,7 @@ void BobombBuddyCannonLoop(s16 dialogFirstText, s16 dialogSecondText) { buddyText = cutscene_object_with_dialog(CUTSCENE_DIALOG, o, dialogFirstText); if (buddyText != 0) { save_file_set_cannon_unlocked(); - cannonClosed = obj_nearest_object_with_behavior(bhvCannonClosed); + cannonClosed = cur_obj_nearest_object_with_behavior(bhvCannonClosed); if (cannonClosed != 0) o->oBobombBuddyCannonStatus = BOBOMB_BUDDY_CANNON_OPENING; else @@ -331,7 +332,7 @@ void BobombBuddyCannonLoop(s16 dialogFirstText, s16 dialogSecondText) { break; case BOBOMB_BUDDY_CANNON_OPENING: - cannonClosed = obj_nearest_object_with_behavior(bhvCannonClosed); + cannonClosed = cur_obj_nearest_object_with_behavior(bhvCannonClosed); cutscene = cutscene_object(CUTSCENE_PREPARE_CANNON, cannonClosed); if (cutscene == -1) o->oBobombBuddyCannonStatus = BOBOMB_BUDDY_CANNON_OPENED; @@ -355,7 +356,7 @@ void BobombBuddyCannonLoop(s16 dialogFirstText, s16 dialogSecondText) { } } -void BobombBuddyTalkLoop(void) { +void bobomb_buddy_act_talk(void) { if (set_mario_npc_dialog(1) == 2) { o->activeFlags |= 0x20; /* bit 5 */ @@ -374,38 +375,38 @@ void BobombBuddyTalkLoop(void) { case BOBOMB_BUDDY_ROLE_CANNON: if (gCurrCourseNum == COURSE_BOB) - BobombBuddyCannonLoop(DIALOG_004, DIALOG_105); + bobomb_buddy_cannon_dialog(DIALOG_004, DIALOG_105); else - BobombBuddyCannonLoop(DIALOG_047, DIALOG_106); + bobomb_buddy_cannon_dialog(DIALOG_047, DIALOG_106); break; } } } -void BobombBuddyTurnToTalkLoop(void) { +void bobomb_buddy_act_turn_to_talk(void) { s16 sp1e = o->header.gfx.unk38.animFrame; if ((sp1e == 5) || (sp1e == 16)) - PlaySound2(SOUND_OBJ_BOBOMB_WALK); + cur_obj_play_sound_2(SOUND_OBJ_BOBOMB_WALK); o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x1000); if ((s16) o->oMoveAngleYaw == (s16) o->oAngleToMario) o->oAction = BOBOMB_BUDDY_ACT_TALK; - PlaySound2(SOUND_ACTION_READ_SIGN); + cur_obj_play_sound_2(SOUND_ACTION_READ_SIGN); } -void BobombBuddyActionLoop(void) { +void bobomb_buddy_actions(void) { switch (o->oAction) { case BOBOMB_BUDDY_ACT_IDLE: - BobombBuddyIdleLoop(); + bobomb_buddy_act_idle(); break; case BOBOMB_BUDDY_ACT_TURN_TO_TALK: - BobombBuddyTurnToTalkLoop(); + bobomb_buddy_act_turn_to_talk(); break; case BOBOMB_BUDDY_ACT_TALK: - BobombBuddyTalkLoop(); + bobomb_buddy_act_talk(); break; } @@ -413,9 +414,9 @@ void BobombBuddyActionLoop(void) { } void bhv_bobomb_buddy_loop(void) { - BobombBuddyActionLoop(); + bobomb_buddy_actions(); - ObjRandomBlink(&o->oBobombBuddyBlinkTimer); + curr_obj_random_blink(&o->oBobombBuddyBlinkTimer); o->oInteractStatus = 0; } diff --git a/src/game/behaviors/bomp.inc.c b/src/game/behaviors/bomp.inc.c index 86265467..d2e56a19 100644 --- a/src/game/behaviors/bomp.inc.c +++ b/src/game/behaviors/bomp.inc.c @@ -24,7 +24,7 @@ void bhv_small_bomp_loop(void) { if (o->oTimer == 15.0) { o->oAction = BOMP_ACT_EXTEND; o->oForwardVel = 40.0f; - PlaySound2(SOUND_OBJ_UNKNOWN2); + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2); } break; @@ -38,7 +38,7 @@ void bhv_small_bomp_loop(void) { o->oAction = BOMP_ACT_RETRACT; o->oForwardVel = 10.0f; o->oMoveAngleYaw -= 0x8000; - PlaySound2(SOUND_OBJ_UNKNOWN2); + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2); } break; @@ -80,7 +80,7 @@ void bhv_large_bomp_loop(void) { if (o->oTimer == 15.0) { o->oAction = BOMP_ACT_EXTEND; o->oForwardVel = 10.0f; - PlaySound2(SOUND_OBJ_UNKNOWN2); + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2); } break; @@ -94,7 +94,7 @@ void bhv_large_bomp_loop(void) { o->oAction = BOMP_ACT_RETRACT; o->oForwardVel = 10.0f; o->oMoveAngleYaw -= 0x8000; - PlaySound2(SOUND_OBJ_UNKNOWN2); + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2); } break; diff --git a/src/game/behaviors/boo.inc.c b/src/game/behaviors/boo.inc.c index 71cc8851..7a7ddb31 100644 --- a/src/game/behaviors/boo.inc.c +++ b/src/game/behaviors/boo.inc.c @@ -30,7 +30,7 @@ void bhv_boo_init(void) { } static s32 boo_should_be_stopped(void) { - if (obj_has_behavior(bhvMerryGoRoundBigBoo) || obj_has_behavior(bhvMerryGoRoundBoo)) { + if (cur_obj_has_behavior(bhvMerryGoRoundBigBoo) || cur_obj_has_behavior(bhvMerryGoRoundBoo)) { if (gMarioOnMerryGoRound == FALSE) { return TRUE; } else { @@ -54,13 +54,13 @@ static s32 boo_should_be_stopped(void) { static s32 boo_should_be_active(void) { f32 activationRadius; - if (obj_has_behavior(bhvBalconyBigBoo)) { + if (cur_obj_has_behavior(bhvBalconyBigBoo)) { activationRadius = 5000.0f; } else { activationRadius = 1500.0f; } - if (obj_has_behavior(bhvMerryGoRoundBigBoo) || obj_has_behavior(bhvMerryGoRoundBoo)) { + if (cur_obj_has_behavior(bhvMerryGoRoundBigBoo) || cur_obj_has_behavior(bhvMerryGoRoundBoo)) { if (gMarioOnMerryGoRound == TRUE) { return TRUE; } else { @@ -87,7 +87,7 @@ void bhv_courtyard_boo_triplet_init(void) { struct Object *boo; if (gHudDisplay.stars < 12) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { for (i = 0; i < 3; i++) { boo = spawn_object_relative( @@ -125,7 +125,7 @@ static void boo_approach_target_opacity_and_update_scale(void) { } scale = (o->oOpacity/255.0f * 0.4 + 0.6) * o->oBooBaseScale; - scale_object(o, scale); // why no obj_scale? was obj_scale written later? + obj_scale(o, scale); // why no cur_obj_scale? was cur_obj_scale written later? } static void boo_oscillate(s32 ignoreOpacity) { @@ -156,7 +156,7 @@ static s32 boo_vanish_or_appear(void) { ) { if (o->oOpacity == 40) { o->oBooTargetOpacity = 255; - PlaySound2(SOUND_OBJ_BOO_LAUGH_LONG); + cur_obj_play_sound_2(SOUND_OBJ_BOO_LAUGH_LONG); } if (o->oOpacity > 180) { @@ -170,7 +170,7 @@ static s32 boo_vanish_or_appear(void) { } static void boo_set_move_yaw_for_during_hit(s32 hurt) { - obj_become_intangible(); + cur_obj_become_intangible(); o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; o->oBooMoveYawBeforeHit = (f32) o->oMoveAngleYaw; @@ -225,7 +225,7 @@ static s32 boo_update_after_bounced_on(f32 a0) { if (o->oTimer < 32) { boo_move_during_hit(FALSE, D_8032F0CC[o->oTimer]/5000.0f * a0); } else { - obj_become_tangible(); + cur_obj_become_tangible(); boo_reset_after_hit(); o->oAction = 1; return TRUE; @@ -247,7 +247,7 @@ static s32 big_boo_update_during_nonlethal_hit(f32 a0) { } else if (o->oTimer < 48) { big_boo_shake_after_hit(); } else { - obj_become_tangible(); + cur_obj_become_tangible(); boo_reset_after_hit(); o->oAction = 1; @@ -274,14 +274,14 @@ static s32 boo_update_during_death(void) { } if (o->oTimer > 30 || o->oMoveFlags & 0x200) { - func_802A3004(); + spawn_mist_particles(); o->oBooDeathStatus = BOO_DEATH_STATUS_DEAD; if (o->oBooParentBigBoo != NULL) { parentBigBoo = o->oBooParentBigBoo; #ifndef VERSION_JP - if (!obj_has_behavior(bhvBoo)) { + if (!cur_obj_has_behavior(bhvBoo)) { parentBigBoo->oBigBooNumMinionBoosKilled++; } #else @@ -313,15 +313,15 @@ static s32 boo_get_attack_status(void) { if (o->oInteractStatus & INT_STATUS_INTERACTED) { if ((o->oInteractStatus & INT_STATUS_WAS_ATTACKED) && obj_has_attack_type(ATTACK_FROM_ABOVE) == FALSE) { - obj_become_intangible(); + cur_obj_become_intangible(); o->oInteractStatus = 0; - PlaySound2(SOUND_OBJ_BOO_LAUGH_SHORT); + cur_obj_play_sound_2(SOUND_OBJ_BOO_LAUGH_SHORT); attackStatus = BOO_ATTACKED; } else { - PlaySound2(SOUND_OBJ_BOO_BOUNCE_TOP); + cur_obj_play_sound_2(SOUND_OBJ_BOO_BOUNCE_TOP); o->oInteractStatus = 0; @@ -340,23 +340,23 @@ static void boo_chase_mario(f32 a0, s16 a1, f32 a2) { if (boo_vanish_or_appear()) { o->oInteractType = 0x8000; - if (obj_lateral_dist_from_mario_to_home() > 1500.0f) { - sp1A = obj_angle_to_home(); + if (cur_obj_lateral_dist_from_mario_to_home() > 1500.0f) { + sp1A = cur_obj_angle_to_home(); } else { sp1A = o->oAngleToMario; } - obj_rotate_yaw_toward(sp1A, a1); + cur_obj_rotate_yaw_toward(sp1A, a1); o->oVelY = 0.0f; if (mario_is_in_air_action() == 0) { sp1C = o->oPosY - gMarioObject->oPosY; if (a0 < sp1C && sp1C < 500.0f) { - o->oVelY = func_802A0BF4(o->oPosY, gMarioObject->oPosY + 50.0f, 10.f, 2.0f); + o->oVelY = increment_velocity_toward_range(o->oPosY, gMarioObject->oPosY + 50.0f, 10.f, 2.0f); } } - func_8029F684(10.0f - o->oBooNegatedAggressiveness, a2); + cur_obj_set_vel_from_mario_vel(10.0f - o->oBooNegatedAggressiveness, a2); if (o->oForwardVel != 0.0f) { boo_oscillate(FALSE); @@ -370,18 +370,18 @@ static void boo_chase_mario(f32 a0, s16 a1, f32 a2) { } } -static void ActionBoo0(void) { +static void boo_act_0(void) { o->activeFlags |= ACTIVE_FLAG_MOVE_THROUGH_GRATE; if (o->oBehParams2ndByte == 2) { o->oRoom = 10; } - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); o->oMoveAngleYaw = o->oBooInitialMoveYaw; boo_stop(); - o->oBooParentBigBoo = obj_nearest_object_with_behavior(bhvGhostHuntBigBoo); + o->oBooParentBigBoo = cur_obj_nearest_object_with_behavior(bhvGhostHuntBigBoo); o->oBooBaseScale = 1.0f; o->oBooTargetOpacity = 0xFF; @@ -396,7 +396,7 @@ static void ActionBoo0(void) { } } -static void ActionBoo5(void) { +static void boo_act_5(void) { if (o->oTimer < 30) { o->oVelY = 0.0f; o->oForwardVel = 13.0f; @@ -408,7 +408,7 @@ static void ActionBoo5(void) { } } -static void ActionBoo1(void) { +static void boo_act_1(void) { s32 attackStatus; if (o->oTimer == 0) { @@ -436,37 +436,37 @@ static void ActionBoo1(void) { } } -static void ActionBoo2(void) { +static void boo_act_2(void) { if (boo_update_after_bounced_on(20.0f)) { o->oAction = 1; } } -static void ActionBoo3(void) { +static void boo_act_3(void) { if (boo_update_during_death()) { if (o->oBehParams2ndByte != 0) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { o->oAction = 4; - obj_disable(); + cur_obj_disable(); } } } // Called when a Go on a Ghost Hunt boo dies -static void ActionBoo4(void) { +static void boo_act_4(void) { s32 dialogID; // If there are no remaining "minion" boos, show the dialog of the Big Boo - if (obj_nearest_object_with_behavior(bhvGhostHuntBoo) == NULL) { + if (cur_obj_nearest_object_with_behavior(bhvGhostHuntBoo) == NULL) { dialogID = DIALOG_108; } else { dialogID = DIALOG_107; } - if (obj_update_dialog(2, 2, dialogID, 0)) { + if (cur_obj_update_dialog(2, 2, dialogID, 0)) { create_sound_spawner(SOUND_OBJ_DYING_ENEMY1); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (dialogID == DIALOG_108) { // If the Big Boo should spawn, play the jingle play_puzzle_jingle(); @@ -475,23 +475,23 @@ static void ActionBoo4(void) { } static void (*sBooActions[])(void) = { - ActionBoo0, - ActionBoo1, - ActionBoo2, - ActionBoo3, - ActionBoo4, - ActionBoo5 + boo_act_0, + boo_act_1, + boo_act_2, + boo_act_3, + boo_act_4, + boo_act_5 }; void bhv_boo_loop(void) { //PARTIAL_UPDATE - obj_update_floor_and_walls(); - obj_call_action_function(sBooActions); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sBooActions); + cur_obj_move_standard(78); boo_approach_target_opacity_and_update_scale(); - if (object_has_behavior(o->parentObj, bhvMerryGoRoundBooManager)) { + if (obj_has_behavior(o->parentObj, bhvMerryGoRoundBooManager)) { if (o->activeFlags == 0) { o->parentObj->oMerryGoRoundBooManagerNumBoosKilled++; } @@ -500,8 +500,8 @@ void bhv_boo_loop(void) { o->oInteractStatus = 0; } -static void ActionBooGivingStar0(void) { - if (obj_has_behavior(bhvBalconyBigBoo)) { +static void big_boo_act_0(void) { + if (cur_obj_has_behavior(bhvBalconyBigBoo)) { obj_set_secondary_camera_focus(); // number of killed boos set > 5 so that boo always loads // redundant? this is also done in behavior_data.s @@ -517,25 +517,25 @@ static void ActionBooGivingStar0(void) { #endif o->oAction = 1; - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); o->oMoveAngleYaw = o->oBooInitialMoveYaw; - obj_unhide(); + cur_obj_unhide(); o->oBooTargetOpacity = 0xFF; o->oBooBaseScale = 3.0f; o->oHealth = 3; - obj_scale(3.0f); - obj_become_tangible(); + cur_obj_scale(3.0f); + cur_obj_become_tangible(); } else { - obj_hide(); - obj_become_intangible(); + cur_obj_hide(); + cur_obj_become_intangible(); boo_stop(); } } -static void ActionBooGivingStar1(void) { +static void big_boo_act_1(void) { s32 attackStatus; s16 sp22; f32 sp1C; @@ -553,7 +553,7 @@ static void ActionBooGivingStar1(void) { attackStatus = boo_get_attack_status(); // redundant; this check is in boo_should_be_stopped - if (obj_has_behavior(bhvMerryGoRoundBigBoo)) { + if (cur_obj_has_behavior(bhvMerryGoRoundBigBoo)) { if (gMarioOnMerryGoRound == FALSE) { o->oAction = 0; } @@ -574,44 +574,44 @@ static void ActionBooGivingStar1(void) { } } -static void ActionBooGivingStar2(void) { +static void big_boo_act_2(void) { if (boo_update_after_bounced_on(20.0f)) { o->oAction = 1; } } static void big_boo_spawn_ghost_hunt_star(void) { - create_star(980.0f, 1100.0f, 250.0f); + spawn_default_star(980.0f, 1100.0f, 250.0f); } static void big_boo_spawn_balcony_star(void) { - create_star(700.0f, 3200.0f, 1900.0f); + spawn_default_star(700.0f, 3200.0f, 1900.0f); } static void big_boo_spawn_merry_go_round_star(void) { struct Object *merryGoRound; - create_star(-1600.0f, -2100.0f, 205.0f); + spawn_default_star(-1600.0f, -2100.0f, 205.0f); - merryGoRound = obj_nearest_object_with_behavior(bhvMerryGoRound); + merryGoRound = cur_obj_nearest_object_with_behavior(bhvMerryGoRound); if (merryGoRound != NULL) { merryGoRound->oMerryGoRoundStopped = TRUE; } } -static void ActionBooGivingStar3(void) { +static void big_boo_act_3(void) { if (o->oTimer == 0) { o->oHealth--; } if (o->oHealth == 0) { if (boo_update_during_death()) { - obj_disable(); + cur_obj_disable(); o->oAction = 4; - set_object_angle(o, 0, 0, 0); + obj_set_angle(o, 0, 0, 0); if (o->oBehParams2ndByte == 0) { big_boo_spawn_ghost_hunt_star(); @@ -623,7 +623,7 @@ static void ActionBooGivingStar3(void) { } } else { if (o->oTimer == 0) { - func_802A3004(); + spawn_mist_particles(); o->oBooBaseScale -= 0.5; } @@ -633,65 +633,65 @@ static void ActionBooGivingStar3(void) { } } -static void ActionBooGivingStar4(void) { +static void big_boo_act_4(void) { #ifndef VERSION_JP boo_stop(); #endif if (o->oBehParams2ndByte == 0) { - set_object_pos(o, 973, 0, 626); + obj_set_pos(o, 973, 0, 626); if (o->oTimer > 60 && o->oDistanceToMario < 600.0f) { - set_object_pos(o, 973, 0, 717); + obj_set_pos(o, 973, 0, 717); spawn_object_relative(0, 0, 0, 0, o, MODEL_BBH_STAIRCASE_STEP, bhvBooBossSpawnedBridge); spawn_object_relative(1, 0, 0, -200, o, MODEL_BBH_STAIRCASE_STEP, bhvBooBossSpawnedBridge); spawn_object_relative(2, 0, 0, 200, o, MODEL_BBH_STAIRCASE_STEP, bhvBooBossSpawnedBridge); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } else { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } static void (*sBooGivingStarActions[])(void) = { - ActionBooGivingStar0, - ActionBooGivingStar1, - ActionBooGivingStar2, - ActionBooGivingStar3, - ActionBooGivingStar4 + big_boo_act_0, + big_boo_act_1, + big_boo_act_2, + big_boo_act_3, + big_boo_act_4 }; void bhv_big_boo_loop(void) { //PARTIAL_UPDATE - set_object_hitbox(o, &sBooGivingStarHitbox); + obj_set_hitbox(o, &sBooGivingStarHitbox); o->oGraphYOffset = o->oBooBaseScale * 60.0f; - obj_update_floor_and_walls(); - obj_call_action_function(sBooGivingStarActions); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sBooGivingStarActions); + cur_obj_move_standard(78); boo_approach_target_opacity_and_update_scale(); o->oInteractStatus = 0; } -static void ActionBooWithCage0(void) { +static void boo_with_cage_act_0(void) { o->oBooParentBigBoo = NULL; o->oBooTargetOpacity = 0xFF; o->oBooBaseScale = 2.0f; - obj_scale(2.0f); - obj_become_tangible(); + cur_obj_scale(2.0f); + cur_obj_become_tangible(); if (boo_should_be_active()) { o->oAction = 1; } } -static void ActionBooWithCage1(void) { +static void boo_with_cage_act_1(void) { s32 attackStatus; boo_chase_mario(100.0f, 512, 0.5f); @@ -711,15 +711,15 @@ static void ActionBooWithCage1(void) { } } -static void ActionBooWithCage2(void) { +static void boo_with_cage_act_2(void) { if (boo_update_after_bounced_on(20.0f)) { o->oAction = 1; } } -static void ActionBooWithCage3(void) { +static void boo_with_cage_act_3(void) { if (boo_update_during_death()) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } @@ -727,7 +727,7 @@ void bhv_boo_with_cage_init(void) { struct Object* cage; if (gHudDisplay.stars < 12) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { cage = spawn_object(o, MODEL_HAUNTED_CAGE, bhvBooCage); cage->oBehParams = o->oBehParams; @@ -735,20 +735,20 @@ void bhv_boo_with_cage_init(void) { } static void (*sBooWithCageActions[])(void) = { - ActionBooWithCage0, - ActionBooWithCage1, - ActionBooWithCage2, - ActionBooWithCage3 + boo_with_cage_act_0, + boo_with_cage_act_1, + boo_with_cage_act_2, + boo_with_cage_act_3 }; void bhv_boo_with_cage_loop(void) { //PARTIAL_UPDATE - obj_update_floor_and_walls(); - obj_call_action_function(sBooWithCageActions); - obj_move_standard(78); - + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sBooWithCageActions); + cur_obj_move_standard(78); + boo_approach_target_opacity_and_update_scale(); o->oInteractStatus = 0; } @@ -770,7 +770,7 @@ void bhv_merry_go_round_boo_manager_loop(void) { if (o->oMerryGoRoundBooManagerNumBoosKilled > 4) { struct Object *boo = spawn_object(o, MODEL_BOO, bhvMerryGoRoundBigBoo); - copy_object_behavior_params(boo, o); + obj_copy_behavior_params(boo, o); o->oAction = 2; @@ -799,7 +799,7 @@ void obj_set_secondary_camera_focus(void) { } void bhv_animated_texture_loop(void) { - func_802A3470(); + cur_obj_set_pos_to_home_with_debug(); } void bhv_boo_in_castle_loop(void) { @@ -808,38 +808,38 @@ void bhv_boo_in_castle_loop(void) { o->oBooBaseScale = 2.0f; if (o->oAction == 0) { - obj_hide(); + cur_obj_hide(); if (gHudDisplay.stars < 12) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } if (gMarioCurrentRoom == 1) { o->oAction++; } } else if (o->oAction == 1) { - obj_unhide(); + cur_obj_unhide(); o->oOpacity = 180; if (o->oTimer == 0) { - obj_scale(o->oBooBaseScale); + cur_obj_scale(o->oBooBaseScale); } if (o->oDistanceToMario < 1000.0f) { o->oAction++; - PlaySound2(SOUND_OBJ_BOO_LAUGH_LONG); + cur_obj_play_sound_2(SOUND_OBJ_BOO_LAUGH_LONG); } o->oForwardVel = 0.0f; targetAngle = o->oAngleToMario; } else { - obj_forward_vel_approach_upward(32.0f, 1.0f); + cur_obj_forward_vel_approach_upward(32.0f, 1.0f); o->oHomeX = -1000.0f; o->oHomeZ = -9000.0f; - targetAngle = obj_angle_to_home(); + targetAngle = cur_obj_angle_to_home(); if (o->oPosZ < -5000.0f) { if (o->oOpacity > 0) { @@ -856,11 +856,11 @@ void bhv_boo_in_castle_loop(void) { o->oVelY = 0.0f; - targetAngle = obj_angle_to_home(); + targetAngle = cur_obj_angle_to_home(); - obj_rotate_yaw_toward(targetAngle, 0x5A8); + cur_obj_rotate_yaw_toward(targetAngle, 0x5A8); boo_oscillate(TRUE); - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } void bhv_boo_boss_spawned_bridge_loop(void) { @@ -885,7 +885,7 @@ void bhv_boo_boss_spawned_bridge_loop(void) { // fallthrough case 1: o->oPosY += 8.0f; - PlaySound(SOUND_ENV_ELEVATOR2); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2); if (o->oPosY > targetY) { o->oPosY = targetY; @@ -895,10 +895,10 @@ void bhv_boo_boss_spawned_bridge_loop(void) { break; case 2: if (o->oTimer == 0) { - PlaySound2(SOUND_GENERAL_UNKNOWN4_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN4_LOWPRIO); } - if (func_802A362C(o->oTimer)) { + if (cur_obj_move_up_and_down(o->oTimer)) { o->oAction++; } diff --git a/src/game/behaviors/boo_cage.inc.c b/src/game/behaviors/boo_cage.inc.c index 6cfc8f80..24e4e062 100644 --- a/src/game/behaviors/boo_cage.inc.c +++ b/src/game/behaviors/boo_cage.inc.c @@ -27,16 +27,16 @@ static struct ObjectHitbox sBooCageHitbox = { void bhv_boo_cage_loop(void) { UNUSED s32 unused; - set_object_hitbox(o, &sBooCageHitbox); + obj_set_hitbox(o, &sBooCageHitbox); switch (o->oAction) { case BOO_CAGE_ACT_IN_BOO: // Don't let Mario enter BBH until the boo is killed - obj_become_intangible(); + cur_obj_become_intangible(); // Useless scale. This is also found in the code for BOO_CAGE_ACT_ON_GROUND. // Was the boo cage originally meant to have been shrunk and grow while falling? - obj_scale(1.0f); + cur_obj_scale(1.0f); // If the cage's parent boo is killed, set the action to BOO_CAGE_ACT_FALLING, // give the cage an initial Y velocity of 60 units/frame, and play the puzzle jingle. @@ -46,7 +46,7 @@ void bhv_boo_cage_loop(void) { o->oVelY = 60.0f; play_puzzle_jingle(); } else { - copy_object_pos_and_angle(o, o->parentObj); + obj_copy_pos_and_angle(o, o->parentObj); } break; @@ -57,15 +57,15 @@ void bhv_boo_cage_loop(void) { o->oFaceAngleRoll = 0; // Apply standard physics to the cage. - obj_update_floor_and_walls(); - obj_move_standard(-78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(-78); // Spawn sparkles while the cage falls. spawn_object(o, MODEL_NONE, bhvSparkleSpawn); // When the cage lands/bounces, play a landing/bouncing sound. if (o->oMoveFlags & OBJ_MOVE_LANDED) { - PlaySound2(SOUND_GENERAL_SOFT_LANDING); + cur_obj_play_sound_2(SOUND_GENERAL_SOFT_LANDING); } // Once the cage stops bouncing and settles on the ground, @@ -80,13 +80,13 @@ void bhv_boo_cage_loop(void) { break; case BOO_CAGE_ACT_ON_GROUND: // Allow Mario to enter the cage once it's still on the ground. - obj_become_tangible(); + cur_obj_become_tangible(); // The other useless scale - obj_scale(1.0f); + cur_obj_scale(1.0f); // Set the action to BOO_CAGE_ACT_MARIO_JUMPING_IN when Mario jumps in. - if (are_objects_collided(o, gMarioObject)) { + if (obj_check_if_collided_with_object(o, gMarioObject)) { o->oAction++; } diff --git a/src/game/behaviors/boulder.inc.c b/src/game/behaviors/boulder.inc.c index cc9a712b..e83d9509 100644 --- a/src/game/behaviors/boulder.inc.c +++ b/src/game/behaviors/boulder.inc.c @@ -10,13 +10,13 @@ void bhv_big_boulder_init(void) { o->oBuoyancy = 2.0f; } -void func_802F05DC(void) { +void boulder_act_1(void) { s16 sp1E; sp1E = object_step_without_floor_orient(); if ((sp1E & 0x09) == 0x01 && o->oVelY > 10.0f) { - PlaySound2(SOUND_GENERAL_GRINDEL_ROLL); - func_802A3004(); + cur_obj_play_sound_2(SOUND_GENERAL_GRINDEL_ROLL); + spawn_mist_particles(); } if (o->oForwardVel > 70.0) @@ -27,7 +27,7 @@ void func_802F05DC(void) { } void bhv_big_boulder_loop(void) { - obj_scale(1.5f); + cur_obj_scale(1.5f); o->oGraphYOffset = 270.0f; switch (o->oAction) { case 0: @@ -36,13 +36,13 @@ void bhv_big_boulder_loop(void) { break; case 1: - func_802F05DC(); - func_802EFB84(1.5f); - PlaySound(SOUND_ENV_UNKNOWN2); + boulder_act_1(); + adjust_rolling_face_pitch(1.5f); + cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2); break; } - func_802EFB2C(); + set_rolling_sphere_hitbox(); } void bhv_big_boulder_generator_loop(void) { diff --git a/src/game/behaviors/bouncing_fireball.inc.c b/src/game/behaviors/bouncing_fireball.inc.c index 3b0b718e..a9cb1ed4 100644 --- a/src/game/behaviors/bouncing_fireball.inc.c +++ b/src/game/behaviors/bouncing_fireball.inc.c @@ -2,7 +2,7 @@ void bhv_bouncing_fireball_flame_loop(void) { o->activeFlags |= 0x400; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case 0: if (o->oTimer == 0) { @@ -18,12 +18,12 @@ void bhv_bouncing_fireball_flame_loop(void) { o->oForwardVel = 30.0f; } if (o->oMoveFlags & (0x40 | 0x10 | 0x2) && o->oTimer > 100) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); break; } if (o->oTimer > 300) - mark_object_for_deletion(o); - obj_move_standard(78); + obj_mark_for_deletion(o); + cur_obj_move_standard(78); o->oInteractStatus = 0; } @@ -38,9 +38,9 @@ void bhv_bouncing_fireball_loop(void) { case 1: sp2C = spawn_object(o, MODEL_RED_FLAME, bhvBouncingFireballFlame); sp28 = (10 - o->oTimer) * 0.5; - scale_object_xyz(sp2C, sp28, sp28, sp28); + obj_scale_xyz(sp2C, sp28, sp28, sp28); if (o->oTimer == 0) - make_object_tangible(sp2C); + obj_become_tangible(sp2C); if (o->oTimer > 10) o->oAction++; break; diff --git a/src/game/behaviors/bowling_ball.inc.c b/src/game/behaviors/bowling_ball.inc.c index 00ff8401..b7ec7d1c 100644 --- a/src/game/behaviors/bowling_ball.inc.c +++ b/src/game/behaviors/bowling_ball.inc.c @@ -32,14 +32,14 @@ void bhv_bowling_ball_init(void) { o->oBuoyancy = 2.0f; } -void func_802EDA14(void) { - set_object_hitbox(o, &sBowlingBallHitbox); +void bowling_ball_set_hitbox(void) { + obj_set_hitbox(o, &sBowlingBallHitbox); if (o->oInteractStatus & INT_STATUS_INTERACTED) o->oInteractStatus = 0; } -void func_802EDA6C(void) { +void bowling_ball_set_waypoints(void) { switch (o->oBehParams2ndByte) { case BBALL_BP_STYPE_BOB_UPPER: o->oPathedWaypointsS16 = segmented_to_virtual(bob_seg7_metal_ball_path0); @@ -67,11 +67,11 @@ void bhv_bowling_ball_roll_loop(void) { s16 collisionFlags; s32 sp18; - func_802EDA6C(); + bowling_ball_set_waypoints(); collisionFlags = object_step(); //! Uninitialzed parameter, but the parameter is unused in the called function - sp18 = obj_follow_path(sp18); + sp18 = cur_obj_follow_path(sp18); o->oBowlingBallTargetYaw = o->oPathedTargetYaw; o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oBowlingBallTargetYaw, 0x400); @@ -79,28 +79,28 @@ void bhv_bowling_ball_roll_loop(void) { o->oForwardVel = 70.0; } - func_802EDA14(); + bowling_ball_set_hitbox(); if (sp18 == -1) { if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 7000)) { - func_802A3004(); - func_802AA618(0, 0, 92.0f); + spawn_mist_particles(); + spawn_mist_particles_variable(0, 0, 92.0f); } o->activeFlags = 0; } if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) && (o->oVelY > 5.0f)) - PlaySound2(SOUND_GENERAL_QUIET_POUND1_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1_LOWPRIO); } void bhv_bowling_ball_initializeLoop(void) { s32 sp1c; - func_802EDA6C(); + bowling_ball_set_waypoints(); //! Uninitialzed parameter, but the parameter is unused in the called function - sp1c = obj_follow_path(sp1c); + sp1c = cur_obj_follow_path(sp1c); o->oMoveAngleYaw = o->oPathedTargetYaw; @@ -123,7 +123,7 @@ void bhv_bowling_ball_initializeLoop(void) { case BBALL_BP_STYPE_THI_SMALL: o->oForwardVel = 10.0f; - obj_scale(0.3f); + cur_obj_scale(0.3f); o->oGraphYOffset = 39.0f; break; } @@ -221,9 +221,9 @@ void bhv_bob_pit_bowling_ball_loop(void) { if ((sp1c->normalX == 0) && (sp1c->normalZ == 0)) o->oForwardVel = 28.0f; - func_802EDA14(); + bowling_ball_set_hitbox(); set_camera_shake_from_point(SHAKE_POS_BOWLING_BALL, o->oPosX, o->oPosY, o->oPosZ); - PlaySound(SOUND_ENV_UNKNOWN2); + cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2); set_object_visibility(o, 3000); } @@ -240,19 +240,19 @@ void bhv_free_bowling_ball_init(void) { void bhv_free_bowling_ball_roll_loop(void) { s16 collisionFlags = object_step(); - func_802EDA14(); + bowling_ball_set_hitbox(); if (o->oForwardVel > 10.0f) { set_camera_shake_from_point(SHAKE_POS_BOWLING_BALL, o->oPosX, o->oPosY, o->oPosZ); - PlaySound(SOUND_ENV_UNKNOWN2); + cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2); } if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) && !(collisionFlags & OBJ_COL_FLAGS_LANDED)) - PlaySound2(SOUND_GENERAL_QUIET_POUND1_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1_LOWPRIO); if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)) { o->header.gfx.node.flags |= 0x10; /* bit 4 */ - obj_become_intangible(); + cur_obj_become_intangible(); o->oPosX = o->oHomeX; o->oPosY = o->oHomeY; @@ -270,7 +270,7 @@ void bhv_free_bowling_ball_loop(void) { if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 3000)) { o->oAction = FREE_BBALL_ACT_ROLL; o->header.gfx.node.flags &= ~0x10; /* bit 4 */ - obj_become_tangible(); + cur_obj_become_tangible(); } break; diff --git a/src/game/behaviors/bowser.inc.c b/src/game/behaviors/bowser.inc.c index 2f4fb514..ae4e69d7 100644 --- a/src/game/behaviors/bowser.inc.c +++ b/src/game/behaviors/bowser.inc.c @@ -1,33 +1,33 @@ // bowser.c.inc -void ActionBowserTailAnchor0(void) { +void bowser_tail_anchor_act_0(void) { struct Object *bowser = o->parentObj; - obj_become_tangible(); - obj_scale(1.0f); + cur_obj_become_tangible(); + cur_obj_scale(1.0f); if (bowser->oAction == 19) bowser->oIntangibleTimer = -1; - else if (are_objects_collided(o, gMarioObject)) { + else if (obj_check_if_collided_with_object(o, gMarioObject)) { bowser->oIntangibleTimer = 0; o->oAction = 2; } else bowser->oIntangibleTimer = -1; } -void ActionBowserTailAnchor1(void) { +void bowser_tail_anchor_act_1(void) { if (o->oTimer > 30) o->oAction = 0; } -void ActionBowserTailAnchor2(void) { +void bowser_tail_anchor_act_2(void) { if (o->parentObj->oAction == 19) { o->parentObj->oIntangibleTimer = -1; o->oAction = 0; } - obj_become_intangible(); + cur_obj_become_intangible(); } -void (*sBowserTailAnchorActions[])(void) = { ActionBowserTailAnchor0, ActionBowserTailAnchor1, - ActionBowserTailAnchor2 }; +void (*sBowserTailAnchorActions[])(void) = { bowser_tail_anchor_act_0, bowser_tail_anchor_act_1, + bowser_tail_anchor_act_2 }; s8 D_8032F4FC[] = { 7, 8, 9, 12, 13, 14, 15, 4, 3, 16, 17, 19, 3, 3, 3, 3 }; s16 D_8032F50C[] = { 60, 0 }; s16 D_8032F510[] = { 50, 0 }; @@ -38,7 +38,7 @@ s16 D_8032F520[][3] = { { 1, 10, 40 }, { 0, 0, 74 }, { -1, -10, 114 }, { 1 { -1, 80, 184 }, { 1, 160, 186 }, { -1, -160, 186 }, { 1, 0, 0 }, }; void bhv_bowser_tail_anchor_loop(void) { - obj_call_action_function(sBowserTailAnchorActions); + cur_obj_call_action_function(sBowserTailAnchorActions); o->oParentRelativePosX = 90.0f; if (o->parentObj->oAction == 4) o->parentObj->oIntangibleTimer = -1; @@ -58,7 +58,7 @@ void bhv_bowser_flame_spawn_loop(void) { if (bowser->header.gfx.unk38.curAnim->unk08 == sp30) sp30 = 0; if (sp30 > 45 && sp30 < 85) { - PlaySound(SOUND_AIR_BOWSER_SPIT_FIRE); + cur_obj_play_sound_1(SOUND_AIR_BOWSER_SPIT_FIRE); sp2C = sp1C[5 * sp30]; sp28 = sp1C[5 * sp30 + 2]; o->oPosX = bowser->oPosX + (sp28 * sp20 + sp2C * sp24); @@ -73,7 +73,7 @@ void bhv_bowser_flame_spawn_loop(void) { } void bhv_bowser_body_anchor_loop(void) { - copy_object_pos_and_angle(o, o->parentObj); + obj_copy_pos_and_angle(o, o->parentObj); if (o->parentObj->oAction == 4) { #ifndef VERSION_JP if (o->parentObj->oSubAction == 11) @@ -86,16 +86,16 @@ void bhv_bowser_body_anchor_loop(void) { } else { o->oInteractType = 8; if (o->parentObj->oOpacity < 100) - obj_become_intangible(); + cur_obj_become_intangible(); else - obj_become_tangible(); + cur_obj_become_tangible(); } if (o->parentObj->oHeldState != HELD_FREE) - obj_become_intangible(); + cur_obj_become_intangible(); o->oInteractStatus = 0; } -s32 func_802B38B4(void) { +s32 bowser_spawn_shockwave(void) { struct Object *wave; if (o->oBehParams2ndByte == 2) { wave = spawn_object(o, MODEL_BOWSER_WAVE, bhvBowserShockWave); @@ -105,13 +105,13 @@ s32 func_802B38B4(void) { return 0; } -void func_802B392C(s32 *a) { +void bowser_bounce(s32 *a) { if (o->oMoveFlags & 1) { a[0]++; if (a[0] < 4) { - obj_start_cam_event(o, CAM_EVENT_BOWSER_THROW_BOUNCE); - func_802AA618(0, 0, 60.0f); - PlaySound2(SOUND_OBJ_BOWSER_WALK); + cur_obj_start_cam_event(o, CAM_EVENT_BOWSER_THROW_BOUNCE); + spawn_mist_particles_variable(0, 0, 60.0f); + cur_obj_play_sound_2(SOUND_OBJ_BOWSER_WALK); } } } @@ -120,36 +120,36 @@ void func_802B392C(s32 *a) { #define BITFS (o->oBehParams2ndByte == 1) #define BITS (o->oBehParams2ndByte == 2) -s32 func_802B39B8(void) { - set_obj_animation_and_sound_state(15); - if (obj_check_anim_frame(21)) +s32 bowser_set_anim_look_up_and_walk(void) { + cur_obj_init_animation_with_sound(15); + if (cur_obj_check_anim_frame(21)) o->oForwardVel = 3.0f; - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) return 1; else return 0; } -s32 func_802B3A30(void) { +s32 bowser_set_anim_slow_gait(void) { o->oForwardVel = 3.0f; - set_obj_animation_and_sound_state(13); - if (func_8029F788()) + cur_obj_init_animation_with_sound(13); + if (cur_obj_check_if_near_animation_end()) return 1; else return 0; } -s32 func_802B3A98(void) { - set_obj_animation_and_sound_state(14); - if (obj_check_anim_frame(20)) +s32 bowser_set_anim_look_down(void) { + cur_obj_init_animation_with_sound(14); + if (cur_obj_check_anim_frame(20)) o->oForwardVel = 0.0f; - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) return 1; else return 0; } -void func_802B3B0C(void) { +void bowser_initialize_action(void) { if (o->oBowserUnk88 == 0) o->oAction = 5; else if (o->oBowserUnk88 == 1) @@ -160,28 +160,28 @@ void func_802B3B0C(void) { o->oAction = 0; } -void ActionBowser5() // not much +void bowser_act_text_wait() // not much { o->oForwardVel = 0.0f; - set_obj_animation_and_sound_state(12); - func_802B3B0C(); + cur_obj_init_animation_with_sound(12); + bowser_initialize_action(); } -void ActionBowser6(void) { +void bowser_act_intro_walk(void) { if (o->oSubAction == 0) { - if (func_802B39B8()) + if (bowser_set_anim_look_up_and_walk()) o->oSubAction++; } else if (o->oSubAction == 1) { - if (func_802B3A30()) + if (bowser_set_anim_slow_gait()) o->oSubAction++; - } else if (func_802B3A98()) { + } else if (bowser_set_anim_look_down()) { if (o->oBowserUnk88 == 1) o->oBowserUnk88 = 0; - func_802B3B0C(); + bowser_initialize_action(); } } -static void Unknown802B3CCC(void) // unused +static void bowser_debug_actions(void) // unused { if (gDebugInfo[5][1] != 0) { o->oAction = D_8032F4FC[gDebugInfo[5][2] & 0xf]; @@ -189,7 +189,7 @@ static void Unknown802B3CCC(void) // unused } } -void func_802B3D24(void) { +void bowser_bitdw_act_controller(void) { f32 rand = RandomFloat(); if (o->oBowserUnk110 == 0) { if (o->oBowserUnkF4 & 2) { @@ -220,7 +220,7 @@ void func_802B3D24(void) { } } -void func_802B3E44(void) { +void bowser_bitfs_act_controller(void) { f32 rand = RandomFloat(); if (o->oBowserUnk110 == 0) { if (o->oBowserUnkF4 & 2) { @@ -246,7 +246,7 @@ void func_802B3E44(void) { } } -void func_802B3FDC(void) { +void bowser_general_bits_act_controller(void) { f32 rand = RandomFloat(); if (o->oBowserUnkF4 & 2) { if (o->oDistanceToMario < 1000.0f) { @@ -264,17 +264,17 @@ void func_802B3FDC(void) { o->oAction = 14; } -void func_802B4124(void) { +void bowser_set_act_jump(void) { o->oAction = 13; } -void func_802B4144(void) { +void bowser_bits_act_controller(void) { switch (o->oBowserUnk110) { case 0: if (o->oBowserUnk106 == 0) - func_802B3FDC(); + bowser_general_bits_act_controller(); else - func_802B4124(); + bowser_set_act_jump(); o->oBowserUnk110 = 1; break; case 1: @@ -285,7 +285,7 @@ void func_802B4144(void) { } #ifndef VERSION_JP -void func_u_802B4AF4(void) { +void bowser_reset_fallen_off_stage(void) { if (o->oVelY < 0 && o->oPosY < (o->oHomeY - 300.0f)) { o->oPosX = o->oPosZ = 0; o->oPosY = o->oHomeY + 2000.0f; @@ -295,38 +295,38 @@ void func_u_802B4AF4(void) { } #endif -void ActionBowser18() // unused? +void bowser_act_unused_slow_walk() // unused? { - if (func_802A4AB0(12)) + if (cur_obj_init_animation_and_check_if_near_end(12)) o->oAction = 0; } -void ActionBowser0() // only lasts one frame +void bowser_act_default() // only lasts one frame { o->oBowserEyesShut = 0; - set_obj_animation_and_sound_state(12); + cur_obj_init_animation_with_sound(12); // stop him still o->oAngleVelYaw = 0; o->oForwardVel = 0.0f; o->oVelY = 0.0f; if (BITDW) - func_802B3D24(); + bowser_bitdw_act_controller(); else if (BITFS) - func_802B3E44(); + bowser_bitfs_act_controller(); else - func_802B4144(); + bowser_bits_act_controller(); // Action 14 commonly follows } -void ActionBowser15(void) { +void bowser_act_breath_fire(void) { o->oForwardVel = 0.0f; if (o->oTimer == 0) - PlaySound2(SOUND_OBJ_BOWSER_INHALING); - if (func_802A4AB0(6)) + cur_obj_play_sound_2(SOUND_OBJ_BOWSER_INHALING); + if (cur_obj_init_animation_and_check_if_near_end(6)) o->oAction = 0; } -void ActionBowser14() // turn towards Mario +void bowser_act_walk_to_mario() // turn towards Mario { UNUSED s32 facing; // is Bowser facing Mario? s16 turnSpeed; @@ -339,13 +339,13 @@ void ActionBowser14() // turn towards Mario turnSpeed = 0x300; else turnSpeed = 0x200; - facing = obj_rotate_yaw_toward(o->oAngleToMario, turnSpeed); + facing = cur_obj_rotate_yaw_toward(o->oAngleToMario, turnSpeed); if (o->oSubAction == 0) { o->oBowserUnkF8 = 0; - if (func_802B39B8()) + if (bowser_set_anim_look_up_and_walk()) o->oSubAction++; } else if (o->oSubAction == 1) { - if (func_802B3A30()) { + if (bowser_set_anim_slow_gait()) { o->oBowserUnkF8++; if (o->oBowserUnkF4 & 0x20000) { if (o->oBowserUnkF8 > 4) @@ -353,18 +353,18 @@ void ActionBowser14() // turn towards Mario } else if (angleFromMario < 0x2000) o->oSubAction++; } - } else if (func_802B3A98()) + } else if (bowser_set_anim_look_down()) o->oAction = 0; } -void ActionBowser16(void) { +void bowser_act_teleport(void) { switch (o->oSubAction) { case 0: - obj_become_intangible(); + cur_obj_become_intangible(); o->oBowserUnk1AC = 0; o->oBowserUnkF8 = 30; if (o->oTimer == 0) - PlaySound2(SOUND_OBJ2_BOWSER_TELEPORT); + cur_obj_play_sound_2(SOUND_OBJ2_BOWSER_TELEPORT); if (o->oOpacity == 0) { o->oSubAction++; o->oMoveAngleYaw = o->oAngleToMario; @@ -381,7 +381,7 @@ void ActionBowser16(void) { if (o->oDistanceToMario > 500.0f) { o->oSubAction = 2; o->oMoveAngleYaw = o->oAngleToMario; // large change in angle? - PlaySound2(SOUND_OBJ2_BOWSER_TELEPORT); + cur_obj_play_sound_2(SOUND_OBJ2_BOWSER_TELEPORT); } break; case 2: @@ -389,29 +389,29 @@ void ActionBowser16(void) { o->oBowserUnk1AC = 0xFF; if (o->oOpacity == 0xFF) o->oAction = 0; - obj_become_tangible(); + cur_obj_become_tangible(); break; } } -void ActionBowser8(void) // only in sky +void bowser_act_spit_fire_into_sky(void) // only in sky { s32 frame; - set_obj_animation_and_sound_state(11); + cur_obj_init_animation_with_sound(11); frame = o->header.gfx.unk38.animFrame; if (frame > 24 && frame < 36) { - PlaySound(SOUND_AIR_BOWSER_SPIT_FIRE); + cur_obj_play_sound_1(SOUND_AIR_BOWSER_SPIT_FIRE); if (frame == 35) spawn_object_relative(1, 0, 0x190, 0x64, o, MODEL_RED_FLAME, bhvBlueBowserFlame); else spawn_object_relative(0, 0, 0x190, 0x64, o, MODEL_RED_FLAME, bhvBlueBowserFlame); } - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) o->oAction = 0; o->oBowserUnkF4 |= 0x20000; } -void ActionBowser12(void) { +void bowser_act_hit_mine(void) { if (o->oTimer == 0) { o->oForwardVel = -400.0f; o->oVelY = 100.0f; @@ -419,21 +419,21 @@ void ActionBowser12(void) { o->oBowserEyesShut = 1; } if (o->oSubAction == 0) { - set_obj_animation_and_sound_state(25); + cur_obj_init_animation_with_sound(25); o->oSubAction++; o->oBowserUnkF8 = 0; } else if (o->oSubAction == 1) { - set_obj_animation_and_sound_state(25); - func_8029F728(); - func_802B392C(&o->oBowserUnkF8); + cur_obj_init_animation_with_sound(25); + cur_obj_extend_animation_if_at_end(); + bowser_bounce(&o->oBowserUnkF8); if ((o->oBowserUnkF8 > 2)) { - set_obj_animation_and_sound_state(26); + cur_obj_init_animation_with_sound(26); o->oVelY = 0.0f; o->oForwardVel = 0.0f; o->oSubAction++; } } else if (o->oSubAction == 2) { - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { if (o->oHealth == 1) o->oAction = 3; else @@ -444,22 +444,22 @@ void ActionBowser12(void) { } } -s32 func_802B4A44(void) { - set_obj_animation_and_sound_state(9); - if (obj_check_anim_frame(11)) +s32 bowser_set_anim_in_air(void) { + cur_obj_init_animation_with_sound(9); + if (cur_obj_check_anim_frame(11)) return 1; else return 0; } -s32 func_802B4A94(void) { +s32 bowser_land(void) { if (o->oMoveFlags & 1) { o->oForwardVel = 0; o->oVelY = 0; - func_802AA618(0, 0, 60.0f); - set_obj_animation_and_sound_state(8); + spawn_mist_particles_variable(0, 0, 60.0f); + cur_obj_init_animation_with_sound(8); o->header.gfx.unk38.animFrame = 0; - obj_start_cam_event(o, CAM_EVENT_BOWSER_JUMP); + cur_obj_start_cam_event(o, CAM_EVENT_BOWSER_JUMP); if (BITDW) { if (o->oDistanceToMario < 850.0f) gMarioObject->oInteractStatus |= INTERACT_GRABBABLE; @@ -471,112 +471,102 @@ s32 func_802B4A94(void) { return 0; } -void func_802B4BA4(void) { +void bowser_short_second_hop(void) { if (BITS && o->oBowserUnkF4 & 0x10000) if (o->oBowserDistToCentre > 1000.0f) o->oForwardVel = 60.0f; } -void ActionBowser13(void) { +void bowser_act_jump(void) { UNUSED s32 unused; if (o->oSubAction == 0) { - if (func_802B4A44()) { + if (bowser_set_anim_in_air()) { if (BITS && o->oBowserUnkF4 & 0x10000) o->oVelY = 70.0f; else o->oVelY = 80.0f; o->oBowserUnkF8 = 0; - func_802B4BA4(); + bowser_short_second_hop(); o->oSubAction++; } } else if (o->oSubAction == 1) { #ifndef VERSION_JP if (o->oBehParams2ndByte == 2 && o->oBowserUnkF4 & 0x10000) - func_u_802B4AF4(); - if (func_802B4A94()) { - o->oBowserUnkF4 &= 0xfffeffff; - o->oForwardVel = 0.0f; - o->oSubAction++; - func_802B38B4(); - if (BITFS) - o->oAction = 19; - } else { - } -#else - if (func_802B4A94()) { - o->oBowserUnkF4 &= 0xfffeffff; - o->oForwardVel = 0.0f; - o->oSubAction++; - func_802B38B4(); - if (BITFS) - o->oAction = 19; - } else { - } + bowser_reset_fallen_off_stage(); #endif - } else if (func_8029F788()) + if (bowser_land()) { + o->oBowserUnkF4 &= ~0x10000; + o->oForwardVel = 0.0f; + o->oSubAction++; + bowser_spawn_shockwave(); + if (BITFS) + o->oAction = 19; + } else { + } + } else if (cur_obj_check_if_near_animation_end()) o->oAction = 0; } -void ActionBowser17(void) { +void bowser_act_jump_towards_mario(void) { f32 sp1C = D_8032F50C[0]; f32 sp18 = D_8032F510[0]; if (o->oSubAction == 0) { - if (func_802B4A44()) { + if (bowser_set_anim_in_air()) { o->oVelY = sp1C; o->oForwardVel = sp18; o->oBowserUnkF8 = 0; o->oSubAction++; } } else if (o->oSubAction == 1) { - if (func_802B4A94()) + if (bowser_land()) o->oSubAction++; - } else if (func_8029F788()) + } else if (cur_obj_check_if_near_animation_end()) o->oAction = 0; } -void ActionBowser10(void) { +void bowser_act_hit_edge(void) { o->oForwardVel = 0.0f; if (o->oTimer == 0) o->oBowserUnkF8 = 0; switch (o->oSubAction) { case 0: - set_obj_animation_and_sound_state(23); - if (func_8029F788()) + cur_obj_init_animation_with_sound(23); + if (cur_obj_check_if_near_animation_end()) o->oBowserUnkF8++; if (o->oBowserUnkF8 > 0) o->oSubAction++; break; case 1: - set_obj_animation_and_sound_state(24); - if (func_8029F788()) + cur_obj_init_animation_with_sound(24); + if (cur_obj_check_if_near_animation_end()) o->oAction = 11; break; } } -void ActionBowser9(void) { +void bowser_act_spit_fire_onto_floor(void) { if (gHudDisplay.wedges < 4) o->oBowserUnk108 = 3; else o->oBowserUnk108 = RandomFloat() * 3.0f + 1.0f; - set_obj_animation_and_sound_state(22); - if (obj_check_anim_frame(5)) + cur_obj_init_animation_with_sound(22); + if (cur_obj_check_anim_frame(5)) obj_spit_fire(0, 200, 180, 7.0f, MODEL_RED_FLAME, 30.0f, 10.0f, 0x1000); - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) o->oSubAction++; if (o->oSubAction >= o->oBowserUnk108) o->oAction = 0; } -s32 func_802B5108(s32 a0, s16 a1) { +s32 bowser_turn_on_timer(s32 a0, s16 a1) { if (o->oSubAction == 0) { - if (func_802A4AB0(15)) + if (cur_obj_init_animation_and_check_if_near_end(15)) o->oSubAction++; } else if (o->oSubAction == 1) { - if (func_802A4AB0(14)) + if (cur_obj_init_animation_and_check_if_near_end(14)) o->oSubAction++; } else - set_obj_animation_and_sound_state(12); + cur_obj_init_animation_with_sound(12); o->oForwardVel = 0.0f; o->oMoveAngleYaw += a1; if (o->oTimer >= a0) @@ -585,24 +575,24 @@ s32 func_802B5108(s32 a0, s16 a1) { return 0; } -void ActionBowser11(void) { - if (func_802B5108(63, 0x200)) +void bowser_act_turn_from_edge(void) { + if (bowser_turn_on_timer(63, 0x200)) o->oAction = 0; } -void ActionBowser7(void) { +void bowser_act_charge_mario(void) { s32 sp34; if (o->oTimer == 0) o->oForwardVel = 0.0f; switch (o->oSubAction) { case 0: o->oBowserUnkF8 = 0; - if (func_802A4AB0(18)) + if (cur_obj_init_animation_and_check_if_near_end(18)) o->oSubAction = 1; break; case 1: o->oForwardVel = 50.0f; - if (func_802A4AB0(0x13) != 0) { + if (cur_obj_init_animation_and_check_if_near_end(0x13) != 0) { o->oBowserUnkF8++; if (o->oBowserUnkF8 >= 6) o->oSubAction = 3; @@ -610,22 +600,22 @@ void ActionBowser7(void) { if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) > 0x2000) o->oSubAction = 3; } - obj_rotate_yaw_toward(o->oAngleToMario, 0x200); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200); break; case 3: o->oBowserUnkF8 = 0; - set_obj_animation_and_sound_state(21); + cur_obj_init_animation_with_sound(21); spawn_object_relative_with_scale(0, 100, -50, 0, 3.0f, o, MODEL_SMOKE, bhvWhitePuffSmoke2); spawn_object_relative_with_scale(0, -100, -50, 0, 3.0f, o, MODEL_SMOKE, bhvWhitePuffSmoke2); if (approach_f32_signed(&o->oForwardVel, 0, -1.0f)) o->oSubAction = 2; - func_8029F728(); + cur_obj_extend_animation_if_at_end(); break; case 2: o->oForwardVel = 0.0f; - set_obj_animation_and_sound_state(20); - if (func_8029F788()) { + cur_obj_init_animation_with_sound(20); + if (cur_obj_check_if_near_animation_end()) { if (BITS) sp34 = 10; else @@ -634,17 +624,17 @@ void ActionBowser7(void) { o->oAction = 0; o->oBowserUnkF8++; } - func_8029F728(); + cur_obj_extend_animation_if_at_end(); break; } if (o->oMoveFlags & 0x400) o->oAction = 10; } -s32 func_802B5588(void) { +s32 bowser_check_hit_mine(void) { struct Object *mine; f32 sp18; - mine = obj_find_nearest_object_with_behavior(bhvBowserBomb, &sp18); + mine = cur_obj_find_nearest_object_with_behavior(bhvBowserBomb, &sp18); if (mine != NULL && sp18 < 800.0f) { mine->oInteractStatus |= INTERACT_MR_BLIZZARD; return 1; @@ -652,21 +642,21 @@ s32 func_802B5588(void) { return 0; } -void ActionBowser1(void) // unused? +void bowser_act_thrown_dropped(void) { UNUSED s32 unused; if (o->oTimer < 2) o->oBowserUnkF8 = 0; if (o->oSubAction == 0) { - set_obj_animation_and_sound_state(2); - func_802B392C(&o->oBowserUnkF8); + cur_obj_init_animation_with_sound(2); + bowser_bounce(&o->oBowserUnkF8); if (o->oMoveFlags & 2) { o->oForwardVel = 0.0f; o->oSubAction++; } - } else if (func_802A4AB0(0)) + } else if (cur_obj_init_animation_and_check_if_near_end(0)) o->oAction = 0; - if (func_802B5588()) { + if (bowser_check_hit_mine()) { o->oHealth--; if (o->oHealth <= 0) o->oAction = 4; @@ -675,7 +665,7 @@ void ActionBowser1(void) // unused? } } -void func_802B5738(void) { +void bowser_set_goal_invisible(void) { o->oBowserUnk1AC = 0; if (o->oOpacity == 0) { o->oForwardVel = 0.0f; @@ -684,11 +674,11 @@ void func_802B5738(void) { } } -void ActionBowser2(void) { +void bowser_act_jump_onto_stage(void) { s32 sp2C; UNUSED s32 unused; - s8 *sp24 = (s8 *) o->oFloor; - if (sp24 != NULL && sp24[4] & 1) + struct Surface *sp24 = o->oFloor; + if (sp24 != NULL && sp24->flags & 1) sp2C = 1; else sp2C = 0; @@ -703,18 +693,18 @@ void ActionBowser2(void) { o->oFaceAngleRoll += 0x800; if (!(o->oFaceAnglePitch & 0xFFFF)) o->oSubAction++; - func_802B5738(); + bowser_set_goal_invisible(); break; case 1: - set_obj_animation_and_sound_state(9); - if (obj_check_anim_frame(11)) { + cur_obj_init_animation_with_sound(9); + if (cur_obj_check_anim_frame(11)) { o->oMoveAngleYaw = o->oBowserAngleToCentre; o->oVelY = 150.0f; o->oBowserUnk1AC = 0xFF; o->oBowserUnkF8 = 0; o->oSubAction++; } else - func_802B5738(); + bowser_set_goal_invisible(); break; case 2: if (o->oPosY > o->oHomeY) { @@ -723,22 +713,22 @@ void ActionBowser2(void) { if (absf(o->oFloorHeight - o->oHomeY) < 100.0f) approach_f32_signed(&o->oForwardVel, 0, -5.0f); else - obj_forward_vel_approach_upward(150.0f, 2.0f); + cur_obj_forward_vel_approach_upward(150.0f, 2.0f); } else - obj_forward_vel_approach_upward(150.0f, 2.0f); + cur_obj_forward_vel_approach_upward(150.0f, 2.0f); } - if (func_802B4A94()) { + if (bowser_land()) { o->oDragStrength = 10.0f; o->oSubAction++; if (sp2C == 0) - func_802B38B4(); + bowser_spawn_shockwave(); else if (BITS) o->oAction = 13; if (BITFS) o->oAction = 19; } #ifndef VERSION_JP - func_u_802B4AF4(); + bowser_reset_fallen_off_stage(); #else if (o->oVelY < 0.0f && o->oPosY < o->oHomeY - 300.0f) { o->oPosZ = 0.0f, o->oPosX = o->oPosZ; @@ -748,35 +738,35 @@ void ActionBowser2(void) { #endif break; case 3: - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oAction = 0; o->oBowserUnkF4 &= ~0x10000; - func_8029F728(); + cur_obj_extend_animation_if_at_end(); } break; } print_debug_bottom_up("sp %d", o->oForwardVel); } -void ActionBowser3(void) { - if (item_in_array(o->oTimer, D_8032F514)) - PlaySound2(SOUND_OBJ_BOWSER_WALK); - if (func_802A4AB0(10)) +void bowser_act_dance(void) { + if (is_item_in_array(o->oTimer, D_8032F514)) + cur_obj_play_sound_2(SOUND_OBJ_BOWSER_WALK); + if (cur_obj_init_animation_and_check_if_near_end(10)) o->oAction = 0; } -void func_802B5C78(void) { +void bowser_spawn_grand_star_key(void) { if (BITS) gSecondCameraFocus = spawn_object(o, MODEL_STAR, bhvGrandStar); else { gSecondCameraFocus = spawn_object(o, MODEL_BOWSER_KEY, bhvBowserKey); - PlaySound2(SOUND_GENERAL2_BOWSER_KEY); + cur_obj_play_sound_2(SOUND_GENERAL2_BOWSER_KEY); } gSecondCameraFocus->oAngleVelYaw = o->oAngleVelYaw; } -void func_802B5D18(void) { - set_obj_animation_and_sound_state(16); +void bowser_fly_back_dead(void) { + cur_obj_init_animation_with_sound(16); if (BITS) o->oForwardVel = -400.0f; else @@ -787,29 +777,29 @@ void func_802B5D18(void) { o->oSubAction++; } -void func_802B5DD8(void) { +void bowser_dead_bounce(void) { o->oBowserEyesShut = 1; - func_802B392C(&o->oBowserUnkF8); + bowser_bounce(&o->oBowserUnkF8); if (o->oMoveFlags & 1) - PlaySound2(SOUND_OBJ_BOWSER_WALK); + cur_obj_play_sound_2(SOUND_OBJ_BOWSER_WALK); if (o->oMoveFlags & 2) { o->oForwardVel = 0.0f; o->oSubAction++; } } -s32 func_802B5E7C(void) { +s32 bowser_dead_wait_for_mario(void) { s32 ret = 0; - obj_become_intangible(); - if (func_802A4AB0(17) && o->oDistanceToMario < 700.0f + cur_obj_become_intangible(); + if (cur_obj_init_animation_and_check_if_near_end(17) && o->oDistanceToMario < 700.0f && abs_angle_diff(gMarioObject->oMoveAngleYaw, o->oAngleToMario) > 0x6000) ret = 1; - func_8029F728(); + cur_obj_extend_animation_if_at_end(); o->oBowserUnkF8 = 0; return ret; } -s32 func_802B5F20(void) { +s32 bowser_dead_twirl_into_trophy(void) { s32 ret = 0; if (o->header.gfx.scale[0] < 0.8) o->oAngleVelYaw += 0x80; @@ -829,37 +819,37 @@ s32 func_802B5F20(void) { return ret; } -void func_802B60B8(void) { - obj_scale(0); +void bowser_dead_hide(void) { + cur_obj_scale(0); o->oForwardVel = 0; o->oVelY = 0; o->oGravity = 0; } -s32 func_802B6120(void) { +s32 bowser_dead_not_bits_end(void) { s32 ret = 0; if (o->oBowserUnkF8 < 2) { if (o->oBowserUnkF8 == 0) { func_8031FFB4(0, 60, 40); o->oBowserUnkF8++; } - if (obj_update_dialog(2, 18, sBowserDefeatedDialogText[o->oBehParams2ndByte], 0)) { + if (cur_obj_update_dialog(2, 18, sBowserDefeatedDialogText[o->oBehParams2ndByte], 0)) { o->oBowserUnkF8++; - PlaySound2(SOUND_GENERAL2_BOWSER_EXPLODE); + cur_obj_play_sound_2(SOUND_GENERAL2_BOWSER_EXPLODE); sequence_player_unlower(0, 60); sequence_player_fade_out(0, 1); } - } else if (func_802B5F20()) { - func_802B60B8(); + } else if (bowser_dead_twirl_into_trophy()) { + bowser_dead_hide(); spawn_triangle_break_particles(20, 116, 1.0f, 0); - func_802B5C78(); + bowser_spawn_grand_star_key(); set_mario_npc_dialog(0); ret = 1; } return ret; } -s32 func_802B6254(void) { +s32 bowser_dead_bits_end(void) { UNUSED s32 unused; s32 ret = 0; s32 dialogID; @@ -872,32 +862,32 @@ s32 func_802B6254(void) { func_8031FFB4(0, 60, 40); o->oBowserUnkF8++; } - if (obj_update_dialog(2, 18, dialogID, 0)) { - obj_set_model(MODEL_BOWSER2); + if (cur_obj_update_dialog(2, 18, dialogID, 0)) { + cur_obj_set_model(MODEL_BOWSER2); sequence_player_unlower(0, 60); sequence_player_fade_out(0, 1); - func_802B5C78(); + bowser_spawn_grand_star_key(); o->oBowserUnkF8++; } } else if (o->oOpacity > 4) o->oOpacity -= 4; else { - func_802B60B8(); + bowser_dead_hide(); ret = 1; } return ret; } -void ActionBowser4(void) { +void bowser_act_dead(void) { switch (o->oSubAction) { case 0: - func_802B5D18(); + bowser_fly_back_dead(); break; case 1: - func_802B5DD8(); + bowser_dead_bounce(); break; case 2: - if (func_802B5E7C()) { + if (bowser_dead_wait_for_mario()) { o->oBowserUnkF8 = 0; if (BITS) o->oSubAction = 10; @@ -908,13 +898,13 @@ void ActionBowser4(void) { } break; case 3: - if (func_802B6120()) + if (bowser_dead_not_bits_end()) o->oSubAction++; break; case 4: break; case 10: - if (func_802B6254()) + if (bowser_dead_bits_end()) o->oSubAction++; break; case 11: @@ -922,15 +912,15 @@ void ActionBowser4(void) { } } -void func_802B64E8(struct Object *bowser, s16 a1) { +void bowser_tilt_platform(struct Object *platform, s16 a1) { s16 angle; angle = o->oBowserAngleToCentre + 0x8000; - bowser->oAngleVelPitch = coss(angle) * a1; - bowser->oAngleVelRoll = -sins(angle) * a1; + platform->oAngleVelPitch = coss(angle) * a1; + platform->oAngleVelRoll = -sins(angle) * a1; } -void ActionBowser19(void) { - struct Object *platform = obj_nearest_object_with_behavior(bhvTiltingBowserLavaPlatform); +void bowser_act_ride_tilting_platform(void) { + struct Object *platform = cur_obj_nearest_object_with_behavior(bhvTiltingBowserLavaPlatform); UNUSED s16 sp2A = o->oBowserAngleToCentre + 0x8000; s16 sp28; UNUSED s32 unused; @@ -948,7 +938,7 @@ void ActionBowser19(void) { sp28 = (D_8032F520[i][2] - o->oTimer - 1) * sp28; else sp28 = (o->oTimer - D_8032F520[i - 1][2]) * sp28; - func_802B64E8(platform, sp28); + bowser_tilt_platform(platform, sp28); if (sp28 != 0) play_sound(SOUND_ENV_UNKNOWN4, platform->header.gfx.cameraToObject); sp1C = 0; @@ -964,10 +954,10 @@ void ActionBowser19(void) { platform->oFaceAngleRoll = 0; } } - func_8029F728(); + cur_obj_extend_animation_if_at_end(); } -s32 func_802B67C4(void) // bowser off stage? +s32 bowser_check_fallen_off_stage(void) // bowser off stage? { if (o->oAction != 2 && o->oAction != 19) { if (o->oPosY < o->oHomeY - 1000.0f) @@ -982,11 +972,11 @@ s32 func_802B67C4(void) // bowser off stage? return 0; } -void (*sBowserActions[])(void) = { ActionBowser0, ActionBowser1, ActionBowser2, ActionBowser3, - ActionBowser4, ActionBowser5, ActionBowser6, ActionBowser7, - ActionBowser8, ActionBowser9, ActionBowser10, ActionBowser11, - ActionBowser12, ActionBowser13, ActionBowser14, ActionBowser15, - ActionBowser16, ActionBowser17, ActionBowser18, ActionBowser19 }; +void (*sBowserActions[])(void) = { bowser_act_default, bowser_act_thrown_dropped, bowser_act_jump_onto_stage, bowser_act_dance, + bowser_act_dead, bowser_act_text_wait, bowser_act_intro_walk, bowser_act_charge_mario, + bowser_act_spit_fire_into_sky, bowser_act_spit_fire_onto_floor, bowser_act_hit_edge, bowser_act_turn_from_edge, + bowser_act_hit_mine, bowser_act_jump, bowser_act_walk_to_mario, bowser_act_breath_fire, + bowser_act_teleport, bowser_act_jump_towards_mario, bowser_act_unused_slow_walk, bowser_act_ride_tilting_platform }; struct SoundState D_8032F5B8[] = { { 0, 0, 0, NO_SOUND }, { 0, 0, 0, NO_SOUND }, { 0, 0, 0, NO_SOUND }, @@ -1038,17 +1028,17 @@ struct Struct8032F698 D_8032F698[] = { { NULL, 0, 0, 0, 0 }, { bowser_3_seg7_collision_07004FB4, 800, -1000, -31744, 0 }, { bowser_3_seg7_collision_07005038, -800, -1000, 31744, 0 } }; -void func_802B688C(void) { +void bowser_free_update(void) { struct Surface *floor; struct Object *platform; UNUSED f32 floorHeight; if ((platform = o->platform) != NULL) apply_platform_displacement(0, platform); o->oBowserUnk10E = 0; - obj_update_floor_and_walls(); - obj_call_action_function(sBowserActions); - obj_move_standard(-78); - if (func_802B67C4()) + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sBowserActions); + cur_obj_move_standard(-78); + if (bowser_check_fallen_off_stage()) o->oAction = 2; // bowser go home? floorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor); if ((floor != NULL) && (floor->object != 0)) @@ -1058,18 +1048,18 @@ void func_802B688C(void) { exec_anim_sound_state(D_8032F5B8); } -void func_802B697C(void) { +void bowser_held_update(void) { o->oBowserUnkF4 &= ~0x20000; - obj_become_intangible(); + cur_obj_become_intangible(); switch (o->oBowserUnk10E) { case 0: - PlaySound2(SOUND_OBJ_BOWSER_TAIL_PICKUP); - func_8029FA5C(3, 1); + cur_obj_play_sound_2(SOUND_OBJ_BOWSER_TAIL_PICKUP); + cur_obj_unrender_and_reset_state(3, 1); o->oBowserUnk10E++; break; case 1: - if (func_8029F788()) { - set_obj_animation_and_sound_state(2); + if (cur_obj_check_if_near_animation_end()) { + cur_obj_init_animation_with_sound(2); o->oBowserUnk10E++; } break; @@ -1082,10 +1072,10 @@ void func_802B697C(void) { o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw; } -void func_802B6AC0(void) { +void bowser_thrown_dropped_update(void) { f32 sp1C; o->oBowserUnk10E = 0; - obj_get_thrown_or_placed(1.0f, 1.0f, 1); + cur_obj_get_thrown_or_placed(1.0f, 1.0f, 1); sp1C = o->oBowserHeldAngleVelYaw / 3000.0 * 70.0f; if (sp1C < 0.0f) sp1C = -sp1C; @@ -1093,7 +1083,7 @@ void func_802B6AC0(void) { sp1C *= 2.5; // > 90 => get bigger? o->oForwardVel = coss(o->oBowserHeldAnglePitch) * sp1C; o->oVelY = -sins(o->oBowserHeldAnglePitch) * sp1C; - obj_become_intangible(); + cur_obj_become_intangible(); o->prevObj->oAction = 1; // not sure what prevObj is o->prevObj->oTimer = 0; o->prevObj->oSubAction = 0; @@ -1120,19 +1110,19 @@ void bhv_bowser_loop(void) { o->oBowserUnkF4 |= 8; switch (o->oHeldState) { case HELD_FREE: - func_802B688C(); + bowser_free_update(); break; case HELD_HELD: - func_802B697C(); + bowser_held_update(); break; case HELD_THROWN: - func_802B6AC0(); + bowser_thrown_dropped_update(); break; case HELD_DROPPED: - func_802B6AC0(); + bowser_thrown_dropped_update(); break; } - obj_align_gfx_with_floor(); + cur_obj_align_gfx_with_floor(); if (o->oAction != 4) if (o->oBowserUnk1AC != o->oOpacity) { if (o->oBowserUnk1AC > o->oOpacity) { @@ -1161,7 +1151,7 @@ void bhv_bowser_init(void) { o->oBehParams2ndByte = level; o->oBowserUnk1B2 = D_8032F690[level]; o->oHealth = D_8032F694[level]; - obj_start_cam_event(o, CAM_EVENT_BOWSER_INIT); + cur_obj_start_cam_event(o, CAM_EVENT_BOWSER_INIT); o->oAction = 5; o->oBowserUnk1AE = 0; o->oBowserEyesShut = 0; @@ -1171,22 +1161,22 @@ void bhv_bowser_init(void) { #undef BITFS #undef BITS -Gfx *Geo18_802B798C(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) { +Gfx *geo_update_body_rot_from_parent(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) { Mat4 sp20; struct Object *sp1C; if (run == TRUE) { sp1C = (struct Object *) gCurGraphNodeObject; if (sp1C->prevObj != NULL) { - func_8029D704(sp20, mtx, gCurGraphNodeCamera->matrixPtr); - func_8029D558(sp20, sp1C->prevObj); - func_8029EA0C(sp1C->prevObj); + create_transformation_from_matrices(sp20, mtx, gCurGraphNodeCamera->matrixPtr); + obj_update_pos_from_parent_transformation(sp20, sp1C->prevObj); + obj_set_gfx_pos_from_pos(sp1C->prevObj); } } return NULL; } -void func_802B70C8(struct Object *a0, struct GraphNodeSwitchCase *switchCase) { +void bowser_open_eye_switch(struct Object *a0, struct GraphNodeSwitchCase *switchCase) { s32 sp1C; s16 sp1A; sp1A = abs_angle_diff(a0->oMoveAngleYaw, a0->oAngleToMario); @@ -1257,7 +1247,7 @@ Gfx *geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) { obj = gCurGraphNodeHeldObject->objNode; switch (sp36 = obj->oBowserEyesShut) { case 0: // eyes open, handle eye looking direction - func_802B70C8(obj, switchCase); + bowser_open_eye_switch(obj, switchCase); break; case 1: // eyes closed, blinking switchCase->selectedCase = 2; @@ -1268,7 +1258,7 @@ Gfx *geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) { return NULL; } -Gfx *Geo18_802B7D44(s32 a0, struct GraphNode *node, UNUSED s32 a2) { +Gfx *geo_bits_bowser_coloring(s32 a0, struct GraphNode *node, UNUSED s32 a2) { Gfx *sp2C = NULL; Gfx *sp28; struct Object *sp24; @@ -1293,14 +1283,14 @@ Gfx *Geo18_802B7D44(s32 a0, struct GraphNode *node, UNUSED s32 a2) { return sp2C; } -void ActionFallingBowserPlatform0(void) { - o->oPlatformUnkF8 = obj_nearest_object_with_behavior(bhvBowser); - set_object_collision_data(o, D_8032F698[o->oBehParams2ndByte].unk0); +void falling_bowser_plat_act_0(void) { + o->oPlatformUnkF8 = cur_obj_nearest_object_with_behavior(bhvBowser); + obj_set_collision_data(o, D_8032F698[o->oBehParams2ndByte].unk0); if (o->oPlatformUnkF8 != 0) o->oAction = 1; } -void ActionFallingBowserPlatform1(void) { +void falling_bowser_plat_act_1(void) { UNUSED s32 unused; struct Object *sp0 = o->oPlatformUnkF8; if (sp0->platform == o) @@ -1317,13 +1307,13 @@ void ActionFallingBowserPlatform1(void) { } } -void ActionFallingBowserPlatform2(void) { +void falling_bowser_plat_act_2(void) { Vec3f sp24; s16 sp22; f32 sp1C; UNUSED struct Object *sp18 = o->oPlatformUnkF8; if (o->oTimer == 0 || o->oTimer == 22) - PlaySound2(SOUND_GENERAL_BOWSER_PLATFORM_2); + cur_obj_play_sound_2(SOUND_GENERAL_BOWSER_PLATFORM_2); if (o->oTimer < 22) { set_environmental_camera_shake(SHAKE_ENV_FALLING_BITS_PLAT); o->oVelY = 8.0f; @@ -1333,24 +1323,24 @@ void ActionFallingBowserPlatform2(void) { if ((o->oTimer & 1) == 0 && o->oTimer < 14) { sp22 = D_8032F698[o->oBehParams2ndByte].unk3 + (gDebugInfo[4][1] << 8); sp1C = -(o->oTimer / 2) * 290 + 1740; - func_802B8F7C(sp24, &o->oPosX); + vec3f_copy_2(sp24, &o->oPosX); o->oPosX = D_8032F698[o->oBehParams2ndByte].unk1 + sins(sp22 + 5296) * sp1C; o->oPosZ = D_8032F698[o->oBehParams2ndByte].unk2 + coss(sp22 + 5296) * sp1C; o->oPosY = 307.0f; - func_802AA618(4, 0, 100.0f); + spawn_mist_particles_variable(4, 0, 100.0f); o->oPosX = D_8032F698[o->oBehParams2ndByte].unk1 + sins(sp22 - 5296) * sp1C; o->oPosZ = D_8032F698[o->oBehParams2ndByte].unk2 + coss(sp22 - 5296) * sp1C; - func_802AA618(4, 0, 100); - func_802B8F7C(&o->oPosX, sp24); + spawn_mist_particles_variable(4, 0, 100); + vec3f_copy_2(&o->oPosX, sp24); } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (o->oTimer > 300) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void (*sFallingBowserPlatformActions[])(void) = { ActionFallingBowserPlatform0, - ActionFallingBowserPlatform1, - ActionFallingBowserPlatform2 }; +void (*sFallingBowserPlatformActions[])(void) = { falling_bowser_plat_act_0, + falling_bowser_plat_act_1, + falling_bowser_plat_act_2 }; struct ObjectHitbox sGrowingBowserFlameHitbox = { /* interactType: */ INTERACT_FLAME, @@ -1379,17 +1369,17 @@ struct ObjectHitbox sBowserFlameHitbox = { f32 D_8032F748[] = { -8.0f, -6.0f, -3.0f }; void bhv_falling_bowser_platform_loop(void) { - obj_call_action_function(sFallingBowserPlatformActions); + cur_obj_call_action_function(sFallingBowserPlatformActions); } -void func_802B7A58(void) { - mark_object_for_deletion(o); +void bowser_flame_despawn(void) { + obj_mark_for_deletion(o); spawn_object_with_scale(o, MODEL_NONE, bhvBlackSmokeUpward, 1.0f); if (RandomFloat() < 0.1) spawn_object(o, MODEL_YELLOW_COIN, bhvTemporaryYellowCoin); } -s32 func_802B7ADC(s32 a0) { +s32 bowser_flame_should_despawn(s32 a0) { if (a0 < o->oTimer) return 1; if (o->oFloorType == 1) @@ -1419,7 +1409,7 @@ void bhv_flame_large_burning_out_init(void) { o->oFlameUnkF4 = 7.0f; } -void func_802B7CFC(void) { +void bowser_flame_move(void) { s32 sp4; sp4 = ((o->oFlameUnkF8 + gGlobalTimer) & 0x3F) << 10; o->oPosX += sins(o->oMoveAngleYaw) * sins(sp4) * 4.0f; @@ -1427,16 +1417,16 @@ void func_802B7CFC(void) { } void bhv_flame_bowser_loop(void) { - obj_update_floor_and_walls(); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); if (o->oVelY < -4.0f) o->oVelY = -4.0f; if (o->oAction == 0) { - obj_become_intangible(); - func_802B7CFC(); + cur_obj_become_intangible(); + bowser_flame_move(); if (o->oMoveFlags & 1) { o->oAction++; - if (obj_has_behavior(bhvFlameLargeBurningOut)) + if (cur_obj_has_behavior(bhvFlameLargeBurningOut)) o->oFlameUnkF4 = 8.0f; else o->oFlameUnkF4 = RandomFloat() * 2 + 6.0f; @@ -1445,21 +1435,21 @@ void bhv_flame_bowser_loop(void) { o->oGravity = 0; } } else { - obj_become_tangible(); + cur_obj_become_tangible(); if (o->oTimer > o->oFlameUnkF4 * 10 + 5.0f) { o->oFlameUnkF4 -= 0.15; if (o->oFlameUnkF4 <= 0) - func_802B7A58(); + bowser_flame_despawn(); } } - obj_scale(o->oFlameUnkF4); + cur_obj_scale(o->oFlameUnkF4); o->oGraphYOffset = o->header.gfx.scale[1] * 14.0f; - set_object_hitbox(o, &sBowserFlameHitbox); + obj_set_hitbox(o, &sBowserFlameHitbox); } void bhv_flame_moving_forward_growing_init(void) { o->oForwardVel = 30.0f; - translate_object_xz_random(o, 80.0f); + obj_translate_xz_random(o, 80.0f); o->oAnimState = (s32)(RandomFloat() * 10.0f); o->oFlameUnkF4 = 3.0f; } @@ -1467,19 +1457,19 @@ void bhv_flame_moving_forward_growing_init(void) { void bhv_flame_moving_forward_growing_loop(void) { UNUSED s32 unused; UNUSED struct Object *sp18; - set_object_hitbox(o, &sGrowingBowserFlameHitbox); + obj_set_hitbox(o, &sGrowingBowserFlameHitbox); o->oFlameUnkF4 = o->oFlameUnkF4 + 0.5; - obj_scale(o->oFlameUnkF4); + cur_obj_scale(o->oFlameUnkF4); if (o->oMoveAnglePitch > 0x800) o->oMoveAnglePitch -= 0x200; - func_802A2A38(); - obj_update_floor_height(); + cur_obj_set_pos_via_transform(); + cur_obj_update_floor_height(); if (o->oFlameUnkF4 > 30.0f) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (o->oPosY < o->oFloorHeight) { o->oPosY = o->oFloorHeight; sp18 = spawn_object(o, MODEL_RED_FLAME, bhvFlameBowser); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } @@ -1497,11 +1487,11 @@ void bhv_flame_floating_landing_init(void) { void bhv_flame_floating_landing_loop(void) { UNUSED s32 unused; - obj_update_floor_and_walls(); - obj_move_standard(0x4e); - func_802B7CFC(); - if (func_802B7ADC(900)) - mark_object_for_deletion(o); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(0x4e); + bowser_flame_move(); + if (bowser_flame_should_despawn(900)) + obj_mark_for_deletion(o); if (o->oVelY < D_8032F748[o->oBehParams2ndByte]) o->oVelY = D_8032F748[o->oBehParams2ndByte]; if (o->oMoveFlags & 1) { @@ -1509,13 +1499,13 @@ void bhv_flame_floating_landing_loop(void) { spawn_object(o, MODEL_RED_FLAME, bhvFlameLargeBurningOut); else spawn_object(o, MODEL_NONE, bhvBlueFlamesGroup); //? wonder if they meant MODEL_BLUE_FLAME? - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } o->oGraphYOffset = o->header.gfx.scale[1] * 14.0f; } void bhv_blue_bowser_flame_init(void) { - translate_object_xz_random(o, 80.0f); + obj_translate_xz_random(o, 80.0f); o->oAnimState = (s32)(RandomFloat() * 10.0f); o->oVelY = 7.0f; o->oForwardVel = 35.0f; @@ -1527,12 +1517,12 @@ void bhv_blue_bowser_flame_init(void) { void bhv_blue_bowser_flame_loop(void) { s32 i; - set_object_hitbox(o, &sGrowingBowserFlameHitbox); + obj_set_hitbox(o, &sGrowingBowserFlameHitbox); if (o->oFlameUnkF4 < 16.0f) o->oFlameUnkF4 = o->oFlameUnkF4 + 0.5; - obj_scale(o->oFlameUnkF4); - obj_update_floor_and_walls(); - obj_move_standard(0x4e); + cur_obj_scale(o->oFlameUnkF4); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(0x4e); if (o->oTimer > 0x14) { if (o->oBehParams2ndByte == 0) for (i = 0; i < 3; i++) @@ -1544,7 +1534,7 @@ void bhv_blue_bowser_flame_loop(void) { spawn_object_relative_with_scale(2, 0, 0, 0, 8.0f, o, MODEL_BLUE_FLAME, bhvFlameFloatingLanding); } - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } @@ -1559,27 +1549,27 @@ void bhv_flame_bouncing_init(void) { void bhv_flame_bouncing_loop(void) { struct Object *sp1C; if (o->oTimer == 0) - o->oFlameUnk100 = obj_nearest_object_with_behavior(bhvBowser); + o->oFlameUnk100 = cur_obj_nearest_object_with_behavior(bhvBowser); sp1C = o->oFlameUnk100; o->oForwardVel = 15.0f; o->oBounce = -1.0f; - obj_scale(o->oFlameUnkF4); - set_object_hitbox(o, &sGrowingBowserFlameHitbox); - obj_update_floor_and_walls(); - obj_move_standard(78); - if (func_802B7ADC(300)) - mark_object_for_deletion(o); + cur_obj_scale(o->oFlameUnkF4); + obj_set_hitbox(o, &sGrowingBowserFlameHitbox); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); + if (bowser_flame_should_despawn(300)) + obj_mark_for_deletion(o); if (sp1C != NULL) if (sp1C->oHeldState == 0) if (lateral_dist_between_objects(o, sp1C) < 300.0f) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_blue_flames_group_loop(void) { struct Object *flame; s32 i; if (o->oTimer == 0) { - o->oMoveAngleYaw = angle_to_object(o, gMarioObject); + o->oMoveAngleYaw = obj_angle_to_object(o, gMarioObject); o->oBlueFlameUnkF8 = 5.0f; } if (o->oTimer < 16) { @@ -1592,5 +1582,5 @@ void bhv_blue_flames_group_loop(void) { o->oBlueFlameUnkF8 -= 0.5; } } else - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } diff --git a/src/game/behaviors/bowser_bomb.inc.c b/src/game/behaviors/bowser_bomb.inc.c index e342048f..80383ae4 100644 --- a/src/game/behaviors/bowser_bomb.inc.c +++ b/src/game/behaviors/bowser_bomb.inc.c @@ -1,7 +1,7 @@ // bowser_bomb.c.inc void bhv_bowser_bomb_loop(void) { - if (are_objects_collided(o, gMarioObject) == 1) { + if (obj_check_if_collided_with_object(o, gMarioObject) == 1) { o->oInteractStatus &= ~INT_STATUS_INTERACTED; /* bit 15 */ spawn_object(o, MODEL_EXPLOSION, bhvExplosion); o->activeFlags = 0; @@ -21,7 +21,7 @@ void bhv_bowser_bomb_loop(void) { void bhv_bowser_bomb_explosion_loop(void) { struct Object *mineSmoke; - obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0); + cur_obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0); if ((o->oTimer % 4 == 0) && (o->oTimer < 20)) { mineSmoke = spawn_object(o, MODEL_BOWSER_SMOKE, bhvBowserBombSmoke); mineSmoke->oPosX += RandomFloat() * 600.0f - 400.0f; @@ -36,7 +36,7 @@ void bhv_bowser_bomb_explosion_loop(void) { } void bhv_bowser_bomb_smoke_loop(void) { - obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0); + cur_obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0); if (o->oTimer % 2 == 0) o->oAnimState++; diff --git a/src/game/behaviors/bowser_key.inc.c b/src/game/behaviors/bowser_key.inc.c index e22647d7..584b1900 100644 --- a/src/game/behaviors/bowser_key.inc.c +++ b/src/game/behaviors/bowser_key.inc.c @@ -13,7 +13,7 @@ struct ObjectHitbox sBowserKeyHitbox = { }; void bhv_bowser_key_loop(void) { - obj_scale(0.5f); + cur_obj_scale(0.5f); if (o->oAngleVelYaw > 0x400) o->oAngleVelYaw -= 0x100; o->oFaceAngleYaw += o->oAngleVelYaw; @@ -22,20 +22,20 @@ void bhv_bowser_key_loop(void) { if (o->oAction == 0) { if (o->oTimer == 0) o->oVelY = 70.0f; - func_802B2328(3, 200, 80, -60); + spawn_sparkle_particles(3, 200, 80, -60); spawn_object(o, MODEL_NONE, bhvSparkleSpawn); - obj_update_floor_and_walls(); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) o->oAction++; else if (o->oMoveFlags & OBJ_MOVE_LANDED) #ifndef VERSION_JP - PlaySound2(SOUND_GENERAL_UNKNOWN3_2); + cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN3_2); #else - PlaySound2(SOUND_GENERAL_UNKNOWN3_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN3_LOWPRIO); #endif } else { - set_object_hitbox(o, &sBowserKeyHitbox); + obj_set_hitbox(o, &sBowserKeyHitbox); if (o->oInteractStatus & INT_STATUS_INTERACTED) { mark_obj_for_deletion(o); o->oInteractStatus = 0; diff --git a/src/game/behaviors/bowser_key_cutscene.inc.c b/src/game/behaviors/bowser_key_cutscene.inc.c index 108f7263..d3fa47f4 100644 --- a/src/game/behaviors/bowser_key_cutscene.inc.c +++ b/src/game/behaviors/bowser_key_cutscene.inc.c @@ -1,6 +1,6 @@ // bowser_key_cutscene.inc.c -Gfx *Geo18_802BA2B0(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) { +Gfx *geo_scale_bowser_key(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) { struct Object *sp4; if (run == TRUE) { sp4 = (struct Object *) gCurGraphNodeObject; @@ -12,7 +12,7 @@ Gfx *Geo18_802BA2B0(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) { void bhv_bowser_key_unlock_door_loop(void) { s32 animTimer; animTimer = o->header.gfx.unk38.animFrame; - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); if (animTimer < 38) o->oBowserKeyScale = 0.0f; else if (animTimer < 49) @@ -26,12 +26,12 @@ void bhv_bowser_key_unlock_door_loop(void) { else o->oBowserKeyScale = 1.0f; if (o->oTimer > 150) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_bowser_key_course_exit_loop(void) { s32 animTimer = o->header.gfx.unk38.animFrame; - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); if (animTimer < 38) o->oBowserKeyScale = 0.2f; else if (animTimer < 52) @@ -43,5 +43,5 @@ void bhv_bowser_key_course_exit_loop(void) { else o->oBowserKeyScale = 0.2f; if (o->oTimer > 138) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } diff --git a/src/game/behaviors/bowser_puzzle_piece.inc.c b/src/game/behaviors/bowser_puzzle_piece.inc.c index f747d54c..14db4de6 100644 --- a/src/game/behaviors/bowser_puzzle_piece.inc.c +++ b/src/game/behaviors/bowser_puzzle_piece.inc.c @@ -170,7 +170,7 @@ void bhv_lll_bowser_puzzle_piece_update(void) { // If we should advance to the next action... if (o->oBowserPuzzlePieceContinuePerformingAction == 0) { // Start doing the next action. - obj_change_action(*nextAction); + cur_obj_change_action(*nextAction); // Advance the pointer to the next action. nextAction++; @@ -200,7 +200,7 @@ void bhv_lll_bowser_puzzle_piece_move(f32 xOffset, f32 zOffset, s32 duration, UN } else { // On frame 20, play the shifting sound. if (o->oTimer == 20) - PlaySound2(SOUND_OBJ2_BOWSER_PUZZLE_PIECE_MOVE); + cur_obj_play_sound_2(SOUND_OBJ2_BOWSER_PUZZLE_PIECE_MOVE); // For the number of frames specified by duration, move the piece. if (o->oTimer < duration + 20) { @@ -208,7 +208,7 @@ void bhv_lll_bowser_puzzle_piece_move(f32 xOffset, f32 zOffset, s32 duration, UN o->oBowserPuzzlePieceOffsetZ += zOffset; } else { // This doesn't actually accomplish anything since - // obj_change_action is going to be called before the + // cur_obj_change_action is going to be called before the // next action is performed anyway. o->oAction = 2; @@ -255,7 +255,7 @@ void (*sBowserPuzzlePieceActions[])(void) = { void bhv_lll_bowser_puzzle_piece_loop(void) { bhv_lll_bowser_puzzle_piece_update(); - obj_call_action_function(sBowserPuzzlePieceActions); + cur_obj_call_action_function(sBowserPuzzlePieceActions); o->oPosX = o->oBowserPuzzlePieceOffsetX + o->oHomeX; o->oPosY = o->oBowserPuzzlePieceOffsetY + o->oHomeY; diff --git a/src/game/behaviors/break_particles.inc.c b/src/game/behaviors/break_particles.inc.c index 64cbfb3c..f8ebea70 100644 --- a/src/game/behaviors/break_particles.inc.c +++ b/src/game/behaviors/break_particles.inc.c @@ -19,6 +19,6 @@ void spawn_triangle_break_particles(s16 numTris, s16 triModel, f32 triSize, s16 triangle->oAngleVelPitch = 0x80 * (s32)(RandomFloat() + 50.0f); triangle->oForwardVel = 30.0f; } - scale_object(triangle, triSize); + obj_scale(triangle, triSize); } } diff --git a/src/game/behaviors/breakable_box.inc.c b/src/game/behaviors/breakable_box.inc.c index 9960aaff..f46954c3 100644 --- a/src/game/behaviors/breakable_box.inc.c +++ b/src/game/behaviors/breakable_box.inc.c @@ -1,12 +1,12 @@ // breakable_box.c.inc void bhv_breakable_box_loop(void) { - set_object_hitbox(o, &sBreakableBoxHitbox); - obj_set_model(MODEL_BREAKABLE_BOX_SMALL); + obj_set_hitbox(o, &sBreakableBoxHitbox); + cur_obj_set_model(MODEL_BREAKABLE_BOX_SMALL); if (o->oTimer == 0) - func_802B0E74(); - if (obj_was_attacked_or_ground_pounded() != 0) { - func_802A3C98(46.0f, 1); + breakable_box_init(); + if (cur_obj_was_attacked_or_ground_pounded() != 0) { + obj_explode_and_spawn_coins(46.0f, 1); create_sound_spawner(SOUND_GENERAL_BREAK_BOX); } } diff --git a/src/game/behaviors/breakable_box_small.inc.c b/src/game/behaviors/breakable_box_small.inc.c index d5f89e97..3910fc7e 100644 --- a/src/game/behaviors/breakable_box_small.inc.c +++ b/src/game/behaviors/breakable_box_small.inc.c @@ -16,33 +16,33 @@ void bhv_breakable_box_small_init(void) { o->oGravity = 2.5f; o->oFriction = 0.99f; o->oBuoyancy = 1.4f; - obj_scale(0.4f); - set_object_hitbox(o, &sBreakableBoxSmallHitbox); + cur_obj_scale(0.4f); + obj_set_hitbox(o, &sBreakableBoxSmallHitbox); o->oAnimState = 1; o->activeFlags |= 0x200; } -void func_802F4CE8(void) { +void small_breakable_box_spawn_dust(void) { struct Object *sp24 = spawn_object(o, MODEL_SMOKE, bhvSmoke); sp24->oPosX += (s32)(RandomFloat() * 80.0f) - 40; sp24->oPosZ += (s32)(RandomFloat() * 80.0f) - 40; } -void func_802F4DB4(void) { +void small_breakable_box_act_move(void) { s16 sp1E = object_step(); - attack_collided_non_mario_object(o); + obj_attack_collided_from_other_object(o); if (sp1E == 1) - PlaySound2(SOUND_GENERAL_BOX_LANDING_2); + cur_obj_play_sound_2(SOUND_GENERAL_BOX_LANDING_2); if (sp1E & 1) { if (o->oForwardVel > 20.0f) { - PlaySound2(SOUND_ENV_SLIDING); - func_802F4CE8(); + cur_obj_play_sound_2(SOUND_ENV_SLIDING); + small_breakable_box_spawn_dust(); } } if (sp1E & 2) { - func_802A3004(); + spawn_mist_particles(); spawn_triangle_break_particles(20, 138, 0.7f, 3); obj_spawn_yellow_coins(o, 3); create_sound_spawner(SOUND_GENERAL_BREAK_BOX); @@ -73,7 +73,7 @@ void breakable_box_small_released_loop(void) { void breakable_box_small_idle_loop(void) { switch (o->oAction) { case 0: - func_802F4DB4(); + small_breakable_box_act_move(); break; case 100: @@ -91,9 +91,9 @@ void breakable_box_small_idle_loop(void) { } void breakable_box_small_get_dropped(void) { - obj_become_tangible(); - obj_enable_rendering(); - obj_get_dropped(); + cur_obj_become_tangible(); + cur_obj_enable_rendering(); + cur_obj_get_dropped(); o->header.gfx.node.flags &= ~0x10; o->oHeldState = 0; o->oBreakableBoxSmallReleased = 1; @@ -101,9 +101,9 @@ void breakable_box_small_get_dropped(void) { } void breakable_box_small_get_thrown(void) { - obj_become_tangible(); - obj_enable_rendering_2(); - obj_enable_rendering(); + cur_obj_become_tangible(); + cur_obj_enable_rendering_2(); + cur_obj_enable_rendering(); o->header.gfx.node.flags &= ~0x10; o->oHeldState = 0; o->oFlags &= ~0x08; @@ -121,8 +121,8 @@ void bhv_breakable_box_small_loop(void) { break; case 1: - obj_disable_rendering(); - obj_become_intangible(); + cur_obj_disable_rendering(); + cur_obj_become_intangible(); break; case 2: diff --git a/src/game/behaviors/breakable_wall.inc.c b/src/game/behaviors/breakable_wall.inc.c index b85b7807..997d2208 100644 --- a/src/game/behaviors/breakable_wall.inc.c +++ b/src/game/behaviors/breakable_wall.inc.c @@ -2,15 +2,15 @@ void bhv_wf_breakable_wall_loop(void) { if (gMarioStates->action == ACT_SHOT_FROM_CANNON) { - obj_become_tangible(); - if (are_objects_collided(o, gMarioObject)) { - if (obj_has_behavior(bhvWfBreakableWallRight)) + cur_obj_become_tangible(); + if (obj_check_if_collided_with_object(o, gMarioObject)) { + if (cur_obj_has_behavior(bhvWfBreakableWallRight)) play_puzzle_jingle(); create_sound_spawner(SOUND_GENERAL_WALL_EXPLOSION); o->oInteractType = 8; o->oDamageOrCoinValue = 1; - func_802A3C98(80.0f, 0); + obj_explode_and_spawn_coins(80.0f, 0); } } else - obj_become_intangible(); + cur_obj_become_intangible(); } diff --git a/src/game/behaviors/bub.inc.c b/src/game/behaviors/bub.inc.c index 7d292df3..42b98f20 100644 --- a/src/game/behaviors/bub.inc.c +++ b/src/game/behaviors/bub.inc.c @@ -5,7 +5,7 @@ // to do nothing, which indicates this behavior set is incomplete. // TODO: Rename these. These have nothing to do with birds. -void ActionBirdChirpChirp0(void) { +void bub_spawner_act_0(void) { s32 i; s32 sp18 = o->oBirdChirpChirpUnkF4; if (o->oDistanceToMario < 1500.0f) { @@ -15,27 +15,27 @@ void ActionBirdChirpChirp0(void) { } } -void ActionBirdChirpChirp1(void) { +void bub_spawner_act_1(void) { if (gMarioObject->oPosY - o->oPosY > 2000.0f) o->oAction = 2; } -void ActionBirdChirpChirp2(void) { +void bub_spawner_act_2(void) { o->oAction = 3; } -void ActionBirdChirpChirp3(void) { +void bub_spawner_act_3(void) { o->oAction = 0; } -void (*sBirdChirpChirpActions[])(void) = { ActionBirdChirpChirp0, ActionBirdChirpChirp1, - ActionBirdChirpChirp2, ActionBirdChirpChirp3 }; +void (*sBirdChirpChirpActions[])(void) = { bub_spawner_act_0, bub_spawner_act_1, + bub_spawner_act_2, bub_spawner_act_3 }; -void bhv_bird_chirp_chirp_loop(void) { - obj_call_action_function(sBirdChirpChirpActions); +void bhv_bub_spawner_loop(void) { + cur_obj_call_action_function(sBirdChirpChirpActions); } -void func_802C0240(s32 a0) { +void bub_move_vertically(s32 a0) { f32 sp1C = o->parentObj->oPosY; if (sp1C - 100.0f - o->oCheepCheepUnk104 < o->oPosY && o->oPosY < sp1C + 1000.0f + o->oCheepCheepUnk104) @@ -44,13 +44,13 @@ void func_802C0240(s32 a0) { } } -void ActionCheepCheep0(void) { +void bub_act_0(void) { o->oCheepCheepUnkFC = RandomFloat() * 100.0f; o->oCheepCheepUnk104 = RandomFloat() * 300.0f; o->oAction = 1; } -void ActionCheepCheep1(void) { +void bub_act_1(void) { f32 dy; if (o->oTimer == 0) { o->oForwardVel = RandomFloat() * 2 + 2; @@ -61,17 +61,17 @@ void ActionCheepCheep1(void) { if (dy < 0.0f) dy = 0.0f - dy; if (dy < 500.0f) - func_802C0240(1); + bub_move_vertically(1); else - func_802C0240(4); + bub_move_vertically(4); } else { o->oPosY = o->oCheepCheepUnkF4 - 50.0f; if (dy > 300.0f) o->oPosY = o->oPosY - 1.0f; } - if (800.0f < obj_lateral_dist_from_mario_to_home()) - o->oAngleToMario = obj_angle_to_home(); - obj_rotate_yaw_toward(o->oAngleToMario, 0x100); + if (800.0f < cur_obj_lateral_dist_from_mario_to_home()) + o->oAngleToMario = cur_obj_angle_to_home(); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x100); if (o->oDistanceToMario < 200.0f) if (o->oCheepCheepUnk108 < 0.5) o->oAction = 2; @@ -79,7 +79,7 @@ void ActionCheepCheep1(void) { o->oAction = 2; } -void ActionCheepCheep2(void) { +void bub_act_2(void) { f32 dy; if (o->oTimer < 20) { if (o->oInteractStatus & INT_STATUS_INTERACTED) @@ -87,7 +87,7 @@ void ActionCheepCheep2(void) { } else o->oInteractStatus = 0; if (o->oTimer == 0) - PlaySound2(SOUND_GENERAL_MOVING_WATER); + cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER); if (o->oForwardVel == 0.0f) o->oForwardVel = 6.0f; dy = o->oPosY - gMarioObject->oPosY; @@ -95,30 +95,30 @@ void ActionCheepCheep2(void) { if (dy < 0.0f) dy = 0.0f - dy; if (dy < 500.0f) - func_802C0240(2); + bub_move_vertically(2); else - func_802C0240(4); + bub_move_vertically(4); } else { o->oPosY = o->oCheepCheepUnkF4 - 50.0f; if (dy > 300.0f) o->oPosY -= 1.0f; } - if (obj_lateral_dist_from_mario_to_home() > 800.0f) - o->oAngleToMario = obj_angle_to_home(); - obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x400); + if (cur_obj_lateral_dist_from_mario_to_home() > 800.0f) + o->oAngleToMario = cur_obj_angle_to_home(); + cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x400); if (o->oTimer > 200 && o->oDistanceToMario > 600.0f) o->oAction = 1; } -void (*sCheepCheepActions[])(void) = { ActionCheepCheep0, ActionCheepCheep1, ActionCheepCheep2 }; +void (*sCheepCheepActions[])(void) = { bub_act_0, bub_act_1, bub_act_2 }; -void bhv_cheep_cheep_loop(void) { +void bhv_bub_loop(void) { o->oCheepCheepUnkF4 = find_water_level(o->oPosX, o->oPosZ); o->oCheepCheepUnkF8 = gMarioObject->oPosY + o->oCheepCheepUnkFC; o->oWallHitboxRadius = 30.0f; - obj_update_floor_and_walls(); - obj_call_action_function(sCheepCheepActions); - obj_move_using_fvel_and_gravity(); + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sCheepCheepActions); + cur_obj_move_using_fvel_and_gravity(); if (o->parentObj->oAction == 2) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } diff --git a/src/game/behaviors/bubba.inc.c b/src/game/behaviors/bubba.inc.c index a095b5ba..5fddd4e3 100644 --- a/src/game/behaviors/bubba.inc.c +++ b/src/game/behaviors/bubba.inc.c @@ -15,7 +15,7 @@ static struct ObjectHitbox sBubbaHitbox = { void bubba_act_0(void) { f32 sp24; - sp24 = obj_lateral_dist_to_home(); + sp24 = cur_obj_lateral_dist_to_home(); treat_far_home_as_mario(2000.0f); o->oAnimState = 0; @@ -34,7 +34,7 @@ void bubba_act_0(void) { } if ((o->oBubbaUnkFC = o->oMoveFlags & 0x00000200) != 0) { - o->oBubbaUnk1AE = obj_reflect_move_angle_off_wall(); + o->oBubbaUnk1AE = cur_obj_reflect_move_angle_off_wall(); } else if (o->oTimer > 30 && o->oDistanceToMario < 2000.0f) { o->oAction = 1; } else if (o->oBubbaUnkF8 != 0) { @@ -55,7 +55,7 @@ void bubba_act_1(void) { o->oAction = 0; } else if (o->oBubbaUnk100 != 0) { if (--o->oBubbaUnk100 == 0) { - PlaySound2(SOUND_OBJ_BUBBA_CHOMP); + cur_obj_play_sound_2(SOUND_OBJ_BUBBA_CHOMP); o->oAction = 0; } else if (o->oBubbaUnk100 < 15) { o->oAnimState = 1; @@ -71,7 +71,7 @@ void bubba_act_1(void) { o->oBubbaUnk1AE = o->oAngleToMario; o->oBubbaUnk1AC = o->oBubbaUnk104; - obj_rotate_yaw_toward(o->oBubbaUnk1AE, 400); + cur_obj_rotate_yaw_toward(o->oBubbaUnk1AE, 400); obj_move_pitch_approach(o->oBubbaUnk1AC, 400); } } else { @@ -119,7 +119,7 @@ void bhv_bubba_loop(void) { o->hurtboxRadius = 150.0f; } - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case 0: @@ -134,7 +134,7 @@ void bhv_bubba_loop(void) { if (o->oMoveFlags & 0x00000008) { sp38 = spawn_object(o, MODEL_WATER_SPLASH, bhvWaterSplash); if (sp38 != NULL) { - scale_object(sp38, 3.0f); + obj_scale(sp38, 3.0f); } o->oBubbaUnk108 = o->oVelY; @@ -163,7 +163,7 @@ void bhv_bubba_loop(void) { obj_face_pitch_approach(o->oMoveAnglePitch, 400); obj_check_attacks(&sBubbaHitbox, o->oAction); - obj_move_standard(78); + cur_obj_move_standard(78); o->oFloorHeight += 150.0f; if (o->oPosY < o->oFloorHeight) { diff --git a/src/game/behaviors/bubble.inc.c b/src/game/behaviors/bubble.inc.c index a5e447ca..000d369c 100644 --- a/src/game/behaviors/bubble.inc.c +++ b/src/game/behaviors/bubble.inc.c @@ -7,16 +7,16 @@ void bhv_object_bubble_init(void) { } void bhv_object_bubble_loop(void) { - struct Object *bubbleRipples; + struct Object *bubbleSplash; f32 waterY = find_water_level(o->oPosX, o->oPosZ); f32 bubbleY = o->oPosY; if (bubbleY > waterY) { if (gFreeObjectList.next) { - bubbleRipples = spawn_object_at_origin(o, 0, MODEL_SPOT_ON_GROUND, bhvObjectBubbleRipples); - bubbleRipples->oPosX = o->oPosX; - bubbleRipples->oPosY = bubbleY + 5.0f; - bubbleRipples->oPosZ = o->oPosZ; + bubbleSplash = spawn_object_at_origin(o, 0, MODEL_SMALL_WATER_SPLASH, bhvBubbleSplash); + bubbleSplash->oPosX = o->oPosX; + bubbleSplash->oPosY = bubbleY + 5.0f; + bubbleSplash->oPosZ = o->oPosZ; } o->activeFlags = 0; diff --git a/src/game/behaviors/bullet_bill.inc.c b/src/game/behaviors/bullet_bill.inc.c index 02d8725d..a94fe4b7 100644 --- a/src/game/behaviors/bullet_bill.inc.c +++ b/src/game/behaviors/bullet_bill.inc.c @@ -2,31 +2,31 @@ // bullet bill smoke void bhv_white_puff_smoke_init(void) { - obj_scale(RandomFloat() * 2 + 2.0); + cur_obj_scale(RandomFloat() * 2 + 2.0); } void bhv_bullet_bill_init(void) { o->oBulletBillUnkF8 = o->oMoveAngleYaw; } -void ActionBulletBill0(void) { - obj_become_tangible(); +void bullet_bill_act_0(void) { + cur_obj_become_tangible(); o->oForwardVel = 0.0f; o->oMoveAngleYaw = o->oBulletBillUnkF8; o->oFaceAnglePitch = 0; o->oFaceAngleRoll = 0; o->oMoveFlags = 0; - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); o->oAction = 1; } -void ActionBulletBill1(void) { +void bullet_bill_act_1(void) { s16 sp1E = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw); if (sp1E < 0x2000 && 400.0f < o->oDistanceToMario && o->oDistanceToMario < 1500.0f) o->oAction = 2; } -void ActionBulletBill2(void) { +void bullet_bill_act_2(void) { if (o->oTimer < 40) o->oForwardVel = 3.0f; else if (o->oTimer < 50) { @@ -36,30 +36,30 @@ void ActionBulletBill2(void) { o->oForwardVel = -3.0f; } else { if (o->oTimer > 70) - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); spawn_object(o, MODEL_SMOKE, bhvWhitePuffSmoke); o->oForwardVel = 30.0f; if (o->oDistanceToMario > 300.0f) - obj_rotate_yaw_toward(o->oAngleToMario, 0x100); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x100); if (o->oTimer == 50) { - PlaySound2(SOUND_OBJ_POUNDING_CANNON); - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_play_sound_2(SOUND_OBJ_POUNDING_CANNON); + cur_obj_shake_screen(SHAKE_POS_SMALL); } if (o->oTimer > 150 || o->oMoveFlags & 0x200) { o->oAction = 3; - func_802A3004(); + spawn_mist_particles(); } } } -void ActionBulletBill3(void) { +void bullet_bill_act_3(void) { o->oAction = 0; } -void ActionBulletBill4(void) { +void bullet_bill_act_4(void) { if (o->oTimer == 0) { o->oForwardVel = -30.0f; - obj_become_intangible(); + cur_obj_become_intangible(); } o->oFaceAnglePitch += 0x1000; o->oFaceAngleRoll += 0x1000; @@ -68,11 +68,11 @@ void ActionBulletBill4(void) { o->oAction = 0; } -void (*sBulletBillActions[])(void) = { ActionBulletBill0, ActionBulletBill1, ActionBulletBill2, - ActionBulletBill3, ActionBulletBill4 }; +void (*sBulletBillActions[])(void) = { bullet_bill_act_0, bullet_bill_act_1, bullet_bill_act_2, + bullet_bill_act_3, bullet_bill_act_4 }; void bhv_bullet_bill_loop(void) { - obj_call_action_function(sBulletBillActions); - if (obj_check_interacted()) + cur_obj_call_action_function(sBulletBillActions); + if (cur_obj_check_interacted()) o->oAction = 4; } diff --git a/src/game/behaviors/bully.inc.c b/src/game/behaviors/bully.inc.c index 8e3df296..6e2bd262 100644 --- a/src/game/behaviors/bully.inc.c +++ b/src/game/behaviors/bully.inc.c @@ -25,7 +25,7 @@ static struct ObjectHitbox sBigBullyHitbox = { }; void bhv_small_bully_init(void) { - SetObjAnimation(0); + cur_obj_init_animation(0); o->oHomeX = o->oPosX; o->oHomeZ = o->oPosZ; @@ -34,11 +34,11 @@ void bhv_small_bully_init(void) { o->oFriction = 0.91; o->oBuoyancy = 1.3; - set_object_hitbox(o, &sSmallBullyHitbox); + obj_set_hitbox(o, &sSmallBullyHitbox); } void bhv_big_bully_init(void) { - SetObjAnimation(0); + cur_obj_init_animation(0); o->oHomeX = o->oPosX; o->oHomeY = o->oPosY; @@ -48,25 +48,25 @@ void bhv_big_bully_init(void) { o->oFriction = 0.93; o->oBuoyancy = 1.3; - set_object_hitbox(o, &sBigBullyHitbox); + obj_set_hitbox(o, &sBigBullyHitbox); } -void BullyCheckMarioCollision(void) { +void bully_check_mario_collision(void) { if (o->oInteractStatus & INT_STATUS_INTERACTED) { if (o->oBehParams2ndByte == BULLY_BP_SIZE_SMALL) - PlaySound2(SOUND_OBJ2_BULLY_ATTACKED); + cur_obj_play_sound_2(SOUND_OBJ2_BULLY_ATTACKED); else - PlaySound2(SOUND_OBJ2_LARGE_BULLY_ATTACKED); + cur_obj_play_sound_2(SOUND_OBJ2_LARGE_BULLY_ATTACKED); o->oInteractStatus &= ~INT_STATUS_INTERACTED; o->oAction = BULLY_ACT_KNOCKBACK; o->oFlags &= ~0x8; /* bit 3 */ - SetObjAnimation(3); + cur_obj_init_animation(3); o->oBullyMarioCollisionAngle = o->oMoveAngleYaw; } } -void BullyChaseMarioLoop(void) { +void bully_act_chase_mario(void) { f32 homeX = o->oHomeX; f32 posY = o->oPosY; f32 homeZ = o->oHomeZ; @@ -86,11 +86,11 @@ void BullyChaseMarioLoop(void) { if (!is_point_within_radius_of_mario(homeX, posY, homeZ, 1000)) { o->oAction = BULLY_ACT_PATROL; - SetObjAnimation(0); + cur_obj_init_animation(0); } } -void BullyKnockbackLoop(void) { +void bully_act_knockback(void) { if (o->oForwardVel < 10.0 && (s32) o->oVelY == 0) { o->oForwardVel = 1.0; o->oBullyKBTimerAndMinionKOCounter++; @@ -103,11 +103,11 @@ void BullyKnockbackLoop(void) { if (o->oBullyKBTimerAndMinionKOCounter == 18) { o->oAction = BULLY_ACT_CHASE_MARIO; o->oBullyKBTimerAndMinionKOCounter = 0; - SetObjAnimation(1); + cur_obj_init_animation(1); } } -void BullyBackUpLoop(void) { +void bully_act_back_up(void) { if (o->oTimer == 0) { o->oFlags &= ~0x8; /* bit 3 */ o->oMoveAngleYaw += 0x8000; @@ -115,7 +115,7 @@ void BullyBackUpLoop(void) { o->oForwardVel = 5.0; - //! BullyBackUpCheck() happens after this function, and has the potential to reset + //! bully_backup_check() happens after this function, and has the potential to reset // the bully's action to BULLY_ACT_BACK_UP. Because the back up action is only // set to end when the timer EQUALS 15, if this happens on that frame, the bully // will be stuck in BULLY_ACT_BACK_UP forever until Mario hits it or its death @@ -129,7 +129,7 @@ void BullyBackUpLoop(void) { } } -void BullyBackUpCheck(s16 collisionFlags) { +void bully_backup_check(s16 collisionFlags) { if (!(collisionFlags & 0x8) && o->oAction != BULLY_ACT_KNOCKBACK) /* bit 3 */ { o->oPosX = o->oBullyPrevX; @@ -138,15 +138,15 @@ void BullyBackUpCheck(s16 collisionFlags) { } } -void PlayBullyStompingSound(void) { +void bully_play_stomping_sound(void) { s16 sp26 = o->header.gfx.unk38.animFrame; switch (o->oAction) { case BULLY_ACT_PATROL: if (sp26 == 0 || sp26 == 12) { if (o->oBehParams2ndByte == BULLY_BP_SIZE_SMALL) - PlaySound2(SOUND_OBJ_BULLY_WALK); + cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALK); else - PlaySound2(SOUND_OBJ_BULLY_WALKING); + cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALKING); } break; @@ -154,19 +154,19 @@ void PlayBullyStompingSound(void) { case BULLY_ACT_BACK_UP: if (sp26 == 0 || sp26 == 5) { if (o->oBehParams2ndByte == BULLY_BP_SIZE_SMALL) - PlaySound2(SOUND_OBJ_BULLY_WALK); + cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALK); else - PlaySound2(SOUND_OBJ_BULLY_WALKING); + cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALKING); } break; } } -void BullyStep(void) { +void bully_step(void) { s16 collisionFlags = 0; collisionFlags = object_step(); - BullyBackUpCheck(collisionFlags); - PlayBullyStompingSound(); + bully_backup_check(collisionFlags); + bully_play_stomping_sound(); obj_check_floor_death(collisionFlags, sObjFloor); if (o->oBullySubtype & BULLY_STYPE_CHILL) { @@ -175,14 +175,14 @@ void BullyStep(void) { } } -void BullySpawnCoin(void) { +void bully_spawn_coin(void) { struct Object *coin = spawn_object(o, MODEL_YELLOW_COIN, bhvMovingYellowCoin); #ifdef VERSION_JP //TODO: maybe move this ifdef logic to the header? - PlaySound2(SOUND_GENERAL_COIN_SPURT); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT); #elif VERSION_EU - PlaySound2(SOUND_GENERAL_COIN_SPURT_EU); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT_EU); #else - PlaySound2(SOUND_GENERAL_COIN_SPURT_2); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT_2); #endif coin->oForwardVel = 10.0f; coin->oVelY = 100.0f; @@ -190,19 +190,19 @@ void BullySpawnCoin(void) { coin->oMoveAngleYaw = (f32)(o->oBullyMarioCollisionAngle + 0x8000) + RandomFloat() * 1024.0f; } -void BullyLavaDeath(void) { +void bully_act_level_death(void) { if (obj_lava_death() == 1) { if (o->oBehParams2ndByte == BULLY_BP_SIZE_SMALL) { if (o->oBullySubtype == BULLY_STYPE_MINION) o->parentObj->oBullyKBTimerAndMinionKOCounter++; - BullySpawnCoin(); + bully_spawn_coin(); } else { - func_802A3004(); + spawn_mist_particles(); if (o->oBullySubtype == BULLY_STYPE_CHILL) - create_star(130.0f, 1600.0f, -4335.0f); + spawn_default_star(130.0f, 1600.0f, -4335.0f); else { - create_star(0, 950.0f, -6800.0f); + spawn_default_star(0, 950.0f, -6800.0f); spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvLllTumblingBridge, 0, 154, -5631, 0, 0, 0); } @@ -219,7 +219,7 @@ void bhv_bully_loop(void) { // death action by colliding with it. Since the bully hitbox is tall enough to collide // with Mario even when it is under a lava floor, this can get the bully stuck OOB // if there is nothing under the lava floor. - BullyCheckMarioCollision(); + bully_check_mario_collision(); switch (o->oAction) { case BULLY_ACT_PATROL: @@ -227,29 +227,29 @@ void bhv_bully_loop(void) { if (obj_return_home_if_safe(o, o->oHomeX, o->oPosY, o->oHomeZ, 800) == 1) { o->oAction = BULLY_ACT_CHASE_MARIO; - SetObjAnimation(1); + cur_obj_init_animation(1); } - BullyStep(); + bully_step(); break; case BULLY_ACT_CHASE_MARIO: - BullyChaseMarioLoop(); - BullyStep(); + bully_act_chase_mario(); + bully_step(); break; case BULLY_ACT_KNOCKBACK: - BullyKnockbackLoop(); - BullyStep(); + bully_act_knockback(); + bully_step(); break; case BULLY_ACT_BACK_UP: - BullyBackUpLoop(); - BullyStep(); + bully_act_back_up(); + bully_step(); break; case BULLY_ACT_LAVA_DEATH: - BullyLavaDeath(); + bully_act_level_death(); break; case BULLY_ACT_DEATH_PLANE_DEATH: @@ -265,7 +265,7 @@ void bhv_bully_loop(void) { // sp40 = arg2 // sp44 = arg3 -void BigBullySpawnMinion(s32 arg0, s32 arg1, s32 arg2, s16 arg3) { +void big_bully_spawn_minion(s32 arg0, s32 arg1, s32 arg2, s16 arg3) { struct Object *bully = spawn_object_abs_with_rot(o, 0, MODEL_BULLY, bhvSmallBully, arg0, arg1, arg2, 0, arg3, 00); bully->oBullySubtype = BULLY_STYPE_MINION; @@ -273,21 +273,21 @@ void BigBullySpawnMinion(s32 arg0, s32 arg1, s32 arg2, s16 arg3) { } void bhv_big_bully_with_minions_init(void) { - BigBullySpawnMinion(4454, 307, -5426, 0); - BigBullySpawnMinion(3840, 307, -6041, 0); - BigBullySpawnMinion(3226, 307, -5426, 0); + big_bully_spawn_minion(4454, 307, -5426, 0); + big_bully_spawn_minion(3840, 307, -6041, 0); + big_bully_spawn_minion(3226, 307, -5426, 0); o->header.gfx.node.flags |= 0x10; /* bit 4 */ - obj_become_intangible(); + cur_obj_become_intangible(); o->oAction = BULLY_ACT_INACTIVE; } -void BigBullyWithMinionsLavaDeath(void) { +void big_bully_spawn_star(void) { if (obj_lava_death() == 1) { - func_802A3004(); - create_star(3700.0f, 600.0f, -5500.0f); + spawn_mist_particles(); + spawn_default_star(3700.0f, 600.0f, -5500.0f); } } @@ -302,7 +302,7 @@ void bhv_big_bully_with_minions_loop(void) { o->oBullyPrevY = o->oPosY; o->oBullyPrevZ = o->oPosZ; - BullyCheckMarioCollision(); + bully_check_mario_collision(); switch (o->oAction) { case BULLY_ACT_PATROL: @@ -310,25 +310,25 @@ void bhv_big_bully_with_minions_loop(void) { if (obj_return_home_if_safe(o, o->oHomeX, o->oPosY, o->oHomeZ, 1000) == 1) { o->oAction = BULLY_ACT_CHASE_MARIO; - SetObjAnimation(1); + cur_obj_init_animation(1); } - BullyStep(); + bully_step(); break; case BULLY_ACT_CHASE_MARIO: - BullyChaseMarioLoop(); - BullyStep(); + bully_act_chase_mario(); + bully_step(); break; case BULLY_ACT_KNOCKBACK: - BullyKnockbackLoop(); - BullyStep(); + bully_act_knockback(); + bully_step(); break; case BULLY_ACT_BACK_UP: - BullyBackUpLoop(); - BullyStep(); + bully_act_back_up(); + bully_step(); break; case BULLY_ACT_INACTIVE: @@ -350,17 +350,17 @@ void bhv_big_bully_with_minions_loop(void) { o->oAction = BULLY_ACT_PATROL; if (collisionFlags == 1) { - PlaySound2(SOUND_OBJ_THWOMP); + cur_obj_play_sound_2(SOUND_OBJ_THWOMP); set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ); - func_802A3004(); + spawn_mist_particles(); } o->header.gfx.node.flags &= ~0x10; /* bit 4 */ - obj_become_tangible(); + cur_obj_become_tangible(); break; case BULLY_ACT_LAVA_DEATH: - BigBullyWithMinionsLavaDeath(); + big_bully_spawn_star(); break; case BULLY_ACT_DEATH_PLANE_DEATH: diff --git a/src/game/behaviors/butterfly.inc.c b/src/game/behaviors/butterfly.inc.c index 94421e39..ed005519 100644 --- a/src/game/behaviors/butterfly.inc.c +++ b/src/game/behaviors/butterfly.inc.c @@ -1,7 +1,7 @@ // butterfly.c.inc void bhv_butterfly_init(void) { - SetObjAnimation(1); + cur_obj_init_animation(1); o->oButterflyYPhase = RandomFloat() * 100.0f; o->header.gfx.unk38.animFrame = RandomFloat() * 7.0f; @@ -12,7 +12,7 @@ void bhv_butterfly_init(void) { // sp28 = speed -void ButterflyStep(s32 speed) { +void butterfly_step(s32 speed) { struct FloorGeometry *sp24; s16 yaw = o->oMoveAngleYaw; s16 pitch = o->oMoveAnglePitch; @@ -41,7 +41,7 @@ void ButterflyStep(s32 speed) { o->oButterflyYPhase = 0; } -void CalculateButterflyAngle(void) { +void butterfly_calculate_angle(void) { gMarioObject->oPosX += 5 * o->oButterflyYPhase / 4; gMarioObject->oPosZ += 5 * o->oButterflyYPhase / 4; obj_turn_toward_object(o, gMarioObject, 16, 0x300); @@ -53,25 +53,25 @@ void CalculateButterflyAngle(void) { gMarioObject->oPosY -= (5 * o->oButterflyYPhase + 0x100) / 4; } -void ButterflyRestingLoop(void) { +void butterfly_act_rest(void) { if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)) { - SetObjAnimation(0); + cur_obj_init_animation(0); o->oAction = BUTTERFLY_ACT_FOLLOW_MARIO; o->oMoveAngleYaw = gMarioObject->header.gfx.angle[1]; } } -void ButterflyFollowMarioLoop(void) { - CalculateButterflyAngle(); +void butterfly_act_follow_mario(void) { + butterfly_calculate_angle(); - ButterflyStep(7); + butterfly_step(7); if (!is_point_within_radius_of_mario(o->oHomeX, o->oHomeY, o->oHomeZ, 1200)) o->oAction = BUTTERFLY_ACT_RETURN_HOME; } -void ButterflyReturnHomeLoop(void) { +void butterfly_act_return_home(void) { f32 homeDistX = o->oHomeX - o->oPosX; f32 homeDistY = o->oHomeY - o->oPosY; f32 homeDistZ = o->oHomeZ - o->oPosZ; @@ -81,10 +81,10 @@ void ButterflyReturnHomeLoop(void) { o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, hAngleToHome, 0x800); o->oMoveAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, vAngleToHome, 0x50); - ButterflyStep(7); + butterfly_step(7); if (homeDistX * homeDistX + homeDistY * homeDistY + homeDistZ * homeDistZ < 144.0f) { - SetObjAnimation(1); + cur_obj_init_animation(1); o->oAction = BUTTERFLY_ACT_RESTING; o->oPosX = o->oHomeX; @@ -96,15 +96,15 @@ void ButterflyReturnHomeLoop(void) { void bhv_butterfly_loop(void) { switch (o->oAction) { case BUTTERFLY_ACT_RESTING: - ButterflyRestingLoop(); + butterfly_act_rest(); break; case BUTTERFLY_ACT_FOLLOW_MARIO: - ButterflyFollowMarioLoop(); + butterfly_act_follow_mario(); break; case BUTTERFLY_ACT_RETURN_HOME: - ButterflyReturnHomeLoop(); + butterfly_act_return_home(); break; } diff --git a/src/game/behaviors/camera_lakitu.inc.c b/src/game/behaviors/camera_lakitu.inc.c index d1af453d..cb5d8380 100644 --- a/src/game/behaviors/camera_lakitu.inc.c +++ b/src/game/behaviors/camera_lakitu.inc.c @@ -14,7 +14,7 @@ void bhv_camera_lakitu_init(void) { if (o->oBehParams2ndByte != CAMERA_LAKITU_BP_FOLLOW_CAMERA) { // Despawn unless this is the very beginning of the game if (gShouldNotPlayCastleMusic != TRUE) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } else { spawn_object_relative_with_scale(CLOUD_BP_LAKITU_CLOUD, 0, 0, 0, 2.0f, o, MODEL_MIST, bhvCloud); @@ -64,7 +64,7 @@ static void camera_lakitu_intro_act_show_dialog(void) { s16 targetMovePitch; s16 targetMoveYaw; - PlaySound(SOUND_AIR_LAKITU_FLY); + cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY); // Face toward mario o->oFaceAnglePitch = obj_turn_pitch_toward_mario(120.0f, 0); @@ -74,7 +74,7 @@ static void camera_lakitu_intro_act_show_dialog(void) { if (o->oCameraLakituFinishedDialog) { approach_f32_ptr(&o->oCameraLakituSpeed, 60.0f, 3.0f); if (o->oDistanceToMario > 6000.0f) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } targetMovePitch = -0x3000; @@ -115,7 +115,7 @@ static void camera_lakitu_intro_act_show_dialog(void) { } } } - } else if (obj_update_dialog_with_cutscene(2, DIALOG_UNK2_FLAG_0, CUTSCENE_DIALOG, DIALOG_034) != 0) { + } else if (cur_obj_update_dialog_with_cutscene(2, DIALOG_UNK2_FLAG_0, CUTSCENE_DIALOG, DIALOG_034) != 0) { o->oCameraLakituFinishedDialog = TRUE; } } @@ -124,11 +124,11 @@ static void camera_lakitu_intro_act_show_dialog(void) { obj_move_pitch_approach(targetMovePitch, o->oCameraLakituPitchVel); o->oCameraLakituYawVel = approach_s16_symmetric(o->oCameraLakituYawVel, 0x7D0, 0x64); - obj_rotate_yaw_toward(targetMoveYaw, o->oCameraLakituYawVel); + cur_obj_rotate_yaw_toward(targetMoveYaw, o->oCameraLakituYawVel); // vel y is explicitly computed, so gravity doesn't apply obj_compute_vel_from_move_pitch(o->oCameraLakituSpeed); - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } /** @@ -153,9 +153,9 @@ void bhv_camera_lakitu_update(void) { } else { f32 val0C = (f32) 0x875C3D / 0x800 - gLakituState.curPos[0]; if (gLakituState.curPos[0] < 1700.0f || val0C < 0.0f) { - obj_hide(); + cur_obj_hide(); } else { - obj_unhide(); + cur_obj_unhide(); o->oPosX = gLakituState.curPos[0]; o->oPosY = gLakituState.curPos[1]; @@ -164,8 +164,8 @@ void bhv_camera_lakitu_update(void) { o->oHomeX = gLakituState.curFocus[0]; o->oHomeZ = gLakituState.curFocus[2]; - o->oFaceAngleYaw = -obj_angle_to_home(); - o->oFaceAnglePitch = atan2s(obj_lateral_dist_to_home(), + o->oFaceAngleYaw = -cur_obj_angle_to_home(); + o->oFaceAnglePitch = atan2s(cur_obj_lateral_dist_to_home(), o->oPosY - gLakituState.curFocus[1]); o->oPosX = (f32) 0x875C3D / 0x800 + val0C; diff --git a/src/game/behaviors/cannon.inc.c b/src/game/behaviors/cannon.inc.c index 65994aa5..5f55ca83 100644 --- a/src/game/behaviors/cannon.inc.c +++ b/src/game/behaviors/cannon.inc.c @@ -4,7 +4,7 @@ void bhv_cannon_base_unused_loop(void) { o->oPosY += o->oVelY; } -void ActionOpenedCannon0(void) { +void opened_cannon_act_0(void) { if (o->oTimer == 0) { o->oInteractStatus = 0; o->oPosX = o->oHomeX; @@ -14,12 +14,12 @@ void ActionOpenedCannon0(void) { o->oMoveAngleYaw = (s16)(o->oBehParams2ndByte << 8); o->oCannonUnkF4 = 0; o->oCannonUnk10C = 0; - obj_enable_rendering(); - obj_become_tangible(); + cur_obj_enable_rendering(); + cur_obj_become_tangible(); } if (o->oDistanceToMario < 500.0f) { - obj_become_tangible(); - obj_enable_rendering(); + cur_obj_become_tangible(); + cur_obj_enable_rendering(); if (o->oInteractStatus & INT_STATUS_INTERACTED && (!(o->oInteractStatus & INT_STATUS_TOUCHED_BOB_OMB))) // bob-omb explodes when it gets into a cannon @@ -30,15 +30,15 @@ void ActionOpenedCannon0(void) { } else o->oInteractStatus = 0; } else { - obj_become_intangible(); - obj_disable_rendering(); + cur_obj_become_intangible(); + cur_obj_disable_rendering(); o->oCannonUnk10C = 0; } } -void ActionOpenedCannon4(void) { +void opened_cannon_act_4(void) { if (o->oTimer == 0) - PlaySound2(SOUND_OBJ_CANNON1); + cur_obj_play_sound_2(SOUND_OBJ_CANNON1); o->oPosY += 5.0f; o->oPosX += (f32)((o->oTimer / 2 & 1) - 0.5) * 2; o->oPosZ += (f32)((o->oTimer / 2 & 1) - 0.5) * 2; @@ -49,9 +49,9 @@ void ActionOpenedCannon4(void) { } } -void ActionOpenedCannon6(void) { +void opened_cannon_act_6(void) { if (o->oTimer == 0) - PlaySound2(SOUND_OBJ_CANNON2); + cur_obj_play_sound_2(SOUND_OBJ_CANNON2); if (o->oTimer < 4) { o->oPosX += (f32)((o->oTimer / 2 & 1) - 0.5) * 4.0f; o->oPosZ += (f32)((o->oTimer / 2 & 1) - 0.5) * 4.0f; @@ -71,9 +71,9 @@ void ActionOpenedCannon6(void) { } } -void ActionOpenedCannon5(void) { +void opened_cannon_act_5(void) { if (o->oTimer == 0) - PlaySound2(SOUND_OBJ_CANNON3); + cur_obj_play_sound_2(SOUND_OBJ_CANNON3); if (o->oTimer < 4) { } else { if (o->oTimer < 20) { @@ -85,34 +85,34 @@ void ActionOpenedCannon5(void) { } } -void ActionOpenedCannon1(void) { +void opened_cannon_act_1(void) { UNUSED s32 unused; - obj_become_intangible(); - obj_disable_rendering(); + cur_obj_become_intangible(); + cur_obj_disable_rendering(); o->oCannonUnk10C = 0; gMarioShotFromCannon = 1; } -void ActionOpenedCannon2(void) { +void opened_cannon_act_2(void) { o->oAction = 3; } -void ActionOpenedCannon3(void) { +void opened_cannon_act_3(void) { UNUSED s32 unused; if (o->oTimer > 3) o->oAction = 0; } -void (*sOpenedCannonActions[])(void) = { ActionOpenedCannon0, ActionOpenedCannon1, ActionOpenedCannon2, - ActionOpenedCannon3, ActionOpenedCannon4, ActionOpenedCannon5, - ActionOpenedCannon6 }; +void (*sOpenedCannonActions[])(void) = { opened_cannon_act_0, opened_cannon_act_1, opened_cannon_act_2, + opened_cannon_act_3, opened_cannon_act_4, opened_cannon_act_5, + opened_cannon_act_6 }; u8 unused0EA1FC[] = { 2, 0, 0, 0, 0, 0, 0, 0, 63, 128, 0, 0, 2, 0, 0, 0, 65, 32, 0, 0, 63, 128, 0, 0, 2, 0, 0, 0, 65, 160, 0, 0, 63, 128, 0, 0, 2, 0, 0, 0, 65, 160, 0, 0, 63, 128, 0, 0, 8, 0, 0, 0, 65, 32, 0, 0, 63, 128, 0, 0 }; void bhv_cannon_base_loop(void) { - obj_call_action_function(sOpenedCannonActions); + cur_obj_call_action_function(sOpenedCannonActions); if (o->oCannonUnkF8) o->oCannonUnkF8++; o->oInteractStatus = 0; @@ -121,10 +121,10 @@ void bhv_cannon_base_loop(void) { void bhv_cannon_barrel_loop(void) { struct Object *parent = o->parentObj; if (parent->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) { - obj_enable_rendering(); - copy_object_pos(o, o->parentObj); + cur_obj_enable_rendering(); + obj_copy_pos(o, o->parentObj); o->oMoveAngleYaw = o->parentObj->oMoveAngleYaw; o->oFaceAnglePitch = o->parentObj->oMoveAnglePitch; } else - obj_disable_rendering(); + cur_obj_disable_rendering(); } diff --git a/src/game/behaviors/cannon_door.inc.c b/src/game/behaviors/cannon_door.inc.c index 661eb316..1bc440d9 100644 --- a/src/game/behaviors/cannon_door.inc.c +++ b/src/game/behaviors/cannon_door.inc.c @@ -16,9 +16,9 @@ void bhv_cannon_closed_init(void) { } } -void CannonTrapDoorOpeningLoop(void) { +void cannon_door_act_opening(void) { if (o->oTimer == 0) - PlaySound2(SOUND_GENERAL_CANNON_UP); + cur_obj_play_sound_2(SOUND_GENERAL_CANNON_UP); if (o->oTimer < 30) { o->oVelY = -0.5f; @@ -55,7 +55,7 @@ void bhv_cannon_closed_loop(void) { break; case CANNON_TRAP_DOOR_ACT_OPENING: - CannonTrapDoorOpeningLoop(); + cannon_door_act_opening(); break; } } diff --git a/src/game/behaviors/cap.inc.c b/src/game/behaviors/cap.inc.c index fb8c14c8..6234b352 100644 --- a/src/game/behaviors/cap.inc.c +++ b/src/game/behaviors/cap.inc.c @@ -12,8 +12,8 @@ static struct ObjectHitbox sCapHitbox = { /* hurtboxHeight: */ 90, }; -s32 func_802F0904(void) { - set_object_hitbox(o, &sCapHitbox); +s32 cap_set_hitbox(void) { + obj_set_hitbox(o, &sCapHitbox); if (o->oInteractStatus & INT_STATUS_INTERACTED) { o->activeFlags = 0; o->oInteractStatus = 0; @@ -23,13 +23,13 @@ s32 func_802F0904(void) { return 0; } -void func_802F0978(void) { +void cap_despawn(void) { if (o->oTimer > 300) { obj_flicker_and_disappear(o, 300); } } -void func_802F09C0(void) { +void cap_check_quicksand(void) { if (sObjFloor == NULL) return; @@ -74,7 +74,7 @@ void func_802F09C0(void) { } } -void func_802F0B68(void) { +void cap_sink_quicksand(void) { switch (o->oAction) { case 10: if (o->oTimer < 10) { @@ -106,7 +106,7 @@ void func_802F0B68(void) { break; } - func_802F09C0(); + cap_check_quicksand(); } void bhv_wing_cap_init(void) { @@ -116,7 +116,7 @@ void bhv_wing_cap_init(void) { o->oOpacity = 255; } -void func_802F0D70(void) { +void cap_scale_vertically(void) { o->oCapUnkF8 += 0x2000; o->header.gfx.scale[1] = coss(o->oCapUnkF8) * 0.3 + 0.7; if (o->oCapUnkF8 == 0x10000) { @@ -125,13 +125,13 @@ void func_802F0D70(void) { } } -void func_802F0E0C(void) { +void wing_vanish_cap_act_0(void) { s16 sp1E; o->oFaceAngleYaw += o->oForwardVel * 128.0f; sp1E = object_step(); if (sp1E & 0x01) { - func_802F09C0(); + cap_check_quicksand(); if (o->oVelY != 0.0f) { o->oCapUnkF4 = 1; o->oVelY = 0.0f; @@ -139,26 +139,26 @@ void func_802F0E0C(void) { } if (o->oCapUnkF4 == 1) - func_802F0D70(); + cap_scale_vertically(); } void bhv_wing_vanish_cap_loop(void) { switch (o->oAction) { case 0: - func_802F0E0C(); + wing_vanish_cap_act_0(); break; default: object_step(); - func_802F0B68(); + cap_sink_quicksand(); break; } if (o->oTimer > 20) - obj_become_tangible(); + cur_obj_become_tangible(); - func_802F0978(); - func_802F0904(); + cap_despawn(); + cap_set_hitbox(); } void bhv_metal_cap_init(void) { @@ -168,32 +168,32 @@ void bhv_metal_cap_init(void) { o->oOpacity = 0xFF; } -void func_802F0FE0(void) { +void metal_cap_act_0(void) { s16 sp1E; o->oFaceAngleYaw += o->oForwardVel * 128.0f; sp1E = object_step(); if (sp1E & 0x01) - func_802F09C0(); + cap_check_quicksand(); } void bhv_metal_cap_loop(void) { switch (o->oAction) { case 0: - func_802F0FE0(); + metal_cap_act_0(); break; default: object_step(); - func_802F0B68(); + cap_sink_quicksand(); break; } if (o->oTimer > 20) - obj_become_tangible(); + cur_obj_become_tangible(); - func_802F0904(); - func_802F0978(); + cap_set_hitbox(); + cap_despawn(); } void bhv_normal_cap_init(void) { @@ -205,7 +205,7 @@ void bhv_normal_cap_init(void) { save_file_set_cap_pos(o->oPosX, o->oPosY, o->oPosZ); } -void func_802F1190(void) { +void normal_cap_set_save_flags(void) { save_file_clear_flags(SAVE_FLAG_CAP_ON_GROUND); switch (gCurrCourseNum) { @@ -227,14 +227,14 @@ void func_802F1190(void) { } } -void func_802F1234(void) { +void normal_cap_act_0(void) { s16 sp1E; o->oFaceAngleYaw += o->oForwardVel * 128.0f; o->oFaceAnglePitch += o->oForwardVel * 80.0f; sp1E = object_step(); if (sp1E & 0x01) { - func_802F09C0(); + cap_check_quicksand(); if (o->oVelY != 0.0f) { o->oCapUnkF4 = 1; @@ -244,18 +244,18 @@ void func_802F1234(void) { } if (o->oCapUnkF4 == 1) - func_802F0D70(); + cap_scale_vertically(); } void bhv_normal_cap_loop(void) { switch (o->oAction) { case 0: - func_802F1234(); + normal_cap_act_0(); break; default: object_step(); - func_802F0B68(); + cap_sink_quicksand(); break; } @@ -263,9 +263,9 @@ void bhv_normal_cap_loop(void) { save_file_set_cap_pos(o->oPosX, o->oPosY, o->oPosZ); if (o->activeFlags == 0) - func_802F1190(); + normal_cap_set_save_flags(); - if (func_802F0904() == 1) + if (cap_set_hitbox() == 1) save_file_clear_flags(SAVE_FLAG_CAP_ON_GROUND); } diff --git a/src/game/behaviors/capswitch.inc.c b/src/game/behaviors/capswitch.inc.c index a417f220..091638b7 100644 --- a/src/game/behaviors/capswitch.inc.c +++ b/src/game/behaviors/capswitch.inc.c @@ -1,8 +1,8 @@ // capswitch.c.inc -void ActionActivateCapSwitch0(void) { +void cap_switch_act_0(void) { o->oAnimState = o->oBehParams2ndByte; - obj_scale(0.5f); + cur_obj_scale(0.5f); o->oPosY += 71.0f; spawn_object_relative_with_scale(0, 0, -71, 0, 0.5f, o, MODEL_CAP_SWITCH_BASE, bhvCapSwitchBase); if (gCurrLevelNum != LEVEL_UNKNOWN_32) { @@ -15,51 +15,36 @@ void ActionActivateCapSwitch0(void) { o->oAction = 1; } -void ActionActivateCapSwitch1(void) { - if (obj_is_mario_on_platform()) { +void cap_switch_act_1(void) { + if (cur_obj_is_mario_on_platform()) { save_file_set_flags(D_8032F0C0[o->oBehParams2ndByte]); o->oAction = 2; - PlaySound2(SOUND_GENERAL_ACTIVATE_CAP_SWITCH); + cur_obj_play_sound_2(SOUND_GENERAL_ACTIVATE_CAP_SWITCH); } } -void ActionActivateCapSwitch2(void) { +void cap_switch_act_2(void) { s32 sp1C; if (o->oTimer < 5) { - func_802A3398(2, 4, 0.5f, 0.1f); + cur_obj_scale_over_time(2, 4, 0.5f, 0.1f); if (o->oTimer == 4) { - ShakeScreen(SHAKE_POS_SMALL); - func_802A3004(); + cur_obj_shake_screen(SHAKE_POS_SMALL); + spawn_mist_particles(); spawn_triangle_break_particles(60, 139, 0.3f, o->oBehParams2ndByte); } } else { - sp1C = obj_update_dialog_with_cutscene(1, 0x0C, CUTSCENE_CAP_SWITCH_PRESS, 0); + sp1C = cur_obj_update_dialog_with_cutscene(1, 0x0C, CUTSCENE_CAP_SWITCH_PRESS, 0); if (sp1C) o->oAction = 3; } } -void ActionActivateCapSwitch3() { +void cap_switch_act_3() { } // dead function -void (*sCapSwitchActions[])(void) = { ActionActivateCapSwitch0, ActionActivateCapSwitch1, - ActionActivateCapSwitch2, ActionActivateCapSwitch3 }; +void (*sCapSwitchActions[])(void) = { cap_switch_act_0, cap_switch_act_1, + cap_switch_act_2, cap_switch_act_3 }; void bhv_cap_switch_loop(void) { - obj_call_action_function(sCapSwitchActions); -} - -Gfx *Geo18_802A719C(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) { - Mat4 sp20; - struct Object *sp1C; - - if (run == TRUE) { - sp1C = (struct Object *) gCurGraphNodeObject; - if (sp1C->prevObj != NULL) { - func_8029D704(sp20, mtx, gCurGraphNodeCamera->matrixPtr); - func_8029D558(sp20, sp1C->prevObj); - func_8029EA0C(sp1C->prevObj); - } - } - return NULL; + cur_obj_call_action_function(sCapSwitchActions); } diff --git a/src/game/behaviors/castle_floor_trap.inc.c b/src/game/behaviors/castle_floor_trap.inc.c index 12fb3f1e..66f16ffb 100644 --- a/src/game/behaviors/castle_floor_trap.inc.c +++ b/src/game/behaviors/castle_floor_trap.inc.c @@ -26,7 +26,7 @@ void bhv_castle_floor_trap_open_detect(void) { void bhv_castle_floor_trap_open(void) { if (o->oTimer == 0) - PlaySound2(SOUND_GENERAL_CASTLE_TRAP_OPEN); + cur_obj_play_sound_2(SOUND_GENERAL_CASTLE_TRAP_OPEN); o->oAngleVelRoll -= 0x100; o->oFaceAngleRoll += o->oAngleVelRoll; if (o->oFaceAngleRoll < -0x4000) { diff --git a/src/game/behaviors/celebration_star.inc.c b/src/game/behaviors/celebration_star.inc.c index 053b2954..8782d885 100644 --- a/src/game/behaviors/celebration_star.inc.c +++ b/src/game/behaviors/celebration_star.inc.c @@ -11,24 +11,24 @@ void bhv_celebration_star_init(void) { o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_BOWSER_KEY]; o->oFaceAnglePitch = 0; o->oFaceAngleRoll = 49152; - obj_scale(0.1f); + cur_obj_scale(0.1f); o->oCelebStarUnkF4 = 1; } else { o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR]; o->oFaceAnglePitch = 0; o->oFaceAngleRoll = 0; - obj_scale(0.4f); + cur_obj_scale(0.4f); o->oCelebStarUnkF4 = 0; } #else o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR]; - obj_scale(0.4f); + cur_obj_scale(0.4f); o->oFaceAnglePitch = 0; o->oFaceAngleRoll = 0; #endif } -void CelebrationStarSpinAroundMarioLoop(void) { +void celeb_star_act_spin_around_mario(void) { o->oPosX = o->oHomeX + sins(o->oMoveAngleYaw) * (f32)(o->oCelebStarDiameterOfRotation / 2); o->oPosZ = o->oHomeZ + coss(o->oMoveAngleYaw) * (f32)(o->oCelebStarDiameterOfRotation / 2); o->oPosY += 5.0f; @@ -44,17 +44,17 @@ void CelebrationStarSpinAroundMarioLoop(void) { o->oCelebStarDiameterOfRotation -= 20; } -void CelebrationStarFaceCameraLoop(void) { +void celeb_star_act_face_camera(void) { if (o->oTimer < 10) { #if BUGFIX_STAR_BOWSER_KEY if (o->oCelebStarUnkF4 == 0) { - obj_scale((f32) o->oTimer / 10.0); + cur_obj_scale((f32) o->oTimer / 10.0); } else { - obj_scale((f32) o->oTimer / 30.0); + cur_obj_scale((f32) o->oTimer / 30.0); } #else - obj_scale((f32) o->oTimer / 10.0); + cur_obj_scale((f32) o->oTimer / 10.0); #endif o->oFaceAngleYaw += 0x1000; } else { @@ -68,11 +68,11 @@ void CelebrationStarFaceCameraLoop(void) { void bhv_celebration_star_loop(void) { switch (o->oAction) { case CELEB_STAR_ACT_SPIN_AROUND_MARIO: - CelebrationStarSpinAroundMarioLoop(); + celeb_star_act_spin_around_mario(); break; case CELEB_STAR_ACT_FACE_CAMERA: - CelebrationStarFaceCameraLoop(); + celeb_star_act_face_camera(); break; } } @@ -85,6 +85,6 @@ void bhv_celebration_star_sparkle_loop(void) { } void bhv_star_key_collection_puff_spawner_loop(void) { - func_802AA618(0, 10, 30.0f); + spawn_mist_particles_variable(0, 10, 30.0f); o->activeFlags = 0; } diff --git a/src/game/behaviors/chain_chomp.inc.c b/src/game/behaviors/chain_chomp.inc.c index c28db1ce..80d74590 100644 --- a/src/game/behaviors/chain_chomp.inc.c +++ b/src/game/behaviors/chain_chomp.inc.c @@ -31,7 +31,7 @@ void bhv_chain_chomp_chain_part_update(void) { struct ChainSegment *segment; if (o->parentObj->oAction == CHAIN_CHOMP_ACT_UNLOAD_CHAIN) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else if (o->oBehParams2ndByte != CHAIN_CHOMP_CHAIN_PART_BP_PIVOT) { segment = &o->parentObj->oChainChompSegments[o->oBehParams2ndByte]; @@ -41,8 +41,8 @@ void bhv_chain_chomp_chain_part_update(void) { o->oPosZ = o->parentObj->parentObj->oPosZ + segment->posZ; ; } else if (o->parentObj->oChainChompReleaseStatus != CHAIN_CHOMP_NOT_RELEASED) { - obj_update_floor_and_walls(); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); } } @@ -65,7 +65,7 @@ static void chain_chomp_act_uninitialized(void) { chain_segment_init(&segments[i]); } - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); // Spawn the pivot and set to parent if ((o->parentObj = @@ -78,7 +78,7 @@ static void chain_chomp_act_uninitialized(void) { } o->oAction = CHAIN_CHOMP_ACT_MOVE; - obj_unhide(); + cur_obj_unhide(); } } } @@ -174,15 +174,15 @@ static void chain_chomp_sub_act_turn(void) { obj_move_pitch_approach(0, 0x100); if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) { - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) < 0x800) { if (o->oTimer > 30) { - if (obj_check_anim_frame(0)) { - func_8029F6F0(); + if (cur_obj_check_anim_frame(0)) { + cur_obj_reverse_animation(); if (o->oTimer > 40) { // Increase the maximum distance from the pivot and enter // the lunging sub-action. - PlaySound2(SOUND_GENERAL_CHAIN_CHOMP2); + cur_obj_play_sound_2(SOUND_GENERAL_CHAIN_CHOMP2); o->oSubAction = CHAIN_CHOMP_SUB_ACT_LUNGE; o->oChainChompMaxDistFromPivotPerChainPart = 900.0f / 5; @@ -199,12 +199,12 @@ static void chain_chomp_sub_act_turn(void) { o->oForwardVel = 0.0f; } } else { - PlaySound2(SOUND_GENERAL_CHAIN_CHOMP1); + cur_obj_play_sound_2(SOUND_GENERAL_CHAIN_CHOMP1); o->oForwardVel = 10.0f; o->oVelY = 20.0f; } } else { - obj_rotate_yaw_toward(o->oAngleToMario, 0x190); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x190); o->oTimer = 0; } } @@ -231,7 +231,7 @@ static void chain_chomp_sub_act_lunge(void) { ; } else { // Turn toward pivot - obj_rotate_yaw_toward(atan2s(o->oChainChompSegments[0].posZ, o->oChainChompSegments[0].posX), + cur_obj_rotate_yaw_toward(atan2s(o->oChainChompSegments[0].posZ, o->oChainChompSegments[0].posX), 0x1000); if (o->oChainChompUnk104 != 0.0f) { @@ -247,7 +247,7 @@ static void chain_chomp_sub_act_lunge(void) { } if (o->oTimer < 30) { - func_8029F6F0(); + cur_obj_reverse_animation(); } } @@ -278,7 +278,7 @@ static void chain_chomp_released_lunge_around(void) { if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) { // Before first bounce, turn toward mario and wait 2 seconds if (o->oChainChompNumLunges == 0) { - if (obj_rotate_yaw_toward(o->oAngleToMario, 0x320)) { + if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x320)) { if (o->oTimer > 60) { o->oChainChompNumLunges += 1; // enable wall collision @@ -289,7 +289,7 @@ static void chain_chomp_released_lunge_around(void) { } } else { if (++o->oChainChompNumLunges <= 5) { - PlaySound2(SOUND_GENERAL_CHAIN_CHOMP1); + cur_obj_play_sound_2(SOUND_GENERAL_CHAIN_CHOMP1); o->oMoveAngleYaw = o->oAngleToMario + RandomSign() * 0x2000; o->oForwardVel = 30.0f; o->oVelY = 50.0f; @@ -297,8 +297,8 @@ static void chain_chomp_released_lunge_around(void) { o->oChainChompReleaseStatus = CHAIN_CHOMP_RELEASED_BREAK_GATE; o->oHomeX = 1450.0f; o->oHomeZ = 562.0f; - o->oMoveAngleYaw = obj_angle_to_home(); - o->oForwardVel = obj_lateral_dist_to_home() / 8; + o->oMoveAngleYaw = cur_obj_angle_to_home(); + o->oForwardVel = cur_obj_lateral_dist_to_home() / 8; o->oVelY = 50.0f; } } @@ -318,15 +318,15 @@ static void chain_chomp_released_break_gate(void) { // in a softlock if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { o->oChainChompHitGate = TRUE; - o->oMoveAngleYaw = obj_reflect_move_angle_off_wall(); + o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); o->oForwardVel *= 0.4f; } } else if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) { o->oChainChompReleaseStatus = CHAIN_CHOMP_RELEASED_JUMP_AWAY; o->oHomeX = 3288.0f; o->oHomeZ = -1770.0f; - o->oMoveAngleYaw = obj_angle_to_home(); - o->oForwardVel = obj_lateral_dist_to_home() / 50.0f; + o->oMoveAngleYaw = cur_obj_angle_to_home(); + o->oForwardVel = cur_obj_lateral_dist_to_home() / 50.0f; o->oVelY = 120.0f; } } @@ -363,7 +363,7 @@ static void chain_chomp_act_move(void) { o->oAction = CHAIN_CHOMP_ACT_UNLOAD_CHAIN; o->oForwardVel = o->oVelY = 0.0f; } else { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oChainChompReleaseStatus) { case CHAIN_CHOMP_NOT_RELEASED: @@ -393,7 +393,7 @@ static void chain_chomp_act_move(void) { break; } - obj_move_standard(78); + cur_obj_move_standard(78); // Segment 0 connects the pivot to the chain chomp itself o->oChainChompSegments[0].posX = o->oPosX - o->parentObj->oPosX; @@ -454,13 +454,13 @@ static void chain_chomp_act_move(void) { * themselves when they see that the chain chomp is in this action. */ static void chain_chomp_act_unload_chain(void) { - obj_hide(); + cur_obj_hide(); mem_pool_free(gObjectMemoryPool, o->oChainChompSegments); o->oAction = CHAIN_CHOMP_ACT_UNINITIALIZED; if (o->oChainChompReleaseStatus != CHAIN_CHOMP_NOT_RELEASED) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } @@ -487,13 +487,13 @@ void bhv_chain_chomp_update(void) { void bhv_wooden_post_update(void) { // When ground pounded by mario, drop by -45 + -20 if (!o->oWoodenPostMarioPounding) { - if ((o->oWoodenPostMarioPounding = obj_is_mario_ground_pounding_platform())) { - PlaySound2(SOUND_GENERAL_POUND_WOOD_POST); + if ((o->oWoodenPostMarioPounding = cur_obj_is_mario_ground_pounding_platform())) { + cur_obj_play_sound_2(SOUND_GENERAL_POUND_WOOD_POST); o->oWoodenPostSpeedY = -70.0f; } } else if (approach_f32_ptr(&o->oWoodenPostSpeedY, 0.0f, 25.0f)) { // Stay still until mario is done ground pounding - o->oWoodenPostMarioPounding = obj_is_mario_ground_pounding_platform(); + o->oWoodenPostMarioPounding = cur_obj_is_mario_ground_pounding_platform(); } else if ((o->oWoodenPostOffsetY += o->oWoodenPostSpeedY) < -190.0f) { // Once pounded, if this is the chain chomp's post, release the chain // chomp @@ -516,7 +516,7 @@ void bhv_wooden_post_update(void) { // coins o->oWoodenPostTotalMarioAngle += (s16)(o->oAngleToMario - o->oWoodenPostPrevAngleToMario); if (absi(o->oWoodenPostTotalMarioAngle) > 0x30000 && o->oTimer < 200) { - spawn_object_loot_yellow_coins(o, 5, 20.0f); + obj_spawn_loot_yellow_coins(o, 5, 20.0f); set_object_respawn_info_bits(o, 1); } } @@ -529,7 +529,7 @@ void bhv_wooden_post_update(void) { * Init function for chain chomp gate. */ void bhv_chain_chomp_gate_init(void) { - o->parentObj = obj_nearest_object_with_behavior(bhvChainChomp); + o->parentObj = cur_obj_nearest_object_with_behavior(bhvChainChomp); } /** @@ -537,10 +537,10 @@ void bhv_chain_chomp_gate_init(void) { */ void bhv_chain_chomp_gate_update(void) { if (o->parentObj->oChainChompHitGate) { - func_802A3034(SOUND_GENERAL_WALL_EXPLOSION); + spawn_mist_particles_with_sound(SOUND_GENERAL_WALL_EXPLOSION); set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ); - func_802AA618(0, 0x7F, 200.0f); + spawn_mist_particles_variable(0, 0x7F, 200.0f); spawn_triangle_break_particles(30, 0x8A, 3.0f, 4); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } diff --git a/src/game/behaviors/checkerboard_platform.inc.c b/src/game/behaviors/checkerboard_platform.inc.c index 1203193e..30235a03 100644 --- a/src/game/behaviors/checkerboard_platform.inc.c +++ b/src/game/behaviors/checkerboard_platform.inc.c @@ -3,12 +3,6 @@ struct Struct8032F754 D_8032F754[] = { { 145, { 0.7f, 1.5f, 0.7f }, 7.0f }, { 235, { 1.2f, 2.0f, 1.2f }, 11.6f } }; -void func_802B8F7C(Vec3f dest, Vec3f src) { - dest[0] = src[0]; - dest[1] = src[1]; - dest[2] = src[2]; -} - void bhv_checkerboard_elevator_group_init(void) { s32 sp3C; s32 sp38; @@ -28,11 +22,11 @@ void bhv_checkerboard_elevator_group_init(void) { sp2C = spawn_object_relative(i, 0, i * sp3C, sp38, o, MODEL_CHECKERBOARD_PLATFORM, bhvCheckerboardPlatformSub); sp2C->oCheckerBoardPlatformUnk1AC = D_8032F754[sp34].unk2; - func_802B8F7C(sp2C->header.gfx.scale, D_8032F754[sp34].unk1); + vec3f_copy_2(sp2C->header.gfx.scale, D_8032F754[sp34].unk1); } } -void func_802B9120(UNUSED s32 unused, f32 vel, s32 a2) { +void checkerboard_plat_act_move_y(UNUSED s32 unused, f32 vel, s32 a2) { o->oMoveAnglePitch = 0; o->oAngleVelPitch = 0; o->oForwardVel = 0.0f; @@ -41,7 +35,7 @@ void func_802B9120(UNUSED s32 unused, f32 vel, s32 a2) { o->oAction++; } -void func_802B91A0(s32 a0, s16 a1) { +void checkerboard_plat_act_rotate(s32 a0, s16 a1) { o->oVelY = 0.0f; o->oAngleVelPitch = a1; if (o->oTimer + 1 == 0x8000 / absi(a1)) @@ -57,7 +51,7 @@ void bhv_checkerboard_platform_loop(void) { f32 sp24 = o->oCheckerBoardPlatformUnk1AC; o->oCheckerBoardPlatformUnkF8 = 0; if (o->oDistanceToMario < 1000.0f) - PlaySound(SOUND_ENV_ELEVATOR4); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4); switch (o->oAction) { case 0: if (o->oBehParams2ndByte == 0) @@ -66,16 +60,16 @@ void bhv_checkerboard_platform_loop(void) { o->oAction = 3; break; case 1: - func_802B9120(2, 10.0f, o->oCheckerBoardPlatformUnkFC); + checkerboard_plat_act_move_y(2, 10.0f, o->oCheckerBoardPlatformUnkFC); break; case 2: - func_802B91A0(3, 512); + checkerboard_plat_act_rotate(3, 512); break; case 3: - func_802B9120(4, -10.0f, o->oCheckerBoardPlatformUnkFC); + checkerboard_plat_act_move_y(4, -10.0f, o->oCheckerBoardPlatformUnkFC); break; case 4: - func_802B91A0(1, -512); + checkerboard_plat_act_rotate(1, -512); break; } o->oMoveAnglePitch += absi(o->oAngleVelPitch); @@ -88,8 +82,8 @@ void bhv_checkerboard_platform_loop(void) { if (o->oCheckerBoardPlatformUnkF8 == 1) { o->oAngleVelPitch = 0; o->oFaceAnglePitch &= ~0x7FFF; - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } else - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); load_object_collision_model(); } diff --git a/src/game/behaviors/chuckya.inc.c b/src/game/behaviors/chuckya.inc.c index b6719901..aa50186b 100644 --- a/src/game/behaviors/chuckya.inc.c +++ b/src/game/behaviors/chuckya.inc.c @@ -1,11 +1,11 @@ // chuckya.c.inc -void func_802A8D18(f32 sp28, f32 sp2C, s32 sp30) { +void common_anchor_mario_behavior(f32 sp28, f32 sp2C, s32 sp30) { switch (o->parentObj->oChuckyaUnk88) { case 0: break; case 1: - func_802A2008(gMarioObject, o); + obj_set_gfx_pos_at_obj_pos(gMarioObject, o); break; case 2: gMarioObject->oInteractStatus |= (sp30 + INT_STATUS_MARIO_UNK2); @@ -23,30 +23,30 @@ void func_802A8D18(f32 sp28, f32 sp2C, s32 sp30) { } o->oMoveAngleYaw = o->parentObj->oMoveAngleYaw; if (!o->parentObj->activeFlags) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_chuckya_anchor_mario_loop(void) { - func_802A8D18(40.0f, 40.0f, 64); + common_anchor_mario_behavior(40.0f, 40.0f, 64); } -s32 Unknown802A8EC8(s32 sp20, f32 sp24, f32 sp28, s32 sp2C) { +s32 unknown_chuckya_function(s32 sp20, f32 sp24, f32 sp28, s32 sp2C) { s32 sp1C = 0; if (o->oChuckyaUnkF8 != 4) { - if (sp24 < obj_lateral_dist_from_mario_to_home()) { - if (obj_lateral_dist_to_home() < 200.0f) + if (sp24 < cur_obj_lateral_dist_from_mario_to_home()) { + if (cur_obj_lateral_dist_to_home() < 200.0f) sp1C = 0; else { sp1C = 1; - o->oAngleToMario = obj_angle_to_home(); + o->oAngleToMario = cur_obj_angle_to_home(); } } else if (o->oDistanceToMario > sp28) { if (gGlobalTimer % (s16) sp2C == 0) - o->oAngleToMario = angle_to_object(o, gMarioObject); + o->oAngleToMario = obj_angle_to_object(o, gMarioObject); sp1C = 2; } else sp1C = 3; - if (sp20 && func_802C5A64(&o->oAngleToMario)) { + if (sp20 && update_angle_from_move_flags(&o->oAngleToMario)) { sp1C = 4; o->oChuckyaUnkF8 = 4; } @@ -55,7 +55,7 @@ s32 Unknown802A8EC8(s32 sp20, f32 sp24, f32 sp28, s32 sp2C) { return sp1C; } -s32 func_802A9050(f32 *arr, f32 spC, f32 sp10) { +s32 approach_forward_vel(f32 *arr, f32 spC, f32 sp10) { s32 sp4 = 0; if (arr[0] > spC) { arr[0] -= sp10; @@ -70,18 +70,18 @@ s32 func_802A9050(f32 *arr, f32 spC, f32 sp10) { return sp4; } -void ActionChuckya0(void) { +void chuckya_act_0(void) { s32 sp3C; UNUSED u8 pad[16]; s32 sp28; if (o->oTimer == 0) o->oChuckyaUnkFC = 0; - o->oAngleToMario = angle_to_object(o, gMarioObject); + o->oAngleToMario = obj_angle_to_object(o, gMarioObject); switch (sp28 = o->oSubAction) { case 0: o->oForwardVel = 0; - if (obj_lateral_dist_from_mario_to_home() < 2000.0f) { - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + if (cur_obj_lateral_dist_from_mario_to_home() < 2000.0f) { + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); if (o->oChuckyaUnkFC > 40 || abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario) < 0x1000) o->oSubAction = 1; @@ -89,26 +89,26 @@ void ActionChuckya0(void) { o->oSubAction = 3; break; case 1: - func_802A9050(&o->oForwardVel, 30.0f, 4.0f); + approach_forward_vel(&o->oForwardVel, 30.0f, 4.0f); if (abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario) > 0x4000) o->oSubAction = 2; - if (obj_lateral_dist_from_mario_to_home() > 2000.0f) + if (cur_obj_lateral_dist_from_mario_to_home() > 2000.0f) o->oSubAction = 3; break; case 2: - func_802A9050(&o->oForwardVel, 0, 4.0f); + approach_forward_vel(&o->oForwardVel, 0, 4.0f); if (o->oChuckyaUnkFC > 48) o->oSubAction = 0; break; case 3: - if (obj_lateral_dist_to_home() < 500.0f) + if (cur_obj_lateral_dist_to_home() < 500.0f) o->oForwardVel = 0; else { - func_802A9050(&o->oForwardVel, 10.0f, 4.0f); - o->oAngleToMario = obj_angle_to_home(); - obj_rotate_yaw_toward(o->oAngleToMario, 0x800); + approach_forward_vel(&o->oForwardVel, 10.0f, 4.0f); + o->oAngleToMario = cur_obj_angle_to_home(); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x800); } - if (obj_lateral_dist_from_mario_to_home() < 1900.0f) + if (cur_obj_lateral_dist_from_mario_to_home() < 1900.0f) o->oSubAction = 0; break; } @@ -116,16 +116,16 @@ void ActionChuckya0(void) { o->oChuckyaUnkFC = 0; else o->oChuckyaUnkFC++; - set_obj_animation_and_sound_state(4); + cur_obj_init_animation_with_sound(4); if (o->oForwardVel > 1.0f) - PlaySound(SOUND_AIR_CHUCKYA_MOVE); + cur_obj_play_sound_1(SOUND_AIR_CHUCKYA_MOVE); print_debug_bottom_up("fg %d", sp3C); print_debug_bottom_up("sp %d", o->oForwardVel); } -void ActionChuckya1(void) { +void chuckya_act_1(void) { if (o->oSubAction == 0) { - if (func_802A4AB0(0)) + if (cur_obj_init_animation_and_check_if_near_end(0)) o->oSubAction++; o->oChuckyaUnkFC = RandomFloat() * 30.0f + 10.0f; o->oChuckyaUnk100 = 0; @@ -139,18 +139,18 @@ void ActionChuckya1(void) { o->oAction = 3; o->oInteractStatus &= ~(INT_STATUS_GRABBED_MARIO); } else { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); o->oMoveAngleYaw += INT_STATUS_GRABBED_MARIO; if (o->oChuckyaUnkFC-- < 0) - if (func_802B0C54(50.0f, 150.0f) || o->oChuckyaUnkFC < -16) { + if (check_if_moving_over_floor(50.0f, 150.0f) || o->oChuckyaUnkFC < -16) { o->oSubAction++; ; } } } else { - set_obj_animation_and_sound_state(3); - if (obj_check_anim_frame(18)) { - PlaySound2(SOUND_OBJ_UNKNOWN4); + cur_obj_init_animation_with_sound(3); + if (cur_obj_check_anim_frame(18)) { + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN4); o->oChuckyaUnk88 = 2; o->oAction = 3; o->oInteractStatus &= ~(INT_STATUS_GRABBED_MARIO); @@ -159,50 +159,50 @@ void ActionChuckya1(void) { } } -void ActionChuckya3(void) { +void chuckya_act_3(void) { o->oForwardVel = 0; o->oVelY = 0; - set_obj_animation_and_sound_state(4); + cur_obj_init_animation_with_sound(4); if (o->oTimer > 100) o->oAction = 0; } -void ActionChuckya2(void) { +void chuckya_act_2(void) { if (o->oMoveFlags & (0x200 | 0x40 | 0x20 | 0x10 | 0x8 | 0x1)) { - mark_object_for_deletion(o); - spawn_object_loot_yellow_coins(o, 5, 20.0f); - func_802A3034(SOUND_OBJ_CHUCKYA_DEATH); + obj_mark_for_deletion(o); + obj_spawn_loot_yellow_coins(o, 5, 20.0f); + spawn_mist_particles_with_sound(SOUND_OBJ_CHUCKYA_DEATH); } } -void (*sChuckyaActions[])(void) = { ActionChuckya0, ActionChuckya1, ActionChuckya2, ActionChuckya3 }; +void (*sChuckyaActions[])(void) = { chuckya_act_0, chuckya_act_1, chuckya_act_2, chuckya_act_3 }; -void func_802A97B8(void) { - obj_update_floor_and_walls(); - obj_call_action_function(sChuckyaActions); - obj_move_standard(-30); +void chuckya_move(void) { + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sChuckyaActions); + cur_obj_move_standard(-30); if (o->oInteractStatus & INT_STATUS_GRABBED_MARIO) { o->oAction = 1; o->oChuckyaUnk88 = 1; - PlaySound2(SOUND_OBJ_UNKNOWN3); + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN3); } } void bhv_chuckya_loop(void) { f32 sp2C = 20.0f; f32 sp28 = 50.0f; - obj_scale(2.0f); + cur_obj_scale(2.0f); o->oInteractionSubtype |= INT_SUBTYPE_GRABS_MARIO; switch (o->oHeldState) { case HELD_FREE: - func_802A97B8(); + chuckya_move(); break; case HELD_HELD: - func_8029FA5C(2, 0); + cur_obj_unrender_and_reset_state(2, 0); break; case HELD_THROWN: case HELD_DROPPED: - obj_get_thrown_or_placed(sp2C, sp28, 2); + cur_obj_get_thrown_or_placed(sp2C, sp28, 2); break; } o->oInteractStatus = 0; diff --git a/src/game/behaviors/clam.inc.c b/src/game/behaviors/clam.inc.c index 6ea3a1d9..6ce44029 100644 --- a/src/game/behaviors/clam.inc.c +++ b/src/game/behaviors/clam.inc.c @@ -14,18 +14,18 @@ struct ObjectHitbox sClamShellHitbox = { void clam_act_0(void) { if (func_802F92EC(0, 25)) { - PlaySound2(SOUND_GENERAL_CLAM_SHELL3); - func_802ADA94(); - obj_become_tangible(); + cur_obj_play_sound_2(SOUND_GENERAL_CLAM_SHELL3); + spawn_mist_from_global(); + cur_obj_become_tangible(); o->oClamUnkF4 = 10; o->oTimer = 0; } else if (o->oTimer > 150 && o->oDistanceToMario < 500.0f) { - PlaySound2(SOUND_GENERAL_CLAM_SHELL2); + cur_obj_play_sound_2(SOUND_GENERAL_CLAM_SHELL2); o->oAction = 1; } else if (o->oClamUnkF4 != 0) { o->oClamUnkF4 -= 1; - obj_shake_y(3.0f); + cur_obj_shake_y(3.0f); } } @@ -43,8 +43,8 @@ void clam_act_1(void) { spawn_object_relative(0, val04, 30, val02, o, MODEL_BUBBLE, bhvBubbleMaybe); } - } else if (obj_check_anim_frame(30)) { - obj_become_intangible(); + } else if (cur_obj_check_anim_frame(30)) { + cur_obj_become_intangible(); } } diff --git a/src/game/behaviors/clock_arm.inc.c b/src/game/behaviors/clock_arm.inc.c index a0b0d13b..26ff8948 100644 --- a/src/game/behaviors/clock_arm.inc.c +++ b/src/game/behaviors/clock_arm.inc.c @@ -22,7 +22,7 @@ void bhv_rotating_clock_arm_loop(void) { || marioSurface->type == SURFACE_TTC_PAINTING_2 || marioSurface->type == SURFACE_TTC_PAINTING_3)) { // And this is the minute hand... - if (obj_has_behavior(bhvClockMinuteHand)) { + if (cur_obj_has_behavior(bhvClockMinuteHand)) { // Set Tick Tick Clock's speed based on the angle of the hand. // The angle actually counting down from 0xFFFF to 0 so // 11 o'clock is a small value and 1 o'clock is a large value. @@ -46,5 +46,5 @@ void bhv_rotating_clock_arm_loop(void) { // Only rotate the hands until Mario enters the painting. if (o->oAction < 2) - obj_rotate_face_angle_using_vel(); + cur_obj_rotate_face_angle_using_vel(); } diff --git a/src/game/behaviors/cloud.inc.c b/src/game/behaviors/cloud.inc.c index addfa200..e5cb9bed 100644 --- a/src/game/behaviors/cloud.inc.c +++ b/src/game/behaviors/cloud.inc.c @@ -34,7 +34,7 @@ static void cloud_act_spawn_parts(void) { // Spawn fwoosh's face spawn_object_relative(5, 0, 0, 0, o, MODEL_FWOOSH, bhvCloudPart); - obj_scale(3.0f); + cur_obj_scale(3.0f); o->oCloudCenterX = o->oPosX; o->oCloudCenterY = o->oPosY; @@ -48,7 +48,7 @@ static void cloud_act_spawn_parts(void) { */ static void cloud_act_fwoosh_hidden(void) { if (o->oDistanceToMario < 2000.0f) { - obj_unhide(); + cur_obj_unhide(); o->oAction = CLOUD_ACT_SPAWN_PARTS; } } @@ -69,10 +69,10 @@ static void cloud_fwoosh_update(void) { o->oCloudBlowing = o->oTimer = 0; } else if (o->oCloudGrowSpeed < -0.1f) { // Start blowing once we start shrinking faster than -0.1 - PlaySound(SOUND_AIR_BLOW_WIND); - func_802C76E0(12, 3.0f, 0.0f, -50.0f, 120.0f); + cur_obj_play_sound_1(SOUND_AIR_BLOW_WIND); + cur_obj_spawn_strong_wind_particles(12, 3.0f, 0.0f, -50.0f, 120.0f); } else { - PlaySound(SOUND_ENV_WIND1); + cur_obj_play_sound_1(SOUND_ENV_WIND1); } } else { // Return to normal size @@ -94,7 +94,7 @@ static void cloud_fwoosh_update(void) { o->oCloudCenterY = o->oHomeY; } - obj_scale(o->header.gfx.scale[0]); + cur_obj_scale(o->header.gfx.scale[0]); } } @@ -141,11 +141,11 @@ static void cloud_act_main(void) { */ static void cloud_act_unload(void) { if (o->oBehParams2ndByte != CLOUD_BP_FWOOSH) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { o->oAction = CLOUD_ACT_FWOOSH_HIDDEN; - obj_hide(); - obj_set_pos_to_home(); + cur_obj_hide(); + cur_obj_set_pos_to_home(); } } @@ -174,7 +174,7 @@ void bhv_cloud_update(void) { */ void bhv_cloud_part_update(void) { if (o->parentObj->oAction == CLOUD_ACT_UNLOAD) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { f32 size = 2.0f / 3.0f * o->parentObj->header.gfx.scale[0]; s16 angleFromCenter = o->parentObj->oFaceAngleYaw + 0x10000 / 5 * o->oBehParams2ndByte; @@ -185,7 +185,7 @@ void bhv_cloud_part_update(void) { f32 cloudRadius; - obj_scale(size); + cur_obj_scale(size); // Cap fwoosh's face size if (o->oBehParams2ndByte == 5 && size > 2.0f) { diff --git a/src/game/behaviors/coffin.inc.c b/src/game/behaviors/coffin.inc.c index ff8d5752..5926bff8 100644 --- a/src/game/behaviors/coffin.inc.c +++ b/src/game/behaviors/coffin.inc.c @@ -76,14 +76,14 @@ void coffin_act_idle(void) { // If the coffin landed... if (obj_face_pitch_approach(0, -o->oAngleVelPitch)) { - PlaySound2(SOUND_GENERAL_ELEVATOR_MOVE_2); + cur_obj_play_sound_2(SOUND_GENERAL_ELEVATOR_MOVE_2); // This bit changes the coffin's position, // spawns dust there, then resets the position. obj_perform_position_op(POS_OP_SAVE_POSITION); o->oMoveAngleYaw = o->oFaceAngleYaw - 0x4000; obj_set_dist_from_home(200.0f); - func_802ADA94(); + spawn_mist_from_global(); obj_perform_position_op(POS_OP_RESTORE_POSITION); } @@ -105,7 +105,7 @@ void coffin_act_idle(void) { && (o->oDistanceToMario > 100.0f || gMarioState->action == ACT_SQUISHED)) { if (gMarioObject->oPosY - o->oPosY < 200.0f && absf(distForwards) < 140.0f) { if (distSideways < 150.0f && distSideways > -450.0f) { - PlaySound2(SOUND_GENERAL_BUTTON_PRESS_2_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_BUTTON_PRESS_2_LOWPRIO); o->oAction = COFFIN_ACT_STAND_UP; } } @@ -131,7 +131,7 @@ void coffin_act_stand_up(void) { o->oFaceAngleRoll = 0; } else if (o->oTimer > 30) { if (gGlobalTimer % 4 == 0) { - PlaySound2(SOUND_GENERAL_ELEVATOR_MOVE_2); + cur_obj_play_sound_2(SOUND_GENERAL_ELEVATOR_MOVE_2); } // Shake the coffin while its standing o->oFaceAngleRoll = 400 * (gGlobalTimer % 2) - 200; @@ -148,7 +148,7 @@ void coffin_act_stand_up(void) { void bhv_coffin_loop(void) { // Gotta save those 6 object slots if (o->parentObj->oAction == COFFIN_SPAWNER_ACT_COFFINS_UNLOADED) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { // Scale the coffin vertically? Must have thought it was too short? o->header.gfx.scale[1] = 1.1f; diff --git a/src/game/behaviors/coin.inc.c b/src/game/behaviors/coin.inc.c index e593ba7f..d7c27e30 100644 --- a/src/game/behaviors/coin.inc.c +++ b/src/game/behaviors/coin.inc.c @@ -18,7 +18,7 @@ s16 D_8032F2A4[][2] = { { 0, -150 }, { 0, -50 }, { 0, 50 }, { 0, 150 }, s32 bhv_coin_sparkles_init(void) { if (o->oInteractStatus & INT_STATUS_INTERACTED && !(o->oInteractStatus & INTERACT_TEXT)) { spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); return 1; } o->oInteractStatus = 0; @@ -26,14 +26,14 @@ s32 bhv_coin_sparkles_init(void) { } void bhv_yellow_coin_init(void) { - obj_set_behavior(bhvYellowCoin); - set_object_hitbox(o, &sYellowCoinHitbox); + cur_obj_set_behavior(bhvYellowCoin); + obj_set_hitbox(o, &sYellowCoinHitbox); bhv_init_room(); - obj_update_floor_height(); + cur_obj_update_floor_height(); if (500.0f < absf(o->oPosY - o->oFloorHeight)) - obj_set_model(MODEL_YELLOW_COIN_NO_SHADOW); + cur_obj_set_model(MODEL_YELLOW_COIN_NO_SHADOW); if (o->oFloorHeight < -10000.0f) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_yellow_coin_loop(void) { @@ -43,8 +43,8 @@ void bhv_yellow_coin_loop(void) { void bhv_temp_coin_loop(void) { o->oAnimState++; - if (obj_wait_then_blink(200, 20)) - mark_object_for_deletion(o); + if (cur_obj_wait_then_blink(200, 20)) + obj_mark_for_deletion(o); bhv_coin_sparkles_init(); } @@ -52,17 +52,17 @@ void bhv_coin_init(void) { o->oVelY = RandomFloat() * 10.0f + 30 + o->oCoinUnk110; o->oForwardVel = RandomFloat() * 10.0f; o->oMoveAngleYaw = RandomU16(); - obj_set_behavior(bhvYellowCoin); - set_object_hitbox(o, &sYellowCoinHitbox); - obj_become_intangible(); + cur_obj_set_behavior(bhvYellowCoin); + obj_set_hitbox(o, &sYellowCoinHitbox); + cur_obj_become_intangible(); } void bhv_coin_loop(void) { struct Surface *sp1C; s16 sp1A; - obj_update_floor_and_walls(); - obj_if_hit_wall_bounce_away(); - obj_move_standard(-62); + cur_obj_update_floor_and_walls(); + cur_obj_if_hit_wall_bounce_away(); + cur_obj_move_standard(-62); if ((sp1C = o->oFloor) != NULL) { if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) o->oSubAction = 1; @@ -70,70 +70,70 @@ void bhv_coin_loop(void) { o->oBounce = 0; if (sp1C->normal.y < 0.9) { sp1A = atan2s(sp1C->normal.z, sp1C->normal.x); - obj_rotate_yaw_toward(sp1A, 0x400); + cur_obj_rotate_yaw_toward(sp1A, 0x400); } } } if (o->oTimer == 0) #ifdef VERSION_US - PlaySound2(SOUND_GENERAL_COIN_SPURT_2); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT_2); #elif VERSION_EU - PlaySound2(SOUND_GENERAL_COIN_SPURT_EU); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT_EU); #else - PlaySound2(SOUND_GENERAL_COIN_SPURT); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT); #endif if (o->oVelY < 0) - obj_become_tangible(); + cur_obj_become_tangible(); if (o->oMoveFlags & OBJ_MOVE_LANDED) { #ifndef VERSION_JP if (o->oMoveFlags & (OBJ_MOVE_ABOVE_DEATH_BARRIER | OBJ_MOVE_ABOVE_LAVA)) #else if (o->oMoveFlags & OBJ_MOVE_ABOVE_LAVA) #endif - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } #ifndef VERSION_JP if (o->oMoveFlags & OBJ_MOVE_13) { if (o->oCoinUnk1B0 < 5) - PlaySound2(0x30364081); + cur_obj_play_sound_2(0x30364081); o->oCoinUnk1B0++; } #else if (o->oMoveFlags & OBJ_MOVE_13) - PlaySound2(SOUND_GENERAL_COIN_DROP); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP); #endif - if (obj_wait_then_blink(400, 20)) - mark_object_for_deletion(o); + if (cur_obj_wait_then_blink(400, 20)) + obj_mark_for_deletion(o); bhv_coin_sparkles_init(); } void bhv_coin_formation_spawn_loop(void) { if (o->oTimer == 0) { - obj_set_behavior(bhvYellowCoin); - set_object_hitbox(o, &sYellowCoinHitbox); + cur_obj_set_behavior(bhvYellowCoin); + obj_set_hitbox(o, &sYellowCoinHitbox); bhv_init_room(); if (o->oCoinUnkF8) { o->oPosY += 300.0f; - obj_update_floor_height(); + cur_obj_update_floor_height(); if (o->oPosY < o->oFloorHeight || o->oFloorHeight < -10000.0f) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); else o->oPosY = o->oFloorHeight; } else { - obj_update_floor_height(); + cur_obj_update_floor_height(); if (absf(o->oPosY - o->oFloorHeight) > 250.0f) - obj_set_model(MODEL_YELLOW_COIN_NO_SHADOW); + cur_obj_set_model(MODEL_YELLOW_COIN_NO_SHADOW); } } else { if (bhv_coin_sparkles_init()) - o->parentObj->oCoinUnkF4 |= func_802A377C(o->oBehParams2ndByte); + o->parentObj->oCoinUnkF4 |= bit_shift_left(o->oBehParams2ndByte); o->oAnimState++; } if (o->parentObj->oAction == 2) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void func_802AB364(s32 sp50, s32 sp54) { +void spawn_coin_in_formation(s32 sp50, s32 sp54) { struct Object *sp4C; Vec3i sp40; s32 sp3C = 1; @@ -187,7 +187,7 @@ void bhv_coin_formation_loop(void) { if (o->oDistanceToMario < 2000.0f) { for (bitIndex = 0; bitIndex < 8; bitIndex++) { if (!(o->oCoinUnkF4 & (1 << bitIndex))) - func_802AB364(bitIndex, o->oBehParams2ndByte); + spawn_coin_in_formation(bitIndex, o->oBehParams2ndByte); } o->oAction++; } @@ -205,34 +205,34 @@ void bhv_coin_formation_loop(void) { set_object_respawn_info_bits(o, o->oCoinUnkF4 & 0xFF); } -void ActionCoinInsideBoo1(void) { - obj_update_floor_and_walls(); - obj_if_hit_wall_bounce_away(); +void coin_inside_boo_act_1(void) { + cur_obj_update_floor_and_walls(); + cur_obj_if_hit_wall_bounce_away(); if (o->oMoveFlags & OBJ_MOVE_13) - PlaySound2(SOUND_GENERAL_COIN_DROP); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP); if (o->oTimer > 90 || (o->oMoveFlags & OBJ_MOVE_LANDED)) { - set_object_hitbox(o, &sYellowCoinHitbox); - obj_become_tangible(); - obj_set_behavior(bhvYellowCoin); + obj_set_hitbox(o, &sYellowCoinHitbox); + cur_obj_become_tangible(); + cur_obj_set_behavior(bhvYellowCoin); } - obj_move_standard(-30); + cur_obj_move_standard(-30); bhv_coin_sparkles_init(); - if (obj_has_model(MODEL_BLUE_COIN)) + if (cur_obj_has_model(MODEL_BLUE_COIN)) o->oDamageOrCoinValue = 5; - if (obj_wait_then_blink(400, 20)) - mark_object_for_deletion(o); + if (cur_obj_wait_then_blink(400, 20)) + obj_mark_for_deletion(o); } -void ActionCoinInsideBoo0(void) { +void coin_inside_boo_act_0(void) { s16 sp26; f32 sp20; struct Object *parent = o->parentObj; - obj_become_intangible(); + cur_obj_become_intangible(); if (o->oTimer == 0 && gCurrLevelNum == LEVEL_BBH) { - obj_set_model(MODEL_BLUE_COIN); - obj_scale(0.7); + cur_obj_set_model(MODEL_BLUE_COIN); + cur_obj_scale(0.7); } - copy_object_pos(o, parent); + obj_copy_pos(o, parent); if (parent->oBooDeathStatus == BOO_DEATH_STATUS_DYING) { o->oAction = 1; sp26 = gMarioObject->oMoveAngleYaw; @@ -243,14 +243,14 @@ void ActionCoinInsideBoo0(void) { } } -void (*sCoinInsideBooActions[])(void) = { ActionCoinInsideBoo0, ActionCoinInsideBoo1 }; +void (*sCoinInsideBooActions[])(void) = { coin_inside_boo_act_0, coin_inside_boo_act_1 }; void bhv_coin_inside_boo_loop(void) { - obj_call_action_function(sCoinInsideBooActions); + cur_obj_call_action_function(sCoinInsideBooActions); } void bhv_coin_sparkles_loop(void) { - obj_scale(0.6f); + cur_obj_scale(0.6f); } void bhv_golden_coin_sparkles_loop(void) { diff --git a/src/game/behaviors/collide_particles.inc.c b/src/game/behaviors/collide_particles.inc.c index 775ebd87..ff93a511 100644 --- a/src/game/behaviors/collide_particles.inc.c +++ b/src/game/behaviors/collide_particles.inc.c @@ -11,15 +11,15 @@ void bhv_punch_tiny_triangle_loop(void) { if (o->oTimer == 0) { sp1E = o->oMoveAngleYaw; o->oCollisionParticleUnkF4 = 1.28f; - obj_set_pos_relative(gMarioObject, 0.0f, 60.0f, 100.0f); - o->oMoveAngleYaw = sp1E; // does obj_set_pos_relative modify currentObject? + cur_obj_set_pos_relative(gMarioObject, 0.0f, 60.0f, 100.0f); + o->oMoveAngleYaw = sp1E; } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); o->oAnimState = 5; - obj_scale(o->oCollisionParticleUnkF4); + cur_obj_scale(o->oCollisionParticleUnkF4); o->oCollisionParticleUnkF4 -= 0.2f; if (gDebugInfo[4][0] + 6 < o->oTimer) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_punch_tiny_triangle_init(void) { @@ -39,12 +39,12 @@ void bhv_wall_tiny_star_particle_loop(void) { if (o->oTimer == 0) { sp1E = o->oMoveAngleYaw; o->oCollisionParticleUnkF4 = 0.28f; - obj_set_pos_relative(gMarioObject, 0.0f, 30.0f, 110.0f); + cur_obj_set_pos_relative(gMarioObject, 0.0f, 30.0f, 110.0f); o->oMoveAngleYaw = sp1E; } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); o->oAnimState = 4; - obj_scale(o->oCollisionParticleUnkF4); + cur_obj_scale(o->oCollisionParticleUnkF4); o->oCollisionParticleUnkF4 -= 0.015f; } @@ -67,9 +67,9 @@ void bhv_pound_tiny_star_particle_loop(void) { o->oPosY -= 20.0f; o->oVelY = 14.0f; } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); o->oAnimState = 4; - obj_scale(o->oCollisionParticleUnkF4); + cur_obj_scale(o->oCollisionParticleUnkF4); o->oCollisionParticleUnkF4 -= 0.015f; } diff --git a/src/game/behaviors/controllable_platform.inc.c b/src/game/behaviors/controllable_platform.inc.c index 1f506ecc..de0ee086 100644 --- a/src/game/behaviors/controllable_platform.inc.c +++ b/src/game/behaviors/controllable_platform.inc.c @@ -2,7 +2,7 @@ static s8 D_80331694 = 0; -void func_802F3BD8(void) { +void controllable_platform_act_1(void) { o->oParentRelativePosY -= 4.0f; if (o->oParentRelativePosY < 41.0f) { o->oParentRelativePosY = 41.0f; @@ -10,7 +10,7 @@ void func_802F3BD8(void) { } } -void func_802F3C50(void) { +void controllable_platform_act_2(void) { if (o->oBehParams2ndByte == D_80331694) return; @@ -30,16 +30,16 @@ void bhv_controllable_platform_sub_loop(void) { if (gMarioObject->platform == o) { D_80331694 = o->oBehParams2ndByte; o->oAction = 1; - PlaySound2(SOUND_GENERAL_MOVING_PLATFORM_SWITCH); + cur_obj_play_sound_2(SOUND_GENERAL_MOVING_PLATFORM_SWITCH); } break; case 1: - func_802F3BD8(); + controllable_platform_act_1(); break; case 2: - func_802F3C50(); + controllable_platform_act_2(); break; } @@ -70,22 +70,22 @@ void bhv_controllable_platform_init(void) { o->oControllablePlatformUnkFC = o->oPosY; } -void func_802F3F80(s8 sp1B) { +void controllable_platform_hit_wall(s8 sp1B) { o->oControllablePlatformUnkF8 = sp1B; o->oTimer = 0; D_80331694 = 5; - PlaySound2(SOUND_GENERAL_QUIET_POUND1); + cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1); } -void func_802F3FD8(s8 sp1B, s8 sp1C[3], Vec3f sp20, UNUSED Vec3f sp24, Vec3f sp28) { +void controllable_platform_check_walls(s8 sp1B, s8 sp1C[3], Vec3f sp20, UNUSED Vec3f sp24, Vec3f sp28) { if (sp1C[1] == 1 || (sp1C[0] == 1 && sp1C[2] == 1)) - func_802F3F80(sp1B); + controllable_platform_hit_wall(sp1B); else { if (sp1C[0] == 1) { if (((sp1B == 1 || sp1B == 2) && (s32) sp20[2] != 0) || ((sp1B == 3 || sp1B == 4) && (s32) sp20[0] != 0)) { - func_802F3F80(sp1B); + controllable_platform_hit_wall(sp1B); } else { o->oPosX += sp20[0]; o->oPosZ += sp20[2]; @@ -95,7 +95,7 @@ void func_802F3FD8(s8 sp1B, s8 sp1C[3], Vec3f sp20, UNUSED Vec3f sp24, Vec3f sp2 if (sp1C[2] == 1) { if (((sp1B == 1 || sp1B == 2) && (s32) sp28[2] != 0) || ((sp1B == 3 || sp1B == 4) && (s32) sp28[0] != 0)) { - func_802F3F80(sp1B); + controllable_platform_hit_wall(sp1B); } else { o->oPosX += sp28[0]; o->oPosZ += sp28[2]; @@ -110,7 +110,7 @@ void func_802F3FD8(s8 sp1B, s8 sp1C[3], Vec3f sp20, UNUSED Vec3f sp24, Vec3f sp2 } } -void func_802F4230(void) { +void controllable_platform_shake_on_wall_hit(void) { if (o->oControllablePlatformUnkF8 == 1 || o->oControllablePlatformUnkF8 == 2) { o->oFaceAnglePitch = sins(o->oTimer * 0x1000) * 182.04444 * 10.0; o->oPosY = o->oControllablePlatformUnkFC + sins(o->oTimer * 0x2000) * 20.0f; @@ -127,12 +127,12 @@ void func_802F4230(void) { } } -void func_802F43EC(void) { +void controllable_platform_tilt_from_mario(void) { s16 sp1E = gMarioObject->header.gfx.pos[0] - o->oPosX; s16 sp1C = gMarioObject->header.gfx.pos[2] - o->oPosZ; if (gMarioObject->platform == o - || gMarioObject->platform == obj_nearest_object_with_behavior(bhvControllablePlatformSub)) { + || gMarioObject->platform == cur_obj_nearest_object_with_behavior(bhvControllablePlatformSub)) { o->oFaceAnglePitch = sp1C * 4; o->oFaceAngleRoll = -sp1E * 4; if (D_80331694 == 6) { @@ -170,7 +170,7 @@ void bhv_controllable_platform_loop(void) { sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f); sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX, o->oPosY, o->oPosZ + 300.0, 50.0f); sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f); - func_802F3FD8(2, sp54, sp48, sp3C, sp30); + controllable_platform_check_walls(2, sp54, sp48, sp3C, sp30); break; case 2: @@ -178,7 +178,7 @@ void bhv_controllable_platform_loop(void) { sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f); sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX, o->oPosY, o->oPosZ - 300.0, 50.0f); sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f); - func_802F3FD8(1, sp54, sp48, sp3C, sp30); + controllable_platform_check_walls(1, sp54, sp48, sp3C, sp30); break; case 3: @@ -186,7 +186,7 @@ void bhv_controllable_platform_loop(void) { sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f); sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX + 300.0, o->oPosY, o->oPosZ, 50.0f); sp54[2] = obj_find_wall_displacement(sp30, o->oPosX + 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f); - func_802F3FD8(4, sp54, sp48, sp3C, sp30); + controllable_platform_check_walls(4, sp54, sp48, sp3C, sp30); break; case 4: @@ -194,11 +194,11 @@ void bhv_controllable_platform_loop(void) { sp54[0] = obj_find_wall_displacement(sp48, o->oPosX - 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f); sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX - 300.0, o->oPosY, o->oPosZ, 50.0f); sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f); - func_802F3FD8(3, sp54, sp48, sp3C, sp30); + controllable_platform_check_walls(3, sp54, sp48, sp3C, sp30); break; case 5: - func_802F4230(); + controllable_platform_shake_on_wall_hit(); return; break; @@ -209,9 +209,9 @@ void bhv_controllable_platform_loop(void) { break; } - func_802F43EC(); + controllable_platform_tilt_from_mario(); o->oPosX += o->oVelX; o->oPosZ += o->oVelZ; if (D_80331694 != 0 && D_80331694 != 6) - PlaySound(SOUND_ENV_ELEVATOR2); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2); } diff --git a/src/game/behaviors/corkbox.inc.c b/src/game/behaviors/corkbox.inc.c index f2edb6c5..cbc50ea9 100644 --- a/src/game/behaviors/corkbox.inc.c +++ b/src/game/behaviors/corkbox.inc.c @@ -4,11 +4,11 @@ void bhv_bobomb_bully_death_smoke_init(void) { o->oPosY -= 300.0f; - obj_scale(10.0f); + cur_obj_scale(10.0f); } void bhv_bobomb_explosion_bubble_init(void) { - scale_object_xyz(o, 2.0f, 2.0f, 1.0f); + obj_scale_xyz(o, 2.0f, 2.0f, 1.0f); o->oBobombExpBubGfxExpRateX = (s32)(RandomFloat() * 2048.0f) + 0x800; o->oBobombExpBubGfxExpRateY = (s32)(RandomFloat() * 2048.0f) + 0x800; @@ -28,7 +28,7 @@ void bhv_bobomb_explosion_bubble_loop(void) { if (o->oPosY > waterY) { o->activeFlags = 0; o->oPosY += 5.0f; - spawn_object(o, MODEL_SPOT_ON_GROUND, bhvWaterSurfaceWhiteWave2); + spawn_object(o, MODEL_SMALL_WATER_SPLASH, bhvObjectWaterSplash); } if (o->oTimer >= 61) diff --git a/src/game/behaviors/cruiser.inc.c b/src/game/behaviors/cruiser.inc.c index c866ad20..a705bb2c 100644 --- a/src/game/behaviors/cruiser.inc.c +++ b/src/game/behaviors/cruiser.inc.c @@ -15,7 +15,7 @@ void bhv_rr_cruiser_wing_loop(void) { } #ifndef VERSION_JP if (o->oTimer == 64) { - PlaySound2(SOUND_GENERAL_BOAT_ROCK); + cur_obj_play_sound_2(SOUND_GENERAL_BOAT_ROCK); o->oTimer = 0; } #endif diff --git a/src/game/behaviors/ddd_pole.inc.c b/src/game/behaviors/ddd_pole.inc.c index a72e98c0..58d7d616 100644 --- a/src/game/behaviors/ddd_pole.inc.c +++ b/src/game/behaviors/ddd_pole.inc.c @@ -1,7 +1,7 @@ void bhv_ddd_pole_init(void) { if (!(save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR))) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { o->hitboxDownOffset = 100.0f; o->oDDDPoleMaxOffset = 100.0f * o->oBehParams2ndByte; diff --git a/src/game/behaviors/ddd_sub.inc.c b/src/game/behaviors/ddd_sub.inc.c index e9ed3475..d8479c65 100644 --- a/src/game/behaviors/ddd_sub.inc.c +++ b/src/game/behaviors/ddd_sub.inc.c @@ -2,5 +2,5 @@ void bhv_bowsers_sub_loop(void) { if (save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR)) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } diff --git a/src/game/behaviors/ddd_warp.inc.c b/src/game/behaviors/ddd_warp.inc.c index 7e97ab66..617e850f 100644 --- a/src/game/behaviors/ddd_warp.inc.c +++ b/src/game/behaviors/ddd_warp.inc.c @@ -1,7 +1,7 @@ // ddd_warp.c.inc void bhv_ddd_warp_loop(void) { - if (dddStatus & BOWSERS_SUB_BEATEN) + if (gDddPaintingStatus & BOWSERS_SUB_BEATEN) o->collisionData = segmented_to_virtual(inside_castle_seg7_collision_ddd_warp_2); else o->collisionData = segmented_to_virtual(inside_castle_seg7_collision_ddd_warp); diff --git a/src/game/behaviors/decorative_pendulum.inc.c b/src/game/behaviors/decorative_pendulum.inc.c index 7d05ccd2..2aa9539f 100644 --- a/src/game/behaviors/decorative_pendulum.inc.c +++ b/src/game/behaviors/decorative_pendulum.inc.c @@ -27,5 +27,5 @@ void bhv_decorative_pendulum_loop(void) { * actually one sound played twice in rapid succession. */ if (o->oAngleVelRoll == 0x10 || o->oAngleVelRoll == -0x10) - PlaySound2(SOUND_GENERAL_BIG_CLOCK); + cur_obj_play_sound_2(SOUND_GENERAL_BIG_CLOCK); } diff --git a/src/game/behaviors/donut_platform.inc.c b/src/game/behaviors/donut_platform.inc.c index c12f58ce..afabb2a1 100644 --- a/src/game/behaviors/donut_platform.inc.c +++ b/src/game/behaviors/donut_platform.inc.c @@ -47,25 +47,25 @@ void bhv_donut_platform_update(void) { & ((1 << o->oBehParams2ndByte) ^ 0xFFFFFFFF); if (o->oDistanceToMario > 2500.0f) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { - func_802A3C98(150.0f, 1); + obj_explode_and_spawn_coins(150.0f, 1); create_sound_spawner(SOUND_GENERAL_DONUT_PLATFORM_EXPLOSION); } } else { if (o->oGravity == 0.0f) { if (gMarioObject->platform == o) { - obj_shake_y(4.0f); + cur_obj_shake_y(4.0f); if (o->oTimer > 15) { o->oGravity = -0.1f; } } else { - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); o->oTimer = 0; } } else { - obj_update_floor_and_walls(); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); } load_object_collision_model(); diff --git a/src/game/behaviors/door.inc.c b/src/game/behaviors/door.inc.c index a174beee..ecd24d69 100644 --- a/src/game/behaviors/door.inc.c +++ b/src/game/behaviors/door.inc.c @@ -12,13 +12,13 @@ s32 D_8032F328[] = { SOUND_GENERAL_OPEN_WOOD_DOOR, SOUND_GENERAL_OPEN_IRON_DOOR s32 D_8032F330[] = { SOUND_GENERAL_CLOSE_WOOD_DOOR, SOUND_GENERAL_CLOSE_IRON_DOOR }; -void func_802AC070(s32 sp18) { - set_obj_animation_and_sound_state(sp18); - if (func_8029F788()) +void door_animation_and_reset(s32 sp18) { + cur_obj_init_animation_with_sound(sp18); + if (cur_obj_check_if_near_animation_end()) o->oAction = 0; } -void func_802AC0B8(void) { +void set_door_camera_event(void) { if (segmented_to_virtual(bhvDoor) == o->behavior) gPlayerCameraState->cameraEvent = CAM_EVENT_DOOR; else @@ -26,53 +26,53 @@ void func_802AC0B8(void) { gPlayerCameraState->usedObj = o; } -void func_802AC130(void) { - s32 sp1C = obj_has_model(MODEL_HMC_METAL_DOOR); +void play_door_open_noise(void) { + s32 sp1C = cur_obj_has_model(MODEL_HMC_METAL_DOOR); if (o->oTimer == 0) { - PlaySound2(D_8032F328[sp1C]); + cur_obj_play_sound_2(D_8032F328[sp1C]); gTimeStopState |= TIME_STOP_MARIO_OPENED_DOOR; } if (o->oTimer == 70) { - PlaySound2(D_8032F330[sp1C]); + cur_obj_play_sound_2(D_8032F330[sp1C]); } } -void func_802AC1CC(void) { - s32 sp1C = obj_has_model(MODEL_HMC_METAL_DOOR); +void play_warp_door_open_noise(void) { + s32 sp1C = cur_obj_has_model(MODEL_HMC_METAL_DOOR); if (o->oTimer == 30) - PlaySound2(D_8032F330[sp1C]); + cur_obj_play_sound_2(D_8032F330[sp1C]); } void bhv_door_loop(void) { s32 sp1C = 0; while (D_8032F300[sp1C].flag != (u32)~0) { - if (obj_clear_interact_status_flag(D_8032F300[sp1C].flag)) { - func_802AC0B8(); - obj_change_action(D_8032F300[sp1C].action); + if (cur_obj_clear_interact_status_flag(D_8032F300[sp1C].flag)) { + set_door_camera_event(); + cur_obj_change_action(D_8032F300[sp1C].action); } sp1C++; } switch (o->oAction) { case 0: - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); break; case 1: - func_802AC070(1); - func_802AC130(); + door_animation_and_reset(1); + play_door_open_noise(); break; case 2: - func_802AC070(2); - func_802AC130(); + door_animation_and_reset(2); + play_door_open_noise(); break; case 3: - func_802AC070(3); - func_802AC1CC(); + door_animation_and_reset(3); + play_warp_door_open_noise(); break; case 4: - func_802AC070(4); - func_802AC1CC(); + door_animation_and_reset(4); + play_warp_door_open_noise(); break; } if (o->oAction == 0) diff --git a/src/game/behaviors/dorrie.inc.c b/src/game/behaviors/dorrie.inc.c index 08b4371b..6a522c77 100644 --- a/src/game/behaviors/dorrie.inc.c +++ b/src/game/behaviors/dorrie.inc.c @@ -23,10 +23,10 @@ void dorrie_act_move(void) { startYaw = o->oMoveAngleYaw; o->oDorrieNeckAngle = -0x26F4; - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); if (o->oDorrieForwardDistToMario < 320.0f && o->oDorrieGroundPounded) { - PlaySound2(SOUND_OBJ_DORRIE); + cur_obj_play_sound_2(SOUND_OBJ_DORRIE); o->collisionData = segmented_to_virtual(dorrie_seg6_collision_0600FBB8); o->oAction = DORRIE_ACT_LOWER_HEAD; o->oForwardVel = 0.0f; @@ -62,7 +62,7 @@ void dorrie_begin_head_raise(s32 liftingMario) { void dorrie_act_lower_head(void) { if (func_802F92EC(2, 35)) { - func_8029F6F0(); + cur_obj_reverse_animation(); #ifdef VERSION_JP if (o->oTimer > 150) { @@ -94,17 +94,17 @@ void dorrie_act_lower_head(void) { void dorrie_act_raise_head(void) { o->collisionData = segmented_to_virtual(dorrie_seg6_collision_0600F644); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oAction = DORRIE_ACT_MOVE; } else if (o->oDorrieLiftingMario && o->header.gfx.unk38.animFrame < 74) { if (set_mario_npc_dialog(2) == 2) { o->oDorrieHeadRaiseSpeed += 0x1CC; - if (obj_check_anim_frame(73)) { + if (cur_obj_check_anim_frame(73)) { set_mario_npc_dialog(0); } dorrie_raise_head(); } else { - func_8029F6F0(); + cur_obj_reverse_animation(); } } } @@ -119,10 +119,10 @@ void bhv_dorrie_update(void) { o->oDorrieForwardDistToMario = o->oDistanceToMario * coss(o->oAngleToMario - o->oMoveAngleYaw); obj_perform_position_op(0); - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); - o->oDorrieAngleToHome = obj_angle_to_home(); - o->oDorrieDistToHome = obj_lateral_dist_to_home(); + o->oDorrieAngleToHome = cur_obj_angle_to_home(); + o->oDorrieDistToHome = cur_obj_lateral_dist_to_home(); // Shift dorrie's bounds to account for her neck boundsShift = @@ -133,7 +133,7 @@ void bhv_dorrie_update(void) { o->oPosZ = o->oHomeZ - o->oDorrieDistToHome * coss(o->oDorrieAngleToHome); } - o->oDorrieGroundPounded = obj_is_mario_ground_pounding_platform(); + o->oDorrieGroundPounded = cur_obj_is_mario_ground_pounding_platform(); if (gMarioObject->platform == o) { maxOffsetY = -17.0f; diff --git a/src/game/behaviors/drawbridge.inc.c b/src/game/behaviors/drawbridge.inc.c index 406503b5..e23c163d 100644 --- a/src/game/behaviors/drawbridge.inc.c +++ b/src/game/behaviors/drawbridge.inc.c @@ -36,7 +36,7 @@ void bhv_lll_drawbridge_loop(void) { // the game at regular intervals can leave the drawbridge raised indefinitely. if (o->oTimer >= 51 && (globalTimer % 8) == 0) { o->oAction = LLL_DRAWBRIDGE_ACT_LOWER; - PlaySound2(SOUND_GENERAL_BOAT_TILT1); + cur_obj_play_sound_2(SOUND_GENERAL_BOAT_TILT1); } } @@ -47,7 +47,7 @@ void bhv_lll_drawbridge_loop(void) { // the game at regular intervals can leave the drawbridge lowered indefinitely. if (o->oTimer >= 51 && (globalTimer % 8) == 0) { o->oAction = LLL_DRAWBRIDGE_ACT_RAISE; - PlaySound2(SOUND_GENERAL_BOAT_TILT2); + cur_obj_play_sound_2(SOUND_GENERAL_BOAT_TILT2); } } } diff --git a/src/game/behaviors/elevator.inc.c b/src/game/behaviors/elevator.inc.c index cd899ad7..d2445ae4 100644 --- a/src/game/behaviors/elevator.inc.c +++ b/src/game/behaviors/elevator.inc.c @@ -1,11 +1,11 @@ // elevator.c.inc -void func_802AD01C(void) { - PlaySound2(SOUND_GENERAL_QUIET_POUND1); - ShakeScreen(SHAKE_POS_SMALL); +void elevator_starting_shake(void) { + cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1); + cur_obj_shake_screen(SHAKE_POS_SMALL); } -void ActionElevator0(void) { +void elevator_act_0(void) { o->oVelY = 0; if (o->oElevatorUnk100 == 2) { if (gMarioObject->platform == o) { @@ -25,10 +25,10 @@ void ActionElevator0(void) { } } -void ActionElevator1(void) { - PlaySound(SOUND_ENV_ELEVATOR1); - if (o->oTimer == 0 && obj_is_mario_on_platform()) - func_802AD01C(); +void elevator_act_1(void) { + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1); + if (o->oTimer == 0 && cur_obj_is_mario_on_platform()) + elevator_starting_shake(); approach_f32_signed(&o->oVelY, 10.0f, 2.0f); o->oPosY += o->oVelY; if (o->oPosY > o->oElevatorUnkF8) { @@ -42,11 +42,11 @@ void ActionElevator1(void) { } } -void ActionElevator2() // Pretty similar code to action 1 +void elevator_act_2() // Pretty similar code to action 1 { - PlaySound(SOUND_ENV_ELEVATOR1); - if (o->oTimer == 0 && obj_is_mario_on_platform()) - func_802AD01C(); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1); + if (o->oTimer == 0 && cur_obj_is_mario_on_platform()) + elevator_starting_shake(); approach_f32_signed(&o->oVelY, -10.0f, -2.0f); o->oPosY += o->oVelY; if (o->oPosY < o->oElevatorUnkF4) { @@ -62,24 +62,24 @@ void ActionElevator2() // Pretty similar code to action 1 } } -void ActionElevator4() { +void elevator_act_4() { o->oVelY = 0; if (o->oTimer == 0) { - ShakeScreen(SHAKE_POS_SMALL); - PlaySound2(SOUND_GENERAL_METAL_POUND); + cur_obj_shake_screen(SHAKE_POS_SMALL); + cur_obj_play_sound_2(SOUND_GENERAL_METAL_POUND); } - if (!mario_is_in_air_action() && !obj_is_mario_on_platform()) + if (!mario_is_in_air_action() && !cur_obj_is_mario_on_platform()) o->oAction = 1; } -void ActionElevator3() // nearly identical to action 2 +void elevator_act_3() // nearly identical to action 2 { o->oVelY = 0; if (o->oTimer == 0) { - ShakeScreen(SHAKE_POS_SMALL); - PlaySound2(SOUND_GENERAL_METAL_POUND); + cur_obj_shake_screen(SHAKE_POS_SMALL); + cur_obj_play_sound_2(SOUND_GENERAL_METAL_POUND); } - if (!mario_is_in_air_action() && !obj_is_mario_on_platform()) + if (!mario_is_in_air_action() && !cur_obj_is_mario_on_platform()) o->oAction = 0; } @@ -89,7 +89,7 @@ void bhv_elevator_init(void) { o->oElevatorUnkF4 = D_8032F38C[o->oBehParams2ndByte * 3]; o->oElevatorUnkF8 = o->oHomeY; o->oElevatorUnkFC = (o->oElevatorUnkF4 + o->oElevatorUnkF8) / 2; - o->oElevatorUnk100 = obj_has_behavior(bhvRrElevatorPlatform); + o->oElevatorUnk100 = cur_obj_has_behavior(bhvRrElevatorPlatform); } else { o->oElevatorUnkF4 = D_8032F38C[o->oBehParams2ndByte * 3]; o->oElevatorUnkF8 = D_8032F38C[o->oBehParams2ndByte * 3 + 1]; @@ -98,8 +98,8 @@ void bhv_elevator_init(void) { } } -void (*sElevatorActions[])(void) = { ActionElevator0, ActionElevator1, ActionElevator2, ActionElevator3, - ActionElevator4 }; +void (*sElevatorActions[])(void) = { elevator_act_0, elevator_act_1, elevator_act_2, elevator_act_3, + elevator_act_4 }; struct SpawnParticlesInfo D_8032F3CC = { 3, 20, MODEL_MIST, 20, 10, 5, 0, 0, 0, 30, 30.0f, 1.5f }; @@ -111,5 +111,5 @@ struct SpawnParticlesInfo D_8032F3FC = { 0, 5, MODEL_WHITE_PARTICLE_DL, 0, 2.0f, 2.0f }; void bhv_elevator_loop(void) { - obj_call_action_function(sElevatorActions); + cur_obj_call_action_function(sElevatorActions); } diff --git a/src/game/behaviors/end_birds_1.inc.c b/src/game/behaviors/end_birds_1.inc.c index 1aa75c36..b7526f76 100644 --- a/src/game/behaviors/end_birds_1.inc.c +++ b/src/game/behaviors/end_birds_1.inc.c @@ -6,7 +6,7 @@ void bhv_end_birds_1_loop(void) { switch (gCurrentObject->oAction) { case 0: - obj_scale(0.7f); + cur_obj_scale(0.7f); gCurrentObject->oIntroLakituUnk110 = -554.f; gCurrentObject->oIntroLakituUnk10C = 3044.f; gCurrentObject->oIntroLakituUnk108 = -1314.f; @@ -19,11 +19,11 @@ void bhv_end_birds_1_loop(void) { if (gCurrentObject->oTimer < 100) obj_rotate_towards_point(gCurrentObject, sp34, 0, 0, 0x20, 0x20); if ((gCurrentObject->oEndBirdUnk104 == 0.f) && (gCurrentObject->oTimer == 0)) - PlaySound2(SOUND_GENERAL_BIRDS_FLY_AWAY); + cur_obj_play_sound_2(SOUND_GENERAL_BIRDS_FLY_AWAY); if (gCutsceneTimer == 0) - mark_object_for_deletion(gCurrentObject); + obj_mark_for_deletion(gCurrentObject); break; } - func_802A2A38(); + cur_obj_set_pos_via_transform(); } diff --git a/src/game/behaviors/end_birds_2.inc.c b/src/game/behaviors/end_birds_2.inc.c index 3a7580ce..5b0aafdb 100644 --- a/src/game/behaviors/end_birds_2.inc.c +++ b/src/game/behaviors/end_birds_2.inc.c @@ -11,7 +11,7 @@ void bhv_end_birds_2_loop(void) { switch (gCurrentObject->oAction) { case 0: - obj_scale(0.7f); + cur_obj_scale(0.7f); gCurrentObject->oAction += 1; break; case 1: @@ -23,9 +23,9 @@ void bhv_end_birds_2_loop(void) { obj_rotate_towards_point(gCurrentObject, sp3C, 0, 0, 8, 8); if ((gCurrentObject->oEndBirdUnk104 == 0.f) && (gCurrentObject->oTimer == 0)) - PlaySound2(SOUND_GENERAL_BIRDS_FLY_AWAY); + cur_obj_play_sound_2(SOUND_GENERAL_BIRDS_FLY_AWAY); break; } - func_802A2A38(); + cur_obj_set_pos_via_transform(); } diff --git a/src/game/behaviors/enemy_lakitu.inc.c b/src/game/behaviors/enemy_lakitu.inc.c index 8ac298f9..5fcaf5e7 100644 --- a/src/game/behaviors/enemy_lakitu.inc.c +++ b/src/game/behaviors/enemy_lakitu.inc.c @@ -27,7 +27,7 @@ static void enemy_lakitu_act_uninitialized(void) { if (o->oDistanceToMario < 2000.0f) { spawn_object_relative_with_scale(CLOUD_BP_LAKITU_CLOUD, 0, 0, 0, 2.0f, o, MODEL_MIST, bhvCloud); - obj_unhide(); + cur_obj_unhide(); o->oAction = ENEMY_LAKITU_ACT_MAIN; } } @@ -85,7 +85,7 @@ static void enemy_lakitu_update_speed_and_angle(void) { // Change move angle toward mario faster when farther from mario turnSpeed = (s16)(distToMario * 2); clamp_s16(&turnSpeed, 0xC8, 0xFA0); - obj_rotate_yaw_toward(o->oAngleToMario, turnSpeed); + cur_obj_rotate_yaw_toward(o->oAngleToMario, turnSpeed); } /** @@ -93,7 +93,7 @@ static void enemy_lakitu_update_speed_and_angle(void) { * hold it, then enter the hold spiny sub-action. */ static void enemy_lakitu_sub_act_no_spiny(void) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); if (o->oEnemyLakituSpinyCooldown != 0) { o->oEnemyLakituSpinyCooldown -= 1; @@ -103,8 +103,7 @@ static void enemy_lakitu_sub_act_no_spiny(void) { if (spiny != NULL) { o->prevObj = spiny; spiny->oAction = SPINY_ACT_HELD_BY_LAKITU; - - func_8029EE20(spiny, spiny_egg_seg5_anims_050157E4, 0); + obj_init_animation_with_sound(spiny, spiny_egg_seg5_anims_050157E4, 0); o->oEnemyLakituNumSpinies += 1; o->oSubAction = ENEMY_LAKITU_SUB_ACT_HOLD_SPINY; @@ -137,11 +136,11 @@ static void enemy_lakitu_sub_act_hold_spiny(void) { */ static void enemy_lakitu_sub_act_throw_spiny(void) { if (func_802F92EC(2, 2)) { - PlaySound2(SOUND_OBJ_EVIL_LAKITU_THROW); + cur_obj_play_sound_2(SOUND_OBJ_EVIL_LAKITU_THROW); o->prevObj = NULL; } - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oSubAction = ENEMY_LAKITU_SUB_ACT_NO_SPINY; o->oEnemyLakituSpinyCooldown = random_linear_offset(100, 100); } @@ -151,13 +150,13 @@ static void enemy_lakitu_sub_act_throw_spiny(void) { * Main update function. */ static void enemy_lakitu_act_main(void) { - PlaySound(SOUND_AIR_LAKITU_FLY); + cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY); - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); enemy_lakitu_update_speed_and_angle(); if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { - o->oMoveAngleYaw = obj_reflect_move_angle_off_wall(); + o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); } obj_update_blinking(&o->oEnemyLakituBlinkTimer, 20, 40, 4); @@ -174,7 +173,7 @@ static void enemy_lakitu_act_main(void) { break; } - obj_move_standard(78); + cur_obj_move_standard(78); // Die and drop held spiny when attacked by mario if (obj_check_attacks(&sEnemyLakituHitbox, o->oAction)) { diff --git a/src/game/behaviors/exclamation_box.inc.c b/src/game/behaviors/exclamation_box.inc.c index a27ec59c..3050a771 100644 --- a/src/game/behaviors/exclamation_box.inc.c +++ b/src/game/behaviors/exclamation_box.inc.c @@ -30,12 +30,12 @@ struct Struct802C0DF0 sExclamationBoxContents[] = { { 0, 0, 0, MODEL_MARIOS_WING { 14, 0, 5, MODEL_STAR, bhvSpawnedStar }, { 99, 0, 0, 0, NULL } }; -void bhv_rotatin_exclamation_box_loop(void) { +void bhv_rotating_exclamation_box_loop(void) { if (o->parentObj->oAction != 1) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void ActionExclamationBox0(void) { +void exclamation_box_act_0(void) { if (o->oBehParams2ndByte < 3) { o->oAnimState = o->oBehParams2ndByte; if ((save_file_get_flags() & D_8032F0C0[o->oBehParams2ndByte]) @@ -49,30 +49,30 @@ void ActionExclamationBox0(void) { } } -void ActionExclamationBox1(void) { - obj_become_intangible(); +void exclamation_box_act_1(void) { + cur_obj_become_intangible(); if (o->oTimer == 0) { spawn_object(o, MODEL_EXCLAMATION_POINT, bhvRotatingExclamationMark); - obj_set_model(MODEL_EXCLAMATION_BOX_OUTLINE); + cur_obj_set_model(MODEL_EXCLAMATION_BOX_OUTLINE); } if ((save_file_get_flags() & D_8032F0C0[o->oBehParams2ndByte]) || ((o->oBehParams >> 24) & 0xFF) != 0) { o->oAction = 2; - obj_set_model(MODEL_EXCLAMATION_BOX); + cur_obj_set_model(MODEL_EXCLAMATION_BOX); } } -void ActionExclamationBox2(void) { - set_object_hitbox(o, &sExclamationBoxHitbox); +void exclamation_box_act_2(void) { + obj_set_hitbox(o, &sExclamationBoxHitbox); if (o->oTimer == 0) { - obj_unhide(); - obj_become_tangible(); + cur_obj_unhide(); + cur_obj_become_tangible(); o->oInteractStatus = 0; o->oPosY = o->oHomeY; o->oGraphYOffset = 0.0f; } - if (obj_was_attacked_or_ground_pounded()) { - obj_become_intangible(); + if (cur_obj_was_attacked_or_ground_pounded()) { + cur_obj_become_intangible(); o->oExclamationBoxUnkFC = 0x4000; o->oVelY = 30.0f; o->oGravity = -8.0f; @@ -82,9 +82,9 @@ void ActionExclamationBox2(void) { load_object_collision_model(); } -void ActionExclamationBox3(void) { +void exclamation_box_act_3(void) { UNUSED s32 unused; - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (o->oVelY < 0.0f) { o->oVelY = 0.0f; o->oGravity = 0.0f; @@ -100,7 +100,7 @@ void ActionExclamationBox3(void) { o->oAction = 4; } -void func_802C0DF0(struct Struct802C0DF0 *a0, u8 a1) { +void exclamation_box_spawn_contents(struct Struct802C0DF0 *a0, u8 a1) { struct Object *sp1C = NULL; while (a0->unk0 != 99) { @@ -118,28 +118,28 @@ void func_802C0DF0(struct Struct802C0DF0 *a0, u8 a1) { } } -void ActionExclamationBox4(void) { - func_802C0DF0(sExclamationBoxContents, o->oBehParams2ndByte); - func_802AA618(0, 0, 46.0f); +void exclamation_box_act_4(void) { + exclamation_box_spawn_contents(sExclamationBoxContents, o->oBehParams2ndByte); + spawn_mist_particles_variable(0, 0, 46.0f); spawn_triangle_break_particles(20, 139, 0.3f, o->oAnimState); create_sound_spawner(SOUND_GENERAL_BREAK_BOX); if (o->oBehParams2ndByte < 3) { o->oAction = 5; - obj_hide(); + cur_obj_hide(); } else - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void ActionExclamationBox5(void) { +void exclamation_box_act_5(void) { if (o->oTimer > 300) o->oAction = 2; } -void (*sExclamationBoxActions[])(void) = { ActionExclamationBox0, ActionExclamationBox1, - ActionExclamationBox2, ActionExclamationBox3, - ActionExclamationBox4, ActionExclamationBox5 }; +void (*sExclamationBoxActions[])(void) = { exclamation_box_act_0, exclamation_box_act_1, + exclamation_box_act_2, exclamation_box_act_3, + exclamation_box_act_4, exclamation_box_act_5 }; void bhv_exclamation_box_loop(void) { - obj_scale(2.0f); - obj_call_action_function(sExclamationBoxActions); + cur_obj_scale(2.0f); + cur_obj_call_action_function(sExclamationBoxActions); } diff --git a/src/game/behaviors/explosion.inc.c b/src/game/behaviors/explosion.inc.c index 921df6d5..2c79f88a 100644 --- a/src/game/behaviors/explosion.inc.c +++ b/src/game/behaviors/explosion.inc.c @@ -22,5 +22,5 @@ void bhv_explosion_loop(void) { o->oOpacity -= 14; - obj_scale((f32) o->oTimer / 9.0f + 1.0); + cur_obj_scale((f32) o->oTimer / 9.0f + 1.0); } diff --git a/src/game/behaviors/express_elevator.inc.c b/src/game/behaviors/express_elevator.inc.c index 70d54008..f3536384 100644 --- a/src/game/behaviors/express_elevator.inc.c +++ b/src/game/behaviors/express_elevator.inc.c @@ -3,12 +3,12 @@ void bhv_wdw_express_elevator_loop(void) { o->oVelY = 0.0f; if (o->oAction == 0) { - if (obj_is_mario_on_platform()) + if (cur_obj_is_mario_on_platform()) o->oAction++; } else if (o->oAction == 1) { o->oVelY = -20.0f; o->oPosY += o->oVelY; - PlaySound(SOUND_ENV_ELEVATOR4); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4); if (o->oTimer > 132) o->oAction++; } else if (o->oAction == 2) { @@ -17,11 +17,11 @@ void bhv_wdw_express_elevator_loop(void) { } else if (o->oAction == 3) { o->oVelY = 10.0f; o->oPosY += o->oVelY; - PlaySound(SOUND_ENV_ELEVATOR4); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4); if (o->oPosY >= o->oHomeY) { o->oPosY = o->oHomeY; o->oAction++; } - } else if (!obj_is_mario_on_platform()) + } else if (!cur_obj_is_mario_on_platform()) o->oAction = 0; } diff --git a/src/game/behaviors/eyerok.inc.c b/src/game/behaviors/eyerok.inc.c index c0f2f460..d5197692 100644 --- a/src/game/behaviors/eyerok.inc.c +++ b/src/game/behaviors/eyerok.inc.c @@ -34,7 +34,7 @@ static void eyerok_boss_act_sleep(void) { eyerok_spawn_hand(-1, MODEL_EYEROK_LEFT_HAND, bhvEyerokHand); eyerok_spawn_hand(1, MODEL_EYEROK_RIGHT_HAND, bhvEyerokHand); } else if (o->oDistanceToMario < 500.0f) { - PlaySound2(SOUND_OBJ_EYEROK_EXPLODE); + cur_obj_play_sound_2(SOUND_OBJ_EYEROK_EXPLODE); o->oAction = EYEROK_BOSS_ACT_WAKE_UP; } } @@ -63,7 +63,7 @@ static void eyerok_boss_act_wake_up(void) { } static void eyerok_boss_act_show_intro_text(void) { - if (obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, DIALOG_117)) { + if (cur_obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, DIALOG_117)) { o->oAction = EYEROK_BOSS_ACT_FIGHT; } } @@ -117,14 +117,14 @@ static void eyerok_boss_act_fight(void) { static void eyerok_boss_act_die(void) { if (o->oTimer == 60) { - if (obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, DIALOG_118)) { - create_star(0.0f, -900.0f, -3700.0f); + if (cur_obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, DIALOG_118)) { + spawn_default_star(0.0f, -900.0f, -3700.0f); } else { o->oTimer -= 1; } } else if (o->oTimer > 120) { stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS)); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } @@ -150,7 +150,7 @@ void bhv_eyerok_boss_loop(void) { static s32 eyerok_hand_check_attacked(void) { if (o->oEyerokReceivedAttack != 0 && abs_angle_diff(o->oAngleToMario, o->oFaceAngleYaw) < 0x3000) { - PlaySound2(SOUND_OBJ2_EYEROK_SOUND_SHORT); + cur_obj_play_sound_2(SOUND_OBJ2_EYEROK_SOUND_SHORT); if (--o->oHealth >= 2) { o->oAction = EYEROK_HAND_ACT_ATTACKED; @@ -174,15 +174,15 @@ static s32 eyerok_hand_check_attacked(void) { } static void func_8030DBA8(void) { - PlaySound2(SOUND_OBJ_POUNDING_LOUD); + cur_obj_play_sound_2(SOUND_OBJ_POUNDING_LOUD); set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ); - func_802ADA94(); + spawn_mist_from_global(); } static void eyerok_hand_act_sleep(void) { if (o->parentObj->oAction != EYEROK_BOSS_ACT_SLEEP && ++o->oEyerokHandWakeUpTimer > -3 * o->oBehParams2ndByte) { - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->parentObj->oEyerokBossNumHands += 1; o->oAction = EYEROK_HAND_ACT_IDLE; o->collisionData = segmented_to_virtual(&ssl_seg7_collision_07028274); @@ -200,13 +200,13 @@ static void eyerok_hand_act_sleep(void) { o->collisionData = segmented_to_virtual(&ssl_seg7_collision_07028370); } - func_8029F6F0(); + cur_obj_reverse_animation(); o->oPosX = o->oHomeX + 724.0f * o->oBehParams2ndByte; } } static void eyerok_hand_act_idle(void) { - set_obj_animation_and_sound_state(2); + cur_obj_init_animation_with_sound(2); if (o->parentObj->oAction == EYEROK_BOSS_ACT_FIGHT) { if (o->parentObj->oEyerokBossUnk104 != 0) { @@ -267,14 +267,14 @@ static void eyerok_hand_act_open(void) { static void eyerok_hand_act_show_eye(void) { UNUSED s16 val06; - set_obj_animation_and_sound_state(5); + cur_obj_init_animation_with_sound(5); func_802F9378(0, 0, SOUND_OBJ_EYEROK_SHOW_EYE); if (!eyerok_hand_check_attacked()) { if (o->parentObj->oEyerokBossActiveHand == 0) { if (o->oAnimState < 3) { o->oAnimState += 1; - } else if (func_8029F788()) { + } else if (cur_obj_check_if_near_animation_end()) { val06 = (s16)(o->oAngleToMario - o->oFaceAngleYaw) * o->oBehParams2ndByte; o->oAction = EYEROK_HAND_ACT_CLOSE; } @@ -342,19 +342,19 @@ static void eyerok_hand_act_become_active(void) { static void eyerok_hand_act_die(void) { if (func_802F92B0(1)) { o->parentObj->oEyerokBossUnk1AC = 0; - func_802A3C98(150.0f, 1); + obj_explode_and_spawn_coins(150.0f, 1); create_sound_spawner(SOUND_OBJ2_EYEROK_SOUND_LONG); } if (o->oMoveFlags & 0x00000003) { - PlaySound2(SOUND_OBJ_POUNDING_LOUD); + cur_obj_play_sound_2(SOUND_OBJ_POUNDING_LOUD); o->oForwardVel = 0.0f; } } static void eyerok_hand_act_retreat(void) { - f32 distToHome = obj_lateral_dist_to_home(); - s16 angleToHome = obj_angle_to_home(); + f32 distToHome = cur_obj_lateral_dist_to_home(); + s16 angleToHome = cur_obj_angle_to_home(); if ((distToHome -= 40.0f) < 0.0f) { distToHome = 0.0f; @@ -386,7 +386,7 @@ static void eyerok_hand_act_target_mario(void) { } else { obj_forward_vel_approach(50.0f, 5.0f); approach_f32_ptr(&o->oPosY, o->oHomeY + 300.0f, 20.0f); - obj_rotate_yaw_toward(o->oAngleToMario, 4000); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 4000); } } @@ -493,7 +493,7 @@ void bhv_eyerok_hand_loop(void) { if (o->oAction == EYEROK_HAND_ACT_SLEEP) { eyerok_hand_act_sleep(); } else { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case EYEROK_HAND_ACT_IDLE: @@ -544,7 +544,7 @@ void bhv_eyerok_hand_loop(void) { } o->oEyerokReceivedAttack = obj_check_attacks(&sEyerokHitbox, o->oAction); - obj_move_standard(-78); + cur_obj_move_standard(-78); } load_object_collision_model(); diff --git a/src/game/behaviors/falling_pillar.inc.c b/src/game/behaviors/falling_pillar.inc.c index d5c0e024..3ed7b419 100644 --- a/src/game/behaviors/falling_pillar.inc.c +++ b/src/game/behaviors/falling_pillar.inc.c @@ -74,7 +74,7 @@ void bhv_falling_pillar_loop(void) { o->oAction = FALLING_PILLAR_ACT_TURNING; // Play the detaching sound. - PlaySound2(SOUND_GENERAL_POUND_ROCK); + cur_obj_play_sound_2(SOUND_GENERAL_POUND_ROCK); } break; @@ -106,7 +106,7 @@ void bhv_falling_pillar_loop(void) { // Make the camera shake and spawn dust clouds. set_camera_shake_from_point(SHAKE_POS_MEDIUM, o->oPosX, o->oPosY, o->oPosZ); - func_802AA618(0, 0, 92.0f); + spawn_mist_particles_variable(0, 0, 92.0f); // Go invisible. o->activeFlags = 0; @@ -136,7 +136,7 @@ void bhv_falling_pillar_hitbox_loop(void) { o->oPosZ = sins(pitch) * coss(yaw) * yOffset + z; // Give these a hitbox so they can collide with Mario. - set_object_hitbox(o, &sFallingPillarHitbox); + obj_set_hitbox(o, &sFallingPillarHitbox); // When the pillar goes inactive, the hitboxes also go inactive. if (o->parentObj->activeFlags == 0) diff --git a/src/game/behaviors/falling_rising_platform.inc.c b/src/game/behaviors/falling_rising_platform.inc.c index 4b97c011..4bd7ecd5 100644 --- a/src/game/behaviors/falling_rising_platform.inc.c +++ b/src/game/behaviors/falling_rising_platform.inc.c @@ -14,7 +14,7 @@ void bhv_bitfs_sinking_platform_loop(void) { // TODO: Named incorrectly. fix void bhv_ddd_moving_pole_loop(void) { - copy_object_pos_and_angle(o, o->parentObj); + obj_copy_pos_and_angle(o, o->parentObj); } void bhv_bitfs_sinking_cage_platform_loop(void) { diff --git a/src/game/behaviors/fire_piranha_plant.inc.c b/src/game/behaviors/fire_piranha_plant.inc.c index cb9ff34f..8cf1744a 100644 --- a/src/game/behaviors/fire_piranha_plant.inc.c +++ b/src/game/behaviors/fire_piranha_plant.inc.c @@ -32,7 +32,7 @@ s32 sNumKilledFirePiranhaPlants; void bhv_fire_piranha_plant_init(void) { o->oFirePiranhaPlantNeutralScale = D_80331B5C[(u16)(o->oBehParams >> 16)]; - set_object_hitbox(o, &sFirePiranhaPlantHitbox); + obj_set_hitbox(o, &sFirePiranhaPlantHitbox); if ((u16)(o->oBehParams >> 16) != 0) { o->oFlags |= 0x00004000; @@ -52,21 +52,21 @@ static void fire_piranha_plant_act_hide(void) { o->oMoveAngleYaw += (s32) o->oFirePiranhaPlantDeathSpinVel; approach_f32_ptr(&o->oFirePiranhaPlantDeathSpinVel, 0.0f, 200.0f); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { if (--o->oFirePiranhaPlantDeathSpinTimer == 0) { - PlaySound2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); + cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); } } } else if (approach_f32_ptr(&o->oFirePiranhaPlantScale, 0.0f, 0.04f * o->oFirePiranhaPlantNeutralScale)) { - obj_become_intangible(); + cur_obj_become_intangible(); if (o->oFirePiranhaPlantActive) { sNumActiveFirePiranhaPlants -= 1; o->oFirePiranhaPlantActive = FALSE; if ((u16)(o->oBehParams >> 16) != 0 && o->oHealth == 0) { if (++sNumKilledFirePiranhaPlants == 5) { - create_star(-6300.0f, -1850.0f, -6300.0f); + spawn_default_star(-6300.0f, -1850.0f, -6300.0f); } obj_die_if_health_non_positive(); @@ -74,20 +74,20 @@ static void fire_piranha_plant_act_hide(void) { } } else if (sNumActiveFirePiranhaPlants < 2 && o->oTimer > 100 && o->oDistanceToMario > 100.0f && o->oDistanceToMario < 800.0f) { - PlaySound2(SOUND_OBJ_PIRANHA_PLANT_APPEAR); + cur_obj_play_sound_2(SOUND_OBJ_PIRANHA_PLANT_APPEAR); o->oFirePiranhaPlantActive = TRUE; sNumActiveFirePiranhaPlants += 1; - obj_unhide(); + cur_obj_unhide(); o->oAction = FIRE_PIRANHA_PLANT_ACT_GROW; o->oMoveAngleYaw = o->oAngleToMario; } else { - obj_hide(); + cur_obj_hide(); } } - func_8029F728(); + cur_obj_extend_animation_if_at_end(); } static void fire_piranha_plant_act_grow(void) { @@ -96,15 +96,15 @@ static void fire_piranha_plant_act_grow(void) { if (approach_f32_ptr(&o->oFirePiranhaPlantScale, o->oFirePiranhaPlantNeutralScale, 0.04f * o->oFirePiranhaPlantNeutralScale)) { if (o->oTimer > 80) { - PlaySound2(SOUND_OBJ_PIRANHA_PLANT_SHRINK); + cur_obj_play_sound_2(SOUND_OBJ_PIRANHA_PLANT_SHRINK); o->oAction = FIRE_PIRANHA_PLANT_ACT_HIDE; - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); } else if (o->oTimer < 50) { - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); } else { // TODO: Check if we can put these conditionals on same line if (obj_is_rendering_enabled()) { - if (obj_check_anim_frame(56)) { - PlaySound2(SOUND_OBJ_FLAME_BLOWN); + if (cur_obj_check_anim_frame(56)) { + cur_obj_play_sound_2(SOUND_OBJ_FLAME_BLOWN); obj_spit_fire(0, (s32)(30.0f * o->oFirePiranhaPlantNeutralScale), (s32)(140.0f * o->oFirePiranhaPlantNeutralScale), 2.5f * o->oFirePiranhaPlantNeutralScale, MODEL_RED_FLAME_SHADOW, @@ -113,12 +113,12 @@ static void fire_piranha_plant_act_grow(void) { } } } else if (o->oFirePiranhaPlantScale > o->oFirePiranhaPlantNeutralScale / 2) { - obj_become_tangible(); + cur_obj_become_tangible(); } } void bhv_fire_piranha_plant_update(void) { - obj_scale(o->oFirePiranhaPlantScale); + cur_obj_scale(o->oFirePiranhaPlantScale); switch (o->oAction) { case FIRE_PIRANHA_PLANT_ACT_HIDE: @@ -135,13 +135,13 @@ void bhv_fire_piranha_plant_update(void) { sNumActiveFirePiranhaPlants -= 1; } } else { - set_obj_animation_and_sound_state(2); + cur_obj_init_animation_with_sound(2); } o->oAction = FIRE_PIRANHA_PLANT_ACT_HIDE; o->oFirePiranhaPlantDeathSpinTimer = 10; o->oFirePiranhaPlantDeathSpinVel = 8000.0f; - obj_become_intangible(); + cur_obj_become_intangible(); } } diff --git a/src/game/behaviors/fire_spitter.inc.c b/src/game/behaviors/fire_spitter.inc.c index d26ae6d9..d64bcf7e 100644 --- a/src/game/behaviors/fire_spitter.inc.c +++ b/src/game/behaviors/fire_spitter.inc.c @@ -20,16 +20,16 @@ static void fire_spitter_act_spit_fire(void) { if (scaleStatus < 0) { o->oAction = FIRE_SPITTER_ACT_IDLE; } else { - PlaySound2(SOUND_OBJ_FLAME_BLOWN); + cur_obj_play_sound_2(SOUND_OBJ_FLAME_BLOWN); obj_spit_fire(0, 0, 0, 5.0f, MODEL_RED_FLAME_SHADOW, 20.0f, 15.0f, 0x1000); } } } void bhv_fire_spitter_update(void) { - obj_scale(o->header.gfx.scale[0]); + cur_obj_scale(o->header.gfx.scale[0]); o->oGraphYOffset = 40.0f; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case FIRE_SPITTER_ACT_IDLE: @@ -40,5 +40,5 @@ void bhv_fire_spitter_update(void) { break; } - obj_move_standard(78); + cur_obj_move_standard(78); } diff --git a/src/game/behaviors/fish.inc.c b/src/game/behaviors/fish.inc.c index 8549fe3f..31bb4eb8 100644 --- a/src/game/behaviors/fish.inc.c +++ b/src/game/behaviors/fish.inc.c @@ -1,163 +1,280 @@ -// fish.c.inc +/** + * @file fish.inc.c + * Implements behaviour and spawning for fish located in the Secret Aquarium and other levels. + */ -void ActionFish0(void) { +/** + * Spawns fish with settings chosen by the field o->oBehParams2ndByte. + * These settings are animations, colour, and spawn quantity. + * Fish spawning restricted to within a set distance from Mario. + */ +void fish_act_spawn(void) { s32 i; - s32 sp38; + s32 schoolQuantity; s16 model; - f32 sp30; - struct Animation **sp2C; - struct Object *sp28; + f32 minDistToMario; + struct Animation **fishAnimation; + struct Object *fishObject; switch (o->oBehParams2ndByte) { + + // Blue fish with a quanitiy of twenty. case 0: - model = MODEL_FISH; sp38 = 20; sp30 = 1500.0f; sp2C = blue_fish_seg3_anims_0301C2B0; + model = MODEL_FISH; schoolQuantity = 20; minDistToMario = 1500.0f; fishAnimation = blue_fish_seg3_anims_0301C2B0; break; + + // Blue fish with a quanitiy of five. case 1: - model = MODEL_FISH; sp38 = 5; sp30 = 1500.0f; sp2C = blue_fish_seg3_anims_0301C2B0; + model = MODEL_FISH; schoolQuantity = 5; minDistToMario = 1500.0f; fishAnimation = blue_fish_seg3_anims_0301C2B0; break; + + // Cyan fish with a quanitiy of twenty. case 2: - model = MODEL_CYAN_FISH; sp38 = 20; sp30 = 1500.0f; sp2C = cyan_fish_seg6_anims_0600E264; + model = MODEL_CYAN_FISH; schoolQuantity = 20; minDistToMario = 1500.0f; fishAnimation = cyan_fish_seg6_anims_0600E264; break; + + // Cyan fish with a quanitiy of five. case 3: - model = MODEL_CYAN_FISH; sp38 = 5; sp30 = 1500.0f; sp2C = cyan_fish_seg6_anims_0600E264; + model = MODEL_CYAN_FISH; schoolQuantity = 5; minDistToMario = 1500.0f; fishAnimation = cyan_fish_seg6_anims_0600E264; break; } - if (o->oDistanceToMario < sp30 || gCurrLevelNum == LEVEL_SA) { - for (i = 0; i < sp38; i++) { - sp28 = spawn_object(o, model, bhvFishGroup2); - sp28->oBehParams2ndByte = o->oBehParams2ndByte; - func_8029EE20(sp28, sp2C, 0); - translate_object_xyz_random(sp28, 700.0f); + /** + * Spawn and animate the schoolQuantity of fish if Mario enters render distance + * If the current level is Secret Aquarium, ignore this requirement. + * Fish moves at random with a max-range of 700.0f. + */ + if (o->oDistanceToMario < minDistToMario || gCurrLevelNum == LEVEL_SA) { + for (i = 0; i < schoolQuantity; i++) { + fishObject = spawn_object(o, model, bhvFish); + fishObject->oBehParams2ndByte = o->oBehParams2ndByte; + obj_init_animation_with_sound(fishObject, fishAnimation, 0); + obj_translate_xyz_random(fishObject, 700.0f); } - o->oAction = 1; + o->oAction = FISH_ACT_ACTIVE; } } -void ActionFish1(void) { - if (gCurrLevelNum != LEVEL_SA) - if (gMarioObject->oPosY - o->oPosY > 2000.0f) - o->oAction = 2; +/** + * If the current level is not Secret Aquarium and the distance from Mario's + * Y coordinate is greater than 2000.0f then spawn another fish. + */ +void fish_act_respawn(void) { + if (gCurrLevelNum != LEVEL_SA) { + if (gMarioObject->oPosY - o->oPosY > 2000.0f) { + o->oAction = FISH_ACT_RESPAWN; + } + } } -void ActionFish2(void) { - o->oAction = 0; +/** + * Sets the next call of sFishActions to spawn a new fish. + */ +void fish_act_init(void) { + o->oAction = FISH_ACT_INIT; } -void (*sFishActions[])(void) = { ActionFish0, ActionFish1, ActionFish2 }; +/** + * An array of action methods chosen one at a time by bhv_fish_loop + */ +void (*sFishActions[])(void) = { + fish_act_spawn, fish_act_respawn, fish_act_init +}; -void bhv_fish_loop(void) { - obj_call_action_function(sFishActions); +void bhv_large_fish_group_loop(void) { + cur_obj_call_action_function(sFishActions); } -void func_802BF59C(s32 a0) { - f32 sp1C = o->parentObj->oPosY; +/** + * Adjusts the Y coordinate of fish depending on circumstances + * such as proximity to other fish. + */ +void fish_regroup(s32 speed) { + // Store parentY for calculating when the fish should move towards oFishPosY. + f32 parentY = o->parentObj->oPosY; + + // Sets speed of fish in SA to a leisurely speed of 10 when close to other fish. if (gCurrLevelNum == LEVEL_SA) { - if (500.0f < absf(o->oPosY - o->oFishGroupUnkF8)) - a0 = 10; - o->oPosY = approach_f32_symmetric(o->oPosY, o->oFishGroupUnkF8, a0); - } else if (sp1C - 100.0f - o->oFishGroupUnk10C < o->oPosY - && o->oPosY < sp1C + 1000.0f + o->oFishGroupUnk10C) - o->oPosY = approach_f32_symmetric(o->oPosY, o->oFishGroupUnkF8, a0); + if (500.0f < absf(o->oPosY - o->oFishPosY)) { + speed = 10; + } + // Applies movement to fish. + o->oPosY = approach_f32_symmetric(o->oPosY, o->oFishPosY, speed); + /** + * Brings fish Y coordinate towards another fish if they are too far apart. + */ + } else if (parentY - 100.0f - o->oFishDepthDistance < o->oPosY + && o->oPosY < parentY + 1000.0f + o->oFishDepthDistance) { + o->oPosY = approach_f32_symmetric(o->oPosY, o->oFishPosY, speed); + } } - -void ActionFishGroup1(void) { - f32 sp1C = o->oPosY - gMarioObject->oPosY; - if (o->oTimer < 10) - func_8029ED98(0, 2.0f); - else - func_8029ED98(0, 1.0f); +/** + * Moves fish forward at a random velocity and sets a random rotation. + */ +void fish_group_act_rotation(void) { + f32 fishY = o->oPosY - gMarioObject->oPosY; + + // Alters speed of animation for natural movement. + if (o->oTimer < 10) { + cur_obj_init_animation_with_accel_and_sound(0, 2.0f); + } else { + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); + } + + /** + * Assigns oForwardVel, oFishRandomOffset, & oFishRespawnDistance to a random floats. + * Determines fish movement. + */ if (o->oTimer == 0) { o->oForwardVel = RandomFloat() * 2 + 3.0f; - if (gCurrLevelNum == LEVEL_SA) - o->oFishGroupUnkFC = RandomFloat() * 700.0f; - else - o->oFishGroupUnkFC = RandomFloat() * 100.0f; - o->oFishGroupUnk104 = RandomFloat() * 500 + 200.0f; + if (gCurrLevelNum == LEVEL_SA) { + o->oFishRandomOffset = RandomFloat() * 700.0f; + } else { + o->oFishRandomOffset = RandomFloat() * 100.0f; + } + o->oFishRespawnDistance = RandomFloat() * 500 + 200.0f; } - o->oFishGroupUnkF8 = gMarioObject->oPosY + o->oFishGroupUnkFC; - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); - if (o->oPosY < o->oFishGroupUnkF4 - 50.0f) { - if (sp1C < 0.0f) - sp1C = 0.0f - sp1C; - if (sp1C < 500.0f) - func_802BF59C(2); - else - func_802BF59C(4); + + // Interact with Mario through rotating towards him. + o->oFishPosY = gMarioObject->oPosY + o->oFishRandomOffset; + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + + // If fish groups are too close, call fish_regroup() + if (o->oPosY < o->oFishWaterLevel - 50.0f) { + if (fishY < 0.0f) { + fishY = 0.0f - fishY; + } + if (fishY < 500.0f) { + fish_regroup(2); + } else { + fish_regroup(4); + } } else { - o->oPosY = o->oFishGroupUnkF4 - 50.0f; - if (sp1C > 300.0f) + o->oPosY = o->oFishWaterLevel - 50.0f; + if (fishY > 300.0f) { o->oPosY = o->oPosY - 1.0f; + } + } + + /** + * Delete current fish and create a new one if distance to Mario is + * smaller than his distance to oFishRespawnDistance + 150.0f. + */ + if (o->oDistanceToMario < o->oFishRespawnDistance + 150.0f) { + o->oAction = FISH_ACT_RESPAWN; } - if (o->oDistanceToMario < o->oFishGroupUnk104 + 150.0f) - o->oAction = 2; } -void ActionFishGroup2(void) { - f32 sp1C = o->oPosY - gMarioObject->oPosY; - s32 sp18; - o->oFishGroupUnkF8 = gMarioObject->oPosY + o->oFishGroupUnkFC; +/** + * Interactively maneuver fish in relation to its distance from other fish and Mario. + */ +void fish_group_act_move(void) { + f32 fishY = o->oPosY - gMarioObject->oPosY; + // Marked unused, but has arithmetic performed on it in a useless manner. + UNUSED s32 distance; + o->oFishPosY = gMarioObject->oPosY + o->oFishRandomOffset; + /** + * Set fish variables to random floats when timer reaches zero and plays sound effect. + * This allows fish to move in seemingly natural patterns. + */ if (o->oTimer == 0) { - o->oFishGroupUnk110 = RandomFloat() * 300.0f; - o->oFishGroupUnk100 = RandomFloat() * 1024.0f + 1024.0f; - o->oFishGroupUnk108 = RandomFloat() * 4.0f + 8.0f + 5.0f; - if (o->oDistanceToMario < 600.0f) - sp18 = 1; - else - sp18 = (s32)(1.0 / (o->oDistanceToMario / 600.0)); - sp18 *= 127; - PlaySound2(SOUND_GENERAL_MOVING_WATER); + o->oFishActiveDistance = RandomFloat() * 300.0f; + o->oFishRandomSpeed = RandomFloat() * 1024.0f + 1024.0f; + o->oFishRandomVel = RandomFloat() * 4.0f + 8.0f + 5.0f; + if (o->oDistanceToMario < 600.0f) { + distance = 1; + } else { + distance = (s32)(1.0 / (o->oDistanceToMario / 600.0)); + } + distance *= 127; + cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER); } - if (o->oTimer < LEVEL_SA) - func_8029ED98(0, 4.0f); - else - func_8029ED98(0, 1.0f); - if (o->oForwardVel < o->oFishGroupUnk108) - o->oForwardVel = o->oForwardVel + 0.5; - o->oFishGroupUnkF8 = gMarioObject->oPosY + o->oFishGroupUnkFC; - obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, o->oFishGroupUnk100); - if (o->oPosY < o->oFishGroupUnkF4 - 50.0f) { - if (sp1C < 0.0f) - sp1C = 0.0f - sp1C; - if (sp1C < 500.0f) - func_802BF59C(2); - else - func_802BF59C(4); + // Enable fish animation in a natural manner. + if (o->oTimer < 20) { + cur_obj_init_animation_with_accel_and_sound(0, 4.0f); } else { - o->oPosY = o->oFishGroupUnkF4 - 50.0f; - if (sp1C > 300.0f) - o->oPosY -= 1.0f; + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); + } + // Set randomized forward velocity so fish have differing velocities + if (o->oForwardVel < o->oFishRandomVel) { + o->oForwardVel = o->oForwardVel + 0.5; + } + o->oFishPosY = gMarioObject->oPosY + o->oFishRandomOffset; + // Rotate fish away from Mario. + cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, o->oFishRandomSpeed); + // If fish groups are too close, call fish_regroup() + if (o->oPosY < o->oFishWaterLevel - 50.0f) { + if (fishY < 0.0f) { + fishY = 0.0f - fishY; + } + if (fishY < 500.0f) { + fish_regroup(2); + } else { + fish_regroup(4); + } + } else { + o->oPosY = o->oFishWaterLevel - 50.0f; + if (fishY > 300.0f) { + o->oPosY -= 1.0f; + } + } + // If distance to Mario is too great, then set fish to active. + if (o->oDistanceToMario > o->oFishActiveDistance + 500.0f) { + o->oAction = FISH_ACT_ACTIVE; } - if (o->oDistanceToMario > o->oFishGroupUnk110 + 500.0f) - o->oAction = 1; } - -void ActionFishGroup0(void) { - func_8029ED98(0, 1.0f); +/** + * Animate fish and alter scaling at random for a magnifying effect from the water. + */ +void fish_group_act_animate(void) { + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); o->header.gfx.unk38.animFrame = (s16)(RandomFloat() * 28.0f); - o->oFishGroupUnk10C = RandomFloat() * 300.0f; - obj_scale(RandomFloat() * 0.4 + 0.8); - o->oAction = 1; + o->oFishDepthDistance = RandomFloat() * 300.0f; + cur_obj_scale(RandomFloat() * 0.4 + 0.8); + o->oAction = FISH_ACT_ACTIVE; } -void (*sFishGroupActions[])(void) = { ActionFishGroup0, ActionFishGroup1, ActionFishGroup2 }; +void (*sFishGroupActions[])(void) = { + fish_group_act_animate, fish_group_act_rotation, fish_group_act_move +}; -void bhv_fish_group_2_loop(void) // TODO rename +/** + * Main loop for fish + */ +void bhv_fish_loop(void) { UNUSED s32 unused[4]; - obj_scale(1.0f); - o->oFishGroupUnkF4 = find_water_level(o->oPosX, o->oPosZ); - if (gCurrLevelNum == LEVEL_SA) - o->oFishGroupUnkF4 = 0.0f; + cur_obj_scale(1.0f); + + /** + * Tracks water level to delete fish outside of bounds. + * In SA oFishWaterLevel is set to zero because fish cannot exit the water. + * This prevents accidental deletion. + */ + o->oFishWaterLevel = find_water_level(o->oPosX, o->oPosZ); + if (gCurrLevelNum == LEVEL_SA) { + o->oFishWaterLevel = 0.0f; + } + // Apply hitbox and resolve wall collisions o->oWallHitboxRadius = 30.0f; - obj_resolve_wall_collisions(); + cur_obj_resolve_wall_collisions(); + + // Delete fish below the water depth bounds of -10000.0f. if (gCurrLevelNum != LEVEL_UNKNOWN_32) { - if (o->oFishGroupUnkF4 < -10000.0f) { - mark_object_for_deletion(o); + if (o->oFishWaterLevel < -10000.0f) { + obj_mark_for_deletion(o); return; } - } else - o->oFishGroupUnkF4 = 1000.0f; - obj_call_action_function(sFishGroupActions); - obj_move_using_fvel_and_gravity(); - if (o->parentObj->oAction == 2) - mark_object_for_deletion(o); + + // Unreachable code, perhaps for debugging or testing. + } else { + o->oFishWaterLevel = 1000.0f; + } + + // Call fish action methods and apply physics engine. + cur_obj_call_action_function(sFishGroupActions); + cur_obj_move_using_fvel_and_gravity(); + + // If the parent object has action set to two, then delete the fish object. + if (o->parentObj->oAction == FISH_ACT_RESPAWN) { + obj_mark_for_deletion(o); + } } diff --git a/src/game/behaviors/fishing_boo.inc.c b/src/game/behaviors/fishing_boo.inc.c index 212f6521..12189464 100644 --- a/src/game/behaviors/fishing_boo.inc.c +++ b/src/game/behaviors/fishing_boo.inc.c @@ -31,7 +31,7 @@ void bhv_beta_moving_flames_spawn_loop(void) { } void bhv_beta_moving_flames_loop(void) { - obj_scale(5.0f); + cur_obj_scale(5.0f); o->oForwardVel = sins(o->oMovingFlameTimer) * 70.0f; o->oMovingFlameTimer += 0x800; } diff --git a/src/game/behaviors/flame.inc.c b/src/game/behaviors/flame.inc.c index c721634b..5bc899c9 100644 --- a/src/game/behaviors/flame.inc.c +++ b/src/game/behaviors/flame.inc.c @@ -5,7 +5,7 @@ void bhv_small_piranha_flame_loop(void) { if ((u16)(o->oBehParams >> 16) == 0) { if (o->oTimer > 0) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { sp2C = RandomFloat() - 0.5f; o->header.gfx.scale[1] = o->header.gfx.scale[2] * (1.0f + 0.7f * sp2C); @@ -14,13 +14,13 @@ void bhv_small_piranha_flame_loop(void) { o->oAnimState = RandomU16(); } } else { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (approach_f32_ptr(&o->oSmallPiranhaFlameUnkF4, o->oSmallPiranhaFlameUnkF8, 0.6f)) { - obj_rotate_yaw_toward(o->oAngleToMario, 0x200); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200); } obj_compute_vel_from_move_pitch(o->oSmallPiranhaFlameUnkF4); - obj_move_standard(-78); + cur_obj_move_standard(-78); spawn_object_with_scale(o, o->oSmallPiranhaFlameUnkFC, bhvSmallPiranhaFlame, 0.4f * o->header.gfx.scale[0]); @@ -43,11 +43,11 @@ void bhv_small_piranha_flame_loop(void) { } void bhv_fly_guy_flame_loop(void) { - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (approach_f32_ptr(&o->header.gfx.scale[0], 0.0f, 0.6f)) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } - obj_scale(o->header.gfx.scale[0]); + cur_obj_scale(o->header.gfx.scale[0]); } diff --git a/src/game/behaviors/flame_mario.inc.c b/src/game/behaviors/flame_mario.inc.c index 42a23da4..eacc297e 100644 --- a/src/game/behaviors/flame_mario.inc.c +++ b/src/game/behaviors/flame_mario.inc.c @@ -17,7 +17,7 @@ void bhv_black_smoke_bowser_loop(void) { void bhv_black_smoke_mario_loop(void) { if (o->oTimer == 0) { - obj_set_pos_relative(gMarioObject, 0, 0, -30.0f); + cur_obj_set_pos_relative(gMarioObject, 0, 0, -30.0f); o->oForwardVel = RandomFloat() * 2 + 0.5; o->oMoveAngleYaw = (gMarioObject->oMoveAngleYaw + 0x7000) + RandomFloat() * 8192.0f; o->oVelY = 8; @@ -27,15 +27,15 @@ void bhv_black_smoke_mario_loop(void) { } void bhv_flame_mario_loop(void) { - obj_scale(2.0f); + cur_obj_scale(2.0f); if (o->oTimer != 0) if (o->oTimer & 1) spawn_object(o, MODEL_BURN_SMOKE, bhvBlackSmokeMario); gMarioObject->prevObj = o; // weird? - set_object_parent_relative_pos(o, 40, -120, 0); + obj_set_parent_relative_pos(o, 40, -120, 0); if (!(gMarioObject->oMarioParticleFlags & 0x800)) { o->parentObj->oActiveParticleFlags &= ~0x800; - mark_object_for_deletion(o); + obj_mark_for_deletion(o); gMarioObject->prevObj = NULL; } } diff --git a/src/game/behaviors/flamethrower.inc.c b/src/game/behaviors/flamethrower.inc.c index 6eaa2c42..e6bced99 100644 --- a/src/game/behaviors/flamethrower.inc.c +++ b/src/game/behaviors/flamethrower.inc.c @@ -5,7 +5,7 @@ void bhv_flamethrower_flame_loop(void) { s32 sp18; if (o->oTimer == 0) { o->oAnimState = (s32)(RandomFloat() * 10.0f); - translate_object_xyz_random(o, 10.0f); + obj_translate_xyz_random(o, 10.0f); } if (o->oBehParams2ndByte == 2) size = o->oTimer * (o->oForwardVel - 6.0f) / 100.0 + 2.0; @@ -15,7 +15,7 @@ void bhv_flamethrower_flame_loop(void) { o->hitboxHeight = 200.0f; o->hitboxDownOffset = 150.0f; o->oVelY = -28.0f; - obj_update_floor_height(); + cur_obj_update_floor_height(); if (o->oPosY - 25.0f * size < o->oFloorHeight) { o->oVelY = 0; o->oPosY = o->oFloorHeight + 25.0f * size; @@ -23,13 +23,13 @@ void bhv_flamethrower_flame_loop(void) { sp18 = o->parentObj->oFlameThowerFlameUnk110 / 1.2; } else sp18 = o->parentObj->oFlameThowerFlameUnk110; - obj_scale(size); + cur_obj_scale(size); if (o->oBehParams2ndByte == 4) o->oPosY += o->oForwardVel; // weird? else - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (o->oTimer > sp18) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); o->oInteractStatus = 0; } @@ -60,7 +60,7 @@ void bhv_flamethrower_loop(void) { o->oFlameThowerUnk110 = sp34; flame = spawn_object_relative(o->oBehParams2ndByte, 0, 0, 0, o, model, bhvFlamethrowerFlame); flame->oForwardVel = flameVel; - PlaySound(SOUND_AIR_BLOW_FIRE); + cur_obj_play_sound_1(SOUND_AIR_BLOW_FIRE); } else if (o->oTimer > 60) o->oAction = 0; } diff --git a/src/game/behaviors/floating_platform.inc.c b/src/game/behaviors/floating_platform.inc.c index 7cf4aef4..79fe0edd 100644 --- a/src/game/behaviors/floating_platform.inc.c +++ b/src/game/behaviors/floating_platform.inc.c @@ -1,6 +1,6 @@ // floating_platform.c.inc -f32 func_802F54F8(void) { +f32 floating_platform_find_home_y(void) { struct Surface *sp24; f32 sp20; f32 sp1C; @@ -16,7 +16,7 @@ f32 func_802F54F8(void) { } } -void func_802F55CC(void) { +void floating_platform_act_0(void) { s16 sp6 = (gMarioObject->header.gfx.pos[0] - o->oPosX) * coss(-1*o->oMoveAngleYaw) + (gMarioObject->header.gfx.pos[2] - o->oPosZ) * sins(-1*o->oMoveAngleYaw); s16 sp4 = (gMarioObject->header.gfx.pos[2] - o->oPosZ) * coss(-1*o->oMoveAngleYaw) @@ -48,7 +48,7 @@ void func_802F55CC(void) { } void bhv_floating_platform_loop(void) { - o->oHomeY = func_802F54F8(); + o->oHomeY = floating_platform_find_home_y(); if (o->oFloatingPlatformUnkF4 == 0) o->oAction = 0; else @@ -56,7 +56,7 @@ void bhv_floating_platform_loop(void) { switch (o->oAction) { case 0: - func_802F55CC(); + floating_platform_act_0(); break; case 1: diff --git a/src/game/behaviors/fly_guy.inc.c b/src/game/behaviors/fly_guy.inc.c index 7224582f..63cb45a3 100644 --- a/src/game/behaviors/fly_guy.inc.c +++ b/src/game/behaviors/fly_guy.inc.c @@ -34,7 +34,7 @@ static void fly_guy_act_idle(void) { if (o->oDistanceToMario >= 25000.0f || o->oDistanceToMario < 2000.0f) { // Turn toward home or Mario obj_face_yaw_approach(o->oAngleToMario, 0x300); - if (obj_rotate_yaw_toward(o->oAngleToMario, 0x300)) { + if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x300)) { o->oAction = FLY_GUY_ACT_APPROACH_MARIO; } } else { @@ -62,7 +62,7 @@ static void fly_guy_act_approach_mario(void) { // Turn toward home or Mario obj_face_yaw_approach(o->oAngleToMario, 0x400); - obj_rotate_yaw_toward(o->oAngleToMario, 0x200); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200); // If facing toward mario and we are either near mario laterally or // far above him @@ -97,7 +97,7 @@ static void fly_guy_act_lunge(void) { o->oVelY += o->oFlyGuyLungeYDecel; - obj_rotate_yaw_toward(o->oFaceAngleYaw, 0x800); + cur_obj_rotate_yaw_toward(o->oFaceAngleYaw, 0x800); obj_face_pitch_approach(o->oFlyGuyLungeTargetPitch, 0x400); // Range [-0x1000, 0x2000] @@ -149,7 +149,7 @@ static void fly_guy_act_shoot_fire(void) { } else { // We have reached below scale 1.2 in the shrinking portion s16 fireMovePitch = obj_turn_pitch_toward_mario(0.0f, 0); - PlaySound2(SOUND_OBJ_FLAME_BLOWN); + cur_obj_play_sound_2(SOUND_OBJ_FLAME_BLOWN); clamp_s16(&fireMovePitch, 0x800, 0x3000); obj_spit_fire( @@ -179,12 +179,12 @@ void bhv_fly_guy_update(void) { if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) { o->oDeathSound = SOUND_OBJ_KOOPA_FLYGUY_DEATH; - obj_scale(o->header.gfx.scale[0]); + cur_obj_scale(o->header.gfx.scale[0]); treat_far_home_as_mario(2000.0f); - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { - o->oMoveAngleYaw = obj_reflect_move_angle_off_wall(); + o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); } else if (o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER) { o->oVelY = 6.0f; } @@ -208,7 +208,7 @@ void bhv_fly_guy_update(void) { break; } - obj_move_standard(78); + cur_obj_move_standard(78); obj_check_attacks(&sFlyGuyHitbox, o->oAction); } } diff --git a/src/game/behaviors/flying_bookend_switch.inc.c b/src/game/behaviors/flying_bookend_switch.inc.c index 1cf9de4e..48e949d1 100644 --- a/src/game/behaviors/flying_bookend_switch.inc.c +++ b/src/game/behaviors/flying_bookend_switch.inc.c @@ -37,11 +37,11 @@ struct ObjectHitbox sBookSwitchHitbox = { void flying_bookend_act_0(void) { if (obj_is_near_to_and_facing_mario(400.0f, 0x3000)) { - PlaySound2(SOUND_OBJ_DEFAULT_DEATH); + cur_obj_play_sound_2(SOUND_OBJ_DEFAULT_DEATH); o->oAction = 1; o->oBookendUnkF4 = o->oFaceAnglePitch + 0x7FFF; o->oBookendUnkF8 = o->oFaceAngleRoll - 0x7FFF; - obj_set_model(MODEL_BOOKEND_PART); + cur_obj_set_model(MODEL_BOOKEND_PART); } } @@ -64,24 +64,24 @@ void flying_bookend_act_1(void) { } } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } void flying_bookend_act_2(void) { - set_obj_animation_and_sound_state(1); - obj_update_floor_and_walls(); + cur_obj_init_animation_with_sound(1); + cur_obj_update_floor_and_walls(); if (o->oForwardVel == 0.0f) { obj_turn_pitch_toward_mario(120.0f, 1000); o->oFaceAnglePitch = o->oMoveAnglePitch + 0x7FFF; - obj_rotate_yaw_toward(o->oAngleToMario, 1000); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 1000); if (o->oTimer > 30) { obj_compute_vel_from_move_pitch(50.0f); } } - obj_move_standard(78); + cur_obj_move_standard(78); } void flying_bookend_act_3(void) { @@ -94,13 +94,13 @@ void flying_bookend_act_3(void) { } obj_forward_vel_approach(50.0f, 2.0f); - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } void bhv_flying_bookend_loop(void) { if (!(o->activeFlags & 0x0008)) { o->oDeathSound = SOUND_OBJ_POUNDING1; - obj_scale(o->header.gfx.scale[0]); + cur_obj_scale(o->header.gfx.scale[0]); switch (o->oAction) { case 0: @@ -135,7 +135,7 @@ void bhv_bookend_spawn_loop(void) { sp1C = spawn_object(o, MODEL_BOOKEND, bhvFlyingBookend); if (sp1C != NULL) { sp1C->oAction = 3; - PlaySound2(SOUND_OBJ_DEFAULT_DEATH); + cur_obj_play_sound_2(SOUND_OBJ_DEFAULT_DEATH); } o->oTimer = 0; } @@ -177,7 +177,7 @@ void bookshelf_manager_act_2(void) { } else { if (o->oBookSwitchManagerUnkF4 >= 3) { if (o->oTimer > 100) { - o->parentObj = obj_nearest_object_with_behavior(bhvHauntedBookshelf); + o->parentObj = cur_obj_nearest_object_with_behavior(bhvHauntedBookshelf); o->parentObj->oAction = 1; o->oPosX = o->parentObj->oPosX; o->oAction = 3; @@ -204,7 +204,7 @@ void bookshelf_manager_act_3(void) { void bookshelf_manager_act_4(void) { if (o->oBookSwitchManagerUnkF4 >= 3) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { o->oAction = 0; } @@ -240,19 +240,19 @@ void bhv_book_switch_loop(void) { o->header.gfx.scale[1] = 0.9f; if (o->parentObj->oAction == 4) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { sp3C = obj_check_attacks(&sBookSwitchHitbox, o->oAction); if (o->parentObj->oBookSwitchManagerUnkF8 != 0 || o->oAction == 1) { if (o->oDistanceToMario < 100.0f) { - obj_become_tangible(); + cur_obj_become_tangible(); } else { - obj_become_intangible(); + cur_obj_become_intangible(); } o->oAction = 1; if (o->oBookSwitchUnkF4 == 0.0f) { - PlaySound2(SOUND_OBJ_DEFAULT_DEATH); + cur_obj_play_sound_2(SOUND_OBJ_DEFAULT_DEATH); } if (approach_f32_ptr(&o->oBookSwitchUnkF4, 50.0f, 20.0f)) { @@ -265,7 +265,7 @@ void bhv_book_switch_loop(void) { o->oTimer = 0; } } else { - obj_become_intangible(); + cur_obj_become_intangible(); if (approach_f32_ptr(&o->oBookSwitchUnkF4, 0.0f, 20.0f)) { if (o->oAction != 0) { if (o->parentObj->oBookSwitchManagerUnkF4 == o->oBehParams2ndByte) { @@ -298,6 +298,6 @@ void bhv_book_switch_loop(void) { o->oPosX += o->parentObj->oForwardVel; o->oPosZ = o->oHomeZ - o->oBookSwitchUnkF4; - obj_push_mario_away_from_cylinder(70.0f, 70.0f); + cur_obj_push_mario_away_from_cylinder(70.0f, 70.0f); } } diff --git a/src/game/behaviors/goomba.inc.c b/src/game/behaviors/goomba.inc.c index 71f57231..92ad4782 100644 --- a/src/game/behaviors/goomba.inc.c +++ b/src/game/behaviors/goomba.inc.c @@ -115,7 +115,7 @@ void bhv_goomba_init(void) { o->oGoombaScale = sGoombaProperties[o->oGoombaSize].scale; o->oDeathSound = sGoombaProperties[o->oGoombaSize].deathSound; - set_object_hitbox(o, &sGoombaHitbox); + obj_set_hitbox(o, &sGoombaHitbox); o->oDrawingDistance = sGoombaProperties[o->oGoombaSize].drawDistance; o->oDamageOrCoinValue = sGoombaProperties[o->oGoombaSize].damage; @@ -127,7 +127,7 @@ void bhv_goomba_init(void) { * Enter the jump action and set initial y velocity. */ static void goomba_begin_jump(void) { - PlaySound2(SOUND_OBJ_GOOMBA_ALERT); + cur_obj_play_sound_2(SOUND_OBJ_GOOMBA_ALERT); o->oAction = GOOMBA_ACT_JUMP; o->oForwardVel = 0.0f; o->oVelY = 50.0f / 3.0f * o->oGoombaScale; @@ -209,7 +209,7 @@ static void goomba_act_walk(void) { } } - obj_rotate_yaw_toward(o->oGoombaTargetYaw, 0x200); + cur_obj_rotate_yaw_toward(o->oGoombaTargetYaw, 0x200); } } @@ -247,7 +247,7 @@ static void goomba_act_jump(void) { if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) { o->oAction = GOOMBA_ACT_WALK; } else { - obj_rotate_yaw_toward(o->oGoombaTargetYaw, 0x800); + cur_obj_rotate_yaw_toward(o->oGoombaTargetYaw, 0x800); } } @@ -274,18 +274,18 @@ void bhv_goomba_update(void) { // unload if (o->parentObj != o) { if (o->parentObj->oAction == GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } - obj_scale(o->oGoombaScale); + cur_obj_scale(o->oGoombaScale); obj_update_blinking(&o->oGoombaBlinkTimer, 30, 50, 5); - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if ((animSpeed = o->oForwardVel / o->oGoombaScale * 0.4f) < 1.0f) { animSpeed = 1.0f; } - func_8029ED98(0, animSpeed); + cur_obj_init_animation_with_accel_and_sound(0, animSpeed); switch (o->oAction) { case GOOMBA_ACT_WALK: @@ -310,7 +310,7 @@ void bhv_goomba_update(void) { mark_goomba_as_dead(); } - obj_move_standard(-78); + cur_obj_move_standard(-78); } else { o->oAnimState = TRUE; } diff --git a/src/game/behaviors/grand_star.inc.c b/src/game/behaviors/grand_star.inc.c index bb8d6e30..afdf0855 100644 --- a/src/game/behaviors/grand_star.inc.c +++ b/src/game/behaviors/grand_star.inc.c @@ -1,6 +1,6 @@ // grand_star.c.inc -s32 func_802B2894(Vec3f a0, Vec3f a1, f32 yVel, f32 gravity) { +s32 arc_to_goal_pos(Vec3f a0, Vec3f a1, f32 yVel, f32 gravity) { f32 dx = a0[0] - a1[0]; f32 dz = a0[2] - a1[2]; f32 planarDist = sqrtf(dx * dx + dz * dz); @@ -13,7 +13,7 @@ s32 func_802B2894(Vec3f a0, Vec3f a1, f32 yVel, f32 gravity) { return time; } -void func_802B29B0(void) { +void grand_star_zero_velocity(void) { o->oGravity = 0.0f; o->oVelY = 0.0f; o->oForwardVel = 0.0f; @@ -25,48 +25,48 @@ void bhv_grand_star_loop(void) { sp28[0] = sp28[1] = sp28[2] = 0.0f; if (o->oAction == 0) { if (o->oTimer == 0) { - set_object_angle(o, 0, 0, 0); + obj_set_angle(o, 0, 0, 0); o->oAngleVelYaw = 0x400; - PlaySound2(SOUND_GENERAL2_STAR_APPEARS); + cur_obj_play_sound_2(SOUND_GENERAL2_STAR_APPEARS); } if (o->oTimer > 70) o->oAction++; - func_802B2328(3, 200, 80, -60); + spawn_sparkle_particles(3, 200, 80, -60); } else if (o->oAction == 1) { if (o->oTimer == 0) { - PlaySound2(SOUND_GENERAL_GRAND_STAR); + cur_obj_play_sound_2(SOUND_GENERAL_GRAND_STAR); cutscene_object(CUTSCENE_STAR_SPAWN, o); - o->oGrandStarUnk108 = func_802B2894(sp28, &o->oPosX, 80.0f, -2.0f); + o->oGrandStarUnk108 = arc_to_goal_pos(sp28, &o->oPosX, 80.0f, -2.0f); } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (o->oSubAction == 0) { if (o->oPosY < o->oHomeY) { o->oPosY = o->oHomeY; o->oVelY = 60.0f; o->oForwardVel = 0.0f; o->oSubAction++; - PlaySound2(SOUND_GENERAL_GRAND_STAR_JUMP); + cur_obj_play_sound_2(SOUND_GENERAL_GRAND_STAR_JUMP); } } else if (o->oVelY < 0.0f && o->oPosY < o->oHomeY + 200.0f) { o->oPosY = o->oHomeY + 200.0f; - func_802B29B0(); + grand_star_zero_velocity(); gObjCutsceneDone = 1; set_mario_npc_dialog(0); o->oAction++; o->oInteractStatus = 0; - PlaySound2(SOUND_GENERAL_GRAND_STAR_JUMP); + cur_obj_play_sound_2(SOUND_GENERAL_GRAND_STAR_JUMP); } - func_802B2328(3, 200, 80, -60); + spawn_sparkle_particles(3, 200, 80, -60); } else { - obj_become_tangible(); + cur_obj_become_tangible(); if (o->oInteractStatus & INT_STATUS_INTERACTED) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); o->oInteractStatus = 0; } } if (o->oAngleVelYaw > 0x400) o->oAngleVelYaw -= 0x100; o->oFaceAngleYaw += o->oAngleVelYaw; - obj_scale(2.0f); + cur_obj_scale(2.0f); o->oGraphYOffset = 110.0f; } diff --git a/src/game/behaviors/grill_door.inc.c b/src/game/behaviors/grill_door.inc.c index a7b8a958..0062bf9e 100644 --- a/src/game/behaviors/grill_door.inc.c +++ b/src/game/behaviors/grill_door.inc.c @@ -26,14 +26,14 @@ void bhv_openable_grill_loop(void) { sp3C = spawn_object_relative(-1, D_8032FCE8[sp38].unk0, 0, 0, o, D_8032FCE8[sp38].unk1, bhvOpenableCageDoor); sp3C->oMoveAngleYaw += 0x8000; - set_object_collision_data(sp3C, D_8032FCE8[sp38].unk2); + obj_set_collision_data(sp3C, D_8032FCE8[sp38].unk2); sp3C = spawn_object_relative(1, -D_8032FCE8[sp38].unk0, 0, 0, o, D_8032FCE8[sp38].unk1, bhvOpenableCageDoor); - set_object_collision_data(sp3C, D_8032FCE8[sp38].unk2); + obj_set_collision_data(sp3C, D_8032FCE8[sp38].unk2); o->oAction++; break; case 1: - if ((o->oOpenableGrillUnkF4 = obj_nearest_object_with_behavior(bhvFloorSwitchGrills)) + if ((o->oOpenableGrillUnkF4 = cur_obj_nearest_object_with_behavior(bhvFloorSwitchGrills)) != NULL) o->oAction++; break; @@ -41,7 +41,7 @@ void bhv_openable_grill_loop(void) { sp3C = o->oOpenableGrillUnkF4; if (sp3C->oAction == 2) { o->oOpenableGrillUnk88 = 2; - PlaySound2(SOUND_GENERAL_CAGE_OPEN); + cur_obj_play_sound_2(SOUND_GENERAL_CAGE_OPEN); o->oAction++; if (o->oBehParams2ndByte != 0) play_puzzle_jingle(); diff --git a/src/game/behaviors/ground_particles.inc.c b/src/game/behaviors/ground_particles.inc.c index 415aa588..26dd285a 100644 --- a/src/game/behaviors/ground_particles.inc.c +++ b/src/game/behaviors/ground_particles.inc.c @@ -1,33 +1,33 @@ // ground_particles.c.inc void bhv_pound_white_puffs_init(void) { - func_802ADBBC(0x8000); - func_802ADA94(); + clear_particle_flags(0x8000); + spawn_mist_from_global(); } -void func_802ADA94(void) { - obj_spawn_particles(&D_8032F3CC); +void spawn_mist_from_global(void) { + cur_obj_spawn_particles(&D_8032F3CC); } -void bhv_unused_0e40_init(void) { - func_802ADBBC(0x4000); - obj_spawn_particles(&D_8032F3E0); +void bhv_ground_sand_init(void) { + clear_particle_flags(0x4000); + cur_obj_spawn_particles(&D_8032F3E0); } -void Unknown802ADAF4(void) { +void spawn_smoke_with_velocity(void) { struct Object *smoke = spawn_object_with_scale(o, MODEL_SMOKE, bhvWhitePuffSmoke2, 1.0f); smoke->oForwardVel = D_8032F3F4[0]; smoke->oVelY = D_8032F3F4[1]; smoke->oGravity = D_8032F3F4[2]; - translate_object_xyz_random(smoke, D_8032F3F4[3]); + obj_translate_xyz_random(smoke, D_8032F3F4[3]); } // TODO Fix name -void func_802ADBBC(u32 flags) { +void clear_particle_flags(u32 flags) { o->parentObj->oActiveParticleFlags &= flags ^ -1; // Clear the flags given (could just be ~flags) } void bhv_ground_snow_init(void) { - func_802ADBBC(1 << 16); - obj_spawn_particles(&D_8032F3FC); + clear_particle_flags(1 << 16); + cur_obj_spawn_particles(&D_8032F3FC); } diff --git a/src/game/behaviors/haunted_chair.inc.c b/src/game/behaviors/haunted_chair.inc.c index 466ac7ed..e2646cae 100644 --- a/src/game/behaviors/haunted_chair.inc.c +++ b/src/game/behaviors/haunted_chair.inc.c @@ -16,7 +16,7 @@ void bhv_haunted_chair_init(void) { struct Object *val04; f32 val00; - val04 = obj_find_nearest_object_with_behavior(bhvMadPiano, &val00); + val04 = cur_obj_find_nearest_object_with_behavior(bhvMadPiano, &val00); if (val04 != NULL && val00 < 300.0f) { o->parentObj = val04; } else { @@ -31,7 +31,7 @@ void haunted_chair_act_0(void) { if (o->parentObj != o) { if (o->oHauntedChairUnk104 == 0) { if (lateral_dist_between_objects(o, o->parentObj) < 250.0f) { - val0E = angle_to_object(o, o->parentObj) - o->oFaceAngleYaw + 0x2000; + val0E = obj_angle_to_object(o, o->parentObj) - o->oFaceAngleYaw + 0x2000; if (val0E & 0x4000) { o->oHauntedChairUnk100 = &o->oFaceAngleRoll; if (val0E > 0) { @@ -66,7 +66,7 @@ void haunted_chair_act_0(void) { } else { if ((o->oTimer & 0x8) != 0) { if (o->oFaceAnglePitch < 0) { - PlaySound2(SOUND_GENERAL_HAUNTED_CHAIR_MOVE); + cur_obj_play_sound_2(SOUND_GENERAL_HAUNTED_CHAIR_MOVE); val08 = 4.0f; } else { val08 = -4.0f; @@ -89,11 +89,11 @@ void haunted_chair_act_0(void) { } } - obj_push_mario_away_from_cylinder(80.0f, 120.0f); + cur_obj_push_mario_away_from_cylinder(80.0f, 120.0f); } void haunted_chair_act_1(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->oTimer < 70) { if (o->oTimer < 50) { @@ -108,13 +108,13 @@ void haunted_chair_act_1(void) { } else { if (o->oHauntedChairUnkF4 != 0) { if (--o->oHauntedChairUnkF4 == 0) { - PlaySound2(SOUND_GENERAL_HAUNTED_CHAIR); + cur_obj_play_sound_2(SOUND_GENERAL_HAUNTED_CHAIR); o->oMoveAnglePitch = obj_turn_pitch_toward_mario(120.0f, 0); o->oMoveAngleYaw = o->oAngleToMario; obj_compute_vel_from_move_pitch(50.0f); } else if (o->oHauntedChairUnkF4 > 20) { if (gGlobalTimer % 4 == 0) { - PlaySound2(SOUND_GENERAL_SWISH_AIR_2); + cur_obj_play_sound_2(SOUND_GENERAL_SWISH_AIR_2); } o->oFaceAngleYaw += 0x2710; } @@ -124,7 +124,7 @@ void haunted_chair_act_1(void) { } obj_check_attacks(&sHauntedChairHitbox, o->oAction); - obj_move_standard(78); + cur_obj_move_standard(78); } void bhv_haunted_chair_loop(void) { diff --git a/src/game/behaviors/heave_ho.inc.c b/src/game/behaviors/heave_ho.inc.c index c29cb2dc..662bb0bd 100644 --- a/src/game/behaviors/heave_ho.inc.c +++ b/src/game/behaviors/heave_ho.inc.c @@ -14,7 +14,7 @@ void bhv_heave_ho_throw_mario_loop(void) { case 1: break; case 2: - PlaySound2(SOUND_OBJ_HEAVEHO_TOSSED); + cur_obj_play_sound_2(SOUND_OBJ_HEAVEHO_TOSSED); gMarioObject->oInteractStatus |= INT_STATUS_MARIO_UNK2; gMarioStates->forwardVel = -45.0f; gMarioStates->vel[1] = 95.0f; @@ -23,28 +23,28 @@ void bhv_heave_ho_throw_mario_loop(void) { } } -void ActionHeaveHo1(void) { +void heave_ho_act_1(void) { s32 sp1C = 0; o->oForwardVel = 0.0f; - func_8029F6F0(); + cur_obj_reverse_animation(); while (1) { if (D_8032F460[sp1C][0] == -1) { o->oAction = 2; break; } if (o->oTimer < D_8032F460[sp1C][0]) { - func_8029ED98(2, D_8032F460[sp1C][1]); + cur_obj_init_animation_with_accel_and_sound(2, D_8032F460[sp1C][1]); break; } sp1C++; } } -void ActionHeaveHo2(void) { +void heave_ho_act_2(void) { UNUSED s32 unused; s16 angleVel; - if (1000.0f < obj_lateral_dist_from_mario_to_home()) - o->oAngleToMario = obj_angle_to_home(); + if (1000.0f < cur_obj_lateral_dist_from_mario_to_home()) + o->oAngleToMario = cur_obj_angle_to_home(); if (o->oTimer > 150) { o->oHeaveHoUnkF4 = (302 - o->oTimer) / 152.0f; if (o->oHeaveHoUnkF4 < 0.1) { @@ -53,48 +53,48 @@ void ActionHeaveHo2(void) { } } else o->oHeaveHoUnkF4 = 1.0f; - func_8029ED98(0, o->oHeaveHoUnkF4); + cur_obj_init_animation_with_accel_and_sound(0, o->oHeaveHoUnkF4); o->oForwardVel = o->oHeaveHoUnkF4 * 10.0f; angleVel = o->oHeaveHoUnkF4 * 0x400; o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, angleVel); } -void ActionHeaveHo3(void) { +void heave_ho_act_3(void) { o->oForwardVel = 0.0f; if (o->oTimer == 0) o->oHeaveHoUnk88 = 2; if (o->oTimer == 1) { - func_8029ED98(1, 1.0f); + cur_obj_init_animation_with_accel_and_sound(1, 1.0f); o->numCollidedObjs = 20; } - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) o->oAction = 1; } -void ActionHeaveHo0(void) { - obj_set_pos_to_home(); +void heave_ho_act_0(void) { + cur_obj_set_pos_to_home(); if (find_water_level(o->oPosX, o->oPosZ) < o->oPosY && o->oDistanceToMario < 4000.0f) { - obj_become_tangible(); - obj_unhide(); + cur_obj_become_tangible(); + cur_obj_unhide(); o->oAction = 1; } else { - obj_become_intangible(); - obj_hide(); + cur_obj_become_intangible(); + cur_obj_hide(); } } -void (*sHeaveHoActions[])(void) = { ActionHeaveHo0, ActionHeaveHo1, ActionHeaveHo2, ActionHeaveHo3 }; +void (*sHeaveHoActions[])(void) = { heave_ho_act_0, heave_ho_act_1, heave_ho_act_2, heave_ho_act_3 }; -void func_802B18B4(void) { - obj_update_floor_and_walls(); - obj_call_action_function(sHeaveHoActions); - obj_move_standard(-78); +void heave_ho_move(void) { + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sHeaveHoActions); + cur_obj_move_standard(-78); if (o->oMoveFlags & (0x40 | 0x20 | 0x10 | 0x8)) o->oGraphYOffset = -15.0f; else o->oGraphYOffset = 0.0f; if (o->oForwardVel > 3.0f) - PlaySound(SOUND_AIR_HEAVEHO_MOVE); + cur_obj_play_sound_1(SOUND_AIR_HEAVEHO_MOVE); if (o->oAction != 0 && o->oMoveFlags & (0x40 | 0x20 | 0x10 | 0x8)) o->oAction = 0; if (o->oInteractStatus & INT_STATUS_GRABBED_MARIO) { @@ -105,19 +105,19 @@ void func_802B18B4(void) { } void bhv_heave_ho_loop(void) { - obj_scale(2.0f); + cur_obj_scale(2.0f); switch (o->oHeldState) { case HELD_FREE: - func_802B18B4(); + heave_ho_move(); break; case HELD_HELD: - func_8029FA5C(0, 0); + cur_obj_unrender_and_reset_state(0, 0); break; case HELD_THROWN: - obj_get_dropped(); + cur_obj_get_dropped(); break; case HELD_DROPPED: - obj_get_dropped(); + cur_obj_get_dropped(); break; } o->oInteractStatus = 0; diff --git a/src/game/behaviors/hidden_star.inc.c b/src/game/behaviors/hidden_star.inc.c index ccd8a366..693c7991 100644 --- a/src/game/behaviors/hidden_star.inc.c +++ b/src/game/behaviors/hidden_star.inc.c @@ -24,8 +24,8 @@ void bhv_hidden_star_loop(void) { case 1: if (o->oTimer > 2) { - func_802F1B84(o->oPosX, o->oPosY, o->oPosZ); - func_802A3004(); + spawn_red_coin_cutscene_star(o->oPosX, o->oPosY, o->oPosZ); + spawn_mist_particles(); o->activeFlags = 0; } break; @@ -35,8 +35,8 @@ void bhv_hidden_star_loop(void) { /* TODO: this is likely not a checkpoint but a Secret */ void bhv_hidden_star_trigger_loop(void) { struct Object *hiddenStar; - if (are_objects_collided(o, gMarioObject) == 1) { - hiddenStar = obj_nearest_object_with_behavior(bhvHiddenStar); + if (obj_check_if_collided_with_object(o, gMarioObject) == 1) { + hiddenStar = cur_obj_nearest_object_with_behavior(bhvHiddenStar); if (hiddenStar != NULL) { hiddenStar->oHiddenStarTriggerCounter++; if (hiddenStar->oHiddenStarTriggerCounter != 5) { @@ -66,8 +66,8 @@ void bhv_bowser_course_red_coin_star_loop(void) { case 1: if (o->oTimer > 2) { - func_802F1BD4(o->oPosX, o->oPosY, o->oPosZ); - func_802A3004(); + spawn_no_exit_star(o->oPosX, o->oPosY, o->oPosZ); + spawn_mist_particles(); o->activeFlags = 0; } break; diff --git a/src/game/behaviors/hoot.inc.c b/src/game/behaviors/hoot.inc.c index 6441965e..b807d5d9 100644 --- a/src/game/behaviors/hoot.inc.c +++ b/src/game/behaviors/hoot.inc.c @@ -1,20 +1,20 @@ // hoot.c.inc void bhv_hoot_init(void) { - SetObjAnimation(0); + cur_obj_init_animation(0); o->oHomeX = o->oPosX + 800.0f; o->oHomeY = o->oPosY - 150.0f; o->oHomeZ = o->oPosZ + 300.0f; o->header.gfx.node.flags |= 0x10; /* bit 4 */ - obj_become_intangible(); + cur_obj_become_intangible(); } // sp28 = arg0 // sp2c = arg1 -f32 HootFindNextFloor(struct FloorGeometry **arg0, f32 arg1) { +f32 hoot_find_next_floor(struct FloorGeometry **arg0, f32 arg1) { f32 sp24 = arg1 * sins(o->oMoveAngleYaw) + o->oPosX; UNUSED f32 sp20 = o->oPosY; f32 sp1c = arg1 * coss(o->oMoveAngleYaw) + o->oPosZ; @@ -23,19 +23,19 @@ f32 HootFindNextFloor(struct FloorGeometry **arg0, f32 arg1) { return floorY; } -void HootFloorBounce(void) { +void hoot_floor_bounce(void) { struct FloorGeometry *sp1c; f32 floorY; - floorY = HootFindNextFloor(&sp1c, 375.0f); + floorY = hoot_find_next_floor(&sp1c, 375.0f); if (floorY + 75.0f > o->oPosY) o->oMoveAnglePitch -= 3640.8888; - floorY = HootFindNextFloor(&sp1c, 200.0f); + floorY = hoot_find_next_floor(&sp1c, 200.0f); if (floorY + 125.0f > o->oPosY) o->oMoveAnglePitch -= 7281.7776; - floorY = HootFindNextFloor(&sp1c, 0); + floorY = hoot_find_next_floor(&sp1c, 0); if (floorY + 125.0f > o->oPosY) o->oPosY = floorY + 125.0f; if (o->oMoveAnglePitch < -21845.3328) @@ -45,7 +45,7 @@ void HootFloorBounce(void) { // sp30 = fastOscY // sp34 = speed -void HootFreeStep(s16 fastOscY, s32 speed) { +void hoot_free_step(s16 fastOscY, s32 speed) { struct FloorGeometry *sp2c; s16 yaw = o->oMoveAngleYaw; s16 pitch = o->oMoveAnglePitch; @@ -73,10 +73,10 @@ void HootFreeStep(s16 fastOscY, s32 speed) { } if (sp26 == 0) - PlaySound2(SOUND_GENERAL_SWISH_WATER); + cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER); } -void PlayerSetHootYaw(void) { +void hoot_player_set_yaw(void) { s16 stickX = gPlayer3Controller->rawStickX; s16 stickY = gPlayer3Controller->rawStickY; UNUSED s16 pitch = o->oMoveAnglePitch; @@ -92,7 +92,7 @@ void PlayerSetHootYaw(void) { // sp2c = xPrev // sp30 = zPrev -void HootCarryStep(s32 speed, UNUSED f32 xPrev, UNUSED f32 zPrev) { +void hoot_carry_step(s32 speed, UNUSED f32 xPrev, UNUSED f32 zPrev) { s16 yaw = o->oMoveAngleYaw; s16 pitch = o->oMoveAnglePitch; s16 sp22 = o->header.gfx.unk38.animFrame; @@ -108,14 +108,14 @@ void HootCarryStep(s32 speed, UNUSED f32 xPrev, UNUSED f32 zPrev) { o->oPosZ += o->oVelZ; if (sp22 == 0) - PlaySound2(SOUND_GENERAL_SWISH_WATER); + cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER); } // sp48 = xPrev // sp4c = yPrev // sp50 = zPrev -void HootSurfaceCollision(f32 xPrev, UNUSED f32 yPrev, f32 zPrev) { +void hoot_surface_collision(f32 xPrev, UNUSED f32 yPrev, f32 zPrev) { struct FloorGeometry *sp44; struct WallCollisionData hitbox; f32 floorY; @@ -151,7 +151,7 @@ void HootSurfaceCollision(f32 xPrev, UNUSED f32 yPrev, f32 zPrev) { // sp28 = xPrev // sp2c = zPrev -void HootAscentLoop(f32 xPrev, f32 zPrev) { +void hoot_act_ascent(f32 xPrev, f32 zPrev) { f32 negX = 0 - o->oPosX; f32 negZ = 0 - o->oPosZ; s16 angleToOrigin = atan2s(negZ, negX); @@ -160,28 +160,28 @@ void HootAscentLoop(f32 xPrev, f32 zPrev) { o->oMoveAnglePitch = 0xCE38; if (o->oTimer >= 29) { - PlaySound(SOUND_ENV_WIND2); + cur_obj_play_sound_1(SOUND_ENV_WIND2); o->header.gfx.unk38.animFrame = 1; } if (o->oPosY > 6500.0f) o->oAction = HOOT_ACT_CARRY; - HootCarryStep(60, xPrev, zPrev); + hoot_carry_step(60, xPrev, zPrev); } -void HootActionLoop(void) { +void hoot_action_loop(void) { f32 xPrev = o->oPosX; f32 yPrev = o->oPosY; f32 zPrev = o->oPosZ; switch (o->oAction) { case HOOT_ACT_ASCENT: - HootAscentLoop(xPrev, zPrev); + hoot_act_ascent(xPrev, zPrev); break; case HOOT_ACT_CARRY: - PlayerSetHootYaw(); + hoot_player_set_yaw(); o->oMoveAnglePitch = 0x71C; @@ -195,25 +195,25 @@ void HootActionLoop(void) { } } - HootCarryStep(20, xPrev, zPrev); + hoot_carry_step(20, xPrev, zPrev); break; case HOOT_ACT_TIRED: - PlayerSetHootYaw(); + hoot_player_set_yaw(); o->oMoveAnglePitch = 0; - HootCarryStep(20, xPrev, zPrev); + hoot_carry_step(20, xPrev, zPrev); if (o->oTimer >= 61) gMarioObject->oInteractStatus |= INT_STATUS_MARIO_UNK7; /* bit 7 */ break; } - HootSurfaceCollision(xPrev, yPrev, zPrev); + hoot_surface_collision(xPrev, yPrev, zPrev); } -void HootTurnToHome(void) { +void hoot_turn_to_home(void) { f32 homeDistX = o->oHomeX - o->oPosX; f32 homeDistY = o->oHomeY - o->oPosY; f32 homeDistZ = o->oHomeZ - o->oPosZ; @@ -224,17 +224,16 @@ void HootTurnToHome(void) { o->oMoveAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, vAngleToHome, 0x140); } -void HootAwakeLoop(void) { +void hoot_awake_loop(void) { if (o->oInteractStatus == INTERACT_HOOT) { - HootActionLoop(); - - SetObjAnimation(1); + hoot_action_loop(); + cur_obj_init_animation(1); } else { - SetObjAnimation(0); + cur_obj_init_animation(0); - HootTurnToHome(); - HootFloorBounce(); - HootFreeStep(0, 10); + hoot_turn_to_home(); + hoot_floor_bounce(); + hoot_free_step(0, 10); o->oAction = 0; o->oTimer = 0; @@ -253,19 +252,19 @@ void bhv_hoot_loop(void) { break; case HOOT_AVAIL_WANTS_TO_TALK: - HootAwakeLoop(); + hoot_awake_loop(); if (set_mario_npc_dialog(2) == 2 && cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_044)) { set_mario_npc_dialog(0); - obj_become_tangible(); + cur_obj_become_tangible(); o->oHootAvailability = HOOT_AVAIL_READY_TO_FLY; } break; case HOOT_AVAIL_READY_TO_FLY: - HootAwakeLoop(); + hoot_awake_loop(); break; } } diff --git a/src/game/behaviors/horizontal_grindel.inc.c b/src/game/behaviors/horizontal_grindel.inc.c index e864d0ba..07733c07 100644 --- a/src/game/behaviors/horizontal_grindel.inc.c +++ b/src/game/behaviors/horizontal_grindel.inc.c @@ -6,22 +6,22 @@ void bhv_horizontal_grindel_init(void) { void bhv_horizontal_grindel_update(void) { if (o->oMoveFlags & 0x00000003) { if (!o->oHorizontalGrindelOnGround) { - PlaySound2(SOUND_OBJ_THWOMP); + cur_obj_play_sound_2(SOUND_OBJ_THWOMP); o->oHorizontalGrindelOnGround = TRUE; set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ); - o->oHorizontalGrindelDistToHome = obj_lateral_dist_to_home(); + o->oHorizontalGrindelDistToHome = cur_obj_lateral_dist_to_home(); o->oForwardVel = 0.0f; o->oTimer = 0; } - if (obj_rotate_yaw_toward(o->oHorizontalGrindelTargetYaw, 0x400)) { + if (cur_obj_rotate_yaw_toward(o->oHorizontalGrindelTargetYaw, 0x400)) { if (o->oTimer > 60) { if (o->oHorizontalGrindelDistToHome > 300.0f) { o->oHorizontalGrindelTargetYaw += 0x8000; o->oHorizontalGrindelDistToHome = 0.0f; } else { - PlaySound2(SOUND_OBJ_KING_BOBOMB_JUMP); + cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB_JUMP); o->oForwardVel = 11.0f; o->oVelY = 70.0f; o->oGravity = -4.0f; @@ -39,5 +39,5 @@ void bhv_horizontal_grindel_update(void) { } o->oFaceAngleYaw = o->oMoveAngleYaw + 0x4000; - obj_move_standard(78); + cur_obj_move_standard(78); } diff --git a/src/game/behaviors/intro_lakitu.inc.c b/src/game/behaviors/intro_lakitu.inc.c index 8b06a041..4947adcd 100644 --- a/src/game/behaviors/intro_lakitu.inc.c +++ b/src/game/behaviors/intro_lakitu.inc.c @@ -63,7 +63,7 @@ void bhv_intro_lakitu_loop(void) { switch (gCurrentObject->oAction) { case 0: - obj_disable_rendering(); + cur_obj_disable_rendering(); gCurrentObject->oIntroLakituSplineSegment = 0.f; gCurrentObject->oIntroLakituSplineSegmentProgress = 0.f; gCurrentObject->oIntroLakituCloud = @@ -75,14 +75,14 @@ void bhv_intro_lakitu_loop(void) { break; case 1: - obj_enable_rendering(); + cur_obj_enable_rendering(); if ((gCutsceneTimer > 350) && (gCutsceneTimer < 458)) { gCurrentObject->oPosX = gCamera->pos[0]; gCurrentObject->oPosY = gCamera->pos[1] + 500.f; gCurrentObject->oPosZ = gCamera->pos[2]; } if (gCutsceneTimer > 52) - PlaySound(SOUND_AIR_LAKITU_FLY_HIGHPRIO); + cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY_HIGHPRIO); if (intro_lakitu_set_pos_and_focus(gCurrentObject, gIntroLakituStartToPipeOffsetFromCamera, gIntroLakituStartToPipeFocus) == 1) @@ -91,10 +91,10 @@ void bhv_intro_lakitu_loop(void) { switch (gCurrentObject->oTimer) { #ifdef VERSION_US case 534: - PlaySound2(SOUND_ACTION_FLYING_FAST); + cur_obj_play_sound_2(SOUND_ACTION_FLYING_FAST); break; case 581: - PlaySound2(SOUND_ACTION_INTRO_UNK45E); + cur_obj_play_sound_2(SOUND_ACTION_INTRO_UNK45E); break; #endif case 73: @@ -112,9 +112,9 @@ void bhv_intro_lakitu_loop(void) { } #ifdef VERSION_EU if (gCurrentObject->oTimer == 446) - PlaySound2(SOUND_ACTION_FLYING_FAST); + cur_obj_play_sound_2(SOUND_ACTION_FLYING_FAST); if (gCurrentObject->oTimer == 485) - PlaySound2(SOUND_ACTION_INTRO_UNK45E); + cur_obj_play_sound_2(SOUND_ACTION_INTRO_UNK45E); #endif break; case 2: @@ -132,11 +132,11 @@ void bhv_intro_lakitu_loop(void) { gCurrentObject->oFaceAngleYaw = gCurrentObject->oMoveAngleYaw + 0x4000; gCurrentObject->oMoveAnglePitch = 0x800; } - PlaySound(SOUND_AIR_LAKITU_FLY_HIGHPRIO); + cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY_HIGHPRIO); break; case 3: - PlaySound(SOUND_AIR_LAKITU_FLY_HIGHPRIO); + cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY_HIGHPRIO); vec3f_set(sp58, -1128.f, 560.f, 4664.f); gCurrentObject->oMoveAngleYaw += 0x200; gCurrentObject->oIntroLakituUnk100 = @@ -158,7 +158,7 @@ void bhv_intro_lakitu_loop(void) { if (gCurrentObject->oTimer == 31) { gCurrentObject->oPosY -= 158.f; // Spawn white ground particles - func_802ADA94(); + spawn_mist_from_global(); gCurrentObject->oPosY += 158.f; } #ifdef VERSION_EU @@ -168,16 +168,16 @@ void bhv_intro_lakitu_loop(void) { #endif if (gCurrentObject->oTimer == TIMER) { - mark_object_for_deletion(gCurrentObject); - mark_object_for_deletion(gCurrentObject->oIntroLakituCloud); + obj_mark_for_deletion(gCurrentObject); + obj_mark_for_deletion(gCurrentObject->oIntroLakituCloud); } #ifndef VERSION_JP if (gCurrentObject->oTimer == 14) - PlaySound2(SOUND_ACTION_INTRO_UNK45F); + cur_obj_play_sound_2(SOUND_ACTION_INTRO_UNK45F); #endif break; case 100: - obj_enable_rendering(); + cur_obj_enable_rendering(); vec3f_set(sp64, -100.f, 100.f, 300.f); offset_rotated(sp4C, gCamera->pos, sp64, sMarioCamState->faceAngle); vec3f_to_object_pos(gCurrentObject, sp4C); @@ -204,7 +204,7 @@ void bhv_intro_lakitu_loop(void) { gCurrentObject->oMoveAnglePitch = 0xE00; } gCurrentObject->oFaceAnglePitch = 0; - func_802A2A38(); + cur_obj_set_pos_via_transform(); break; case 102: @@ -219,7 +219,7 @@ void bhv_intro_lakitu_loop(void) { gCurrentObject->oMoveAnglePitch = camera_approach_s16_symmetric(gCurrentObject->oMoveAnglePitch, -0x2000, 0x5A); gCurrentObject->oFaceAnglePitch = 0; - func_802A2A38(); + cur_obj_set_pos_via_transform(); break; } } diff --git a/src/game/behaviors/intro_peach.inc.c b/src/game/behaviors/intro_peach.inc.c index dfbd8332..eb32d1c9 100644 --- a/src/game/behaviors/intro_peach.inc.c +++ b/src/game/behaviors/intro_peach.inc.c @@ -47,7 +47,7 @@ void bhv_intro_peach_loop(void) { intro_peach_set_pos_and_opacity(gCurrentObject, 0.f, 8.f); if (gCurrentObject->oTimer > 60) - mark_object_for_deletion(gCurrentObject); + obj_mark_for_deletion(gCurrentObject); break; } } diff --git a/src/game/behaviors/intro_scene.inc.c b/src/game/behaviors/intro_scene.inc.c index 02a8da9a..854d37a5 100644 --- a/src/game/behaviors/intro_scene.inc.c +++ b/src/game/behaviors/intro_scene.inc.c @@ -1,6 +1,6 @@ // intro_scene.inc.c -void func_8029B964(struct Object *parent, s16 xOffset, s16 yOffset, s16 zOffset, s16 pitchOffset, +void spawn_child_obj_relative(struct Object *parent, s16 xOffset, s16 yOffset, s16 zOffset, s16 pitchOffset, s16 yawOffset, s16 rollOffset, s16 forwardVel, s32 model, const BehaviorScript *behavior) { struct Object *sp1C = spawn_object(parent, model, behavior); @@ -37,37 +37,37 @@ void bhv_intro_scene_loop(void) { sp34 = spawn_object(gCurrentObject, MODEL_PEACH, bhvBeginningPeach); break; case 7: - func_8029B964(gCurrentObject, 0, 205, 500, 0x1000, 0x6000, -0x1E00, 25, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, 0, 205, 500, 0x1000, 0x6000, -0x1E00, 25, MODEL_BIRDS, bhvEndBirds1); - func_8029B964(gCurrentObject, 0, 205, 800, 0x1800, 0x6000, -0x1400, 35, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, 0, 205, 800, 0x1800, 0x6000, -0x1400, 35, MODEL_BIRDS, bhvEndBirds1); - func_8029B964(gCurrentObject, -100, 300, 500, 0x800, 0x6000, 0, 25, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, -100, 300, 500, 0x800, 0x6000, 0, 25, MODEL_BIRDS, bhvEndBirds1); - func_8029B964(gCurrentObject, 100, -200, 800, 0, 0x4000, 0x1400, 45, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, 100, -200, 800, 0, 0x4000, 0x1400, 45, MODEL_BIRDS, bhvEndBirds1); - func_8029B964(gCurrentObject, -80, 300, 350, 0x1800, 0x5000, 0xA00, 35, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, -80, 300, 350, 0x1800, 0x5000, 0xA00, 35, MODEL_BIRDS, bhvEndBirds1); - func_8029B964(gCurrentObject, -300, 300, 500, 0x800, 0x6000, 0x2800, 25, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, -300, 300, 500, 0x800, 0x6000, 0x2800, 25, MODEL_BIRDS, bhvEndBirds1); - func_8029B964(gCurrentObject, -400, -200, 800, 0, 0x4000, -0x1400, 45, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, -400, -200, 800, 0, 0x4000, -0x1400, 45, MODEL_BIRDS, bhvEndBirds1); break; case 9: - func_8029B964(gCurrentObject, 50, 205, 500, 0x1000, 0x6000, 0, 35, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, 50, 205, 500, 0x1000, 0x6000, 0, 35, MODEL_BIRDS, bhvEndBirds1); - func_8029B964(gCurrentObject, 0, 285, 800, 0x1800, 0x6000, 0, 35, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, 0, 285, 800, 0x1800, 0x6000, 0, 35, MODEL_BIRDS, bhvEndBirds1); break; case 8: - func_8029B964(gCurrentObject, -100, -100, -700, 0, 0, -0xF00, 25, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, -100, -100, -700, 0, 0, -0xF00, 25, MODEL_BIRDS, bhvEndBirds2); - func_8029B964(gCurrentObject, -250, 255, -200, 0, 0, -0x1400, 25, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, -250, 255, -200, 0, 0, -0x1400, 25, MODEL_BIRDS, bhvEndBirds2); - func_8029B964(gCurrentObject, -100, 155, -600, 0, 0, -0x500, 35, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, -100, 155, -600, 0, 0, -0x500, 35, MODEL_BIRDS, bhvEndBirds2); - func_8029B964(gCurrentObject, 250, 200, -1200, 0, 0, -0x700, 25, MODEL_BIRDS, + spawn_child_obj_relative(gCurrentObject, 250, 200, -1200, 0, 0, -0x700, 25, MODEL_BIRDS, bhvEndBirds2); - func_8029B964(gCurrentObject, -250, 255, -700, 0, 0, 0, 25, MODEL_BIRDS, bhvEndBirds2); + spawn_child_obj_relative(gCurrentObject, -250, 255, -700, 0, 0, 0, 25, MODEL_BIRDS, bhvEndBirds2); break; } diff --git a/src/game/behaviors/jrb_ship.inc.c b/src/game/behaviors/jrb_ship.inc.c index 207d7983..3b627da0 100644 --- a/src/game/behaviors/jrb_ship.inc.c +++ b/src/game/behaviors/jrb_ship.inc.c @@ -17,20 +17,20 @@ void bhv_sunken_ship_part_loop(void) { o->oOpacity = 140; else o->oOpacity = o->oDistanceToMario * 140.0f / 10000.0; - obj_disable_rendering(); + cur_obj_disable_rendering(); } void bhv_ship_part_3_loop(void) { s16 sp1E = o->oFaceAnglePitch; s16 sp1C = o->oFaceAngleRoll; - func_802A3470(); + cur_obj_set_pos_to_home_with_debug(); o->oShipPart3UnkF4 += 0x100; o->oFaceAnglePitch = sins(o->oShipPart3UnkF4) * 1024.0f; o->oFaceAngleRoll = sins(o->oShipPart3UnkF8) * 1024.0f; o->oAngleVelPitch = o->oFaceAnglePitch - sp1E; o->oAngleVelRoll = o->oFaceAngleRoll - sp1C; if (gMarioObject->oPosY > 1000.0f) - PlaySound(SOUND_ENV_BOAT_ROCKING1); + cur_obj_play_sound_1(SOUND_ENV_BOAT_ROCKING1); } void bhv_jrb_sliding_box_loop(void) { @@ -44,7 +44,7 @@ void bhv_jrb_sliding_box_loop(void) { Vec3f sp20; s16 sp1E; if (o->oJrbSlidingBoxUnkF4 == NULL) { - sp3C = obj_nearest_object_with_behavior(bhvInSunkenShip3); + sp3C = cur_obj_nearest_object_with_behavior(bhvInSunkenShip3); if (sp3C != NULL) // NULL check only for assignment, not for dereference? o->oJrbSlidingBoxUnkF4 = sp3C; o->oParentRelativePosX = o->oPosX - sp3C->oPosX; @@ -80,12 +80,12 @@ void bhv_jrb_sliding_box_loop(void) { o->oParentRelativePosZ += o->oJrbSlidingBoxUnkFC; if (gMarioObject->oPosY > 1000.0f) if (absf(o->oJrbSlidingBoxUnkFC) > 3.0f) - PlaySound(SOUND_AIR_ROUGH_SLIDE); - set_object_hitbox(o, &sSkullSlidingBoxHitbox); + cur_obj_play_sound_1(SOUND_AIR_ROUGH_SLIDE); + obj_set_hitbox(o, &sSkullSlidingBoxHitbox); if (!(o->oJrbSlidingBoxUnkF8 & 0x7FFF)) - obj_become_tangible(); - if (are_objects_collided(o, gMarioObject)) { + cur_obj_become_tangible(); + if (obj_check_if_collided_with_object(o, gMarioObject)) { o->oInteractStatus = 0; - obj_become_intangible(); + cur_obj_become_intangible(); } } diff --git a/src/game/behaviors/jumping_box.inc.c b/src/game/behaviors/jumping_box.inc.c index e9464276..4a40b073 100644 --- a/src/game/behaviors/jumping_box.inc.c +++ b/src/game/behaviors/jumping_box.inc.c @@ -12,7 +12,7 @@ struct ObjectHitbox sJumpingBoxHitbox = { /* hurtboxHeight: */ 250, }; -void ActionJumpingBox0(void) { +void jumping_box_act_0(void) { if (o->oSubAction == 0) { if (o->oJumpingBoxUnkF8-- < 0) o->oSubAction++; @@ -26,45 +26,45 @@ void ActionJumpingBox0(void) { } } -void ActionJumpingBox1(void) { +void jumping_box_act_1(void) { if (o->oMoveFlags & (0x200 | 0x40 | 0x20 | 0x10 | 0x8 | 0x1)) { - mark_object_for_deletion(o); - func_802A3004(); + obj_mark_for_deletion(o); + spawn_mist_particles(); } } -void (*sJumpingBoxActions[])(void) = { ActionJumpingBox0, ActionJumpingBox1 }; +void (*sJumpingBoxActions[])(void) = { jumping_box_act_0, jumping_box_act_1 }; -void func_802B1F84(void) { - obj_set_model(MODEL_BREAKABLE_BOX); - obj_scale(0.5f); - set_object_hitbox(o, &sJumpingBoxHitbox); - obj_update_floor_and_walls(); - obj_move_standard(78); - obj_call_action_function(sJumpingBoxActions); +void jumping_box_free_update(void) { + cur_obj_set_model(MODEL_BREAKABLE_BOX); + cur_obj_scale(0.5f); + obj_set_hitbox(o, &sJumpingBoxHitbox); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); + cur_obj_call_action_function(sJumpingBoxActions); } void bhv_jumping_box_loop(void) { switch (o->oHeldState) { case HELD_FREE: - func_802B1F84(); + jumping_box_free_update(); break; case HELD_HELD: - copy_object_pos(o, gMarioObject); - obj_set_model(MODEL_BREAKABLE_BOX_SMALL); - func_8029FA5C(-1, 0); + obj_copy_pos(o, gMarioObject); + cur_obj_set_model(MODEL_BREAKABLE_BOX_SMALL); + cur_obj_unrender_and_reset_state(-1, 0); break; case HELD_THROWN: - obj_get_thrown_or_placed(40.0f, 20.0f, 1); + cur_obj_get_thrown_or_placed(40.0f, 20.0f, 1); break; case HELD_DROPPED: - obj_get_dropped(); + cur_obj_get_dropped(); o->oAction = 1; break; } if (o->oInteractStatus & INTERACT_HIT_FROM_BELOW) { create_sound_spawner(SOUND_GENERAL_BREAK_BOX); - func_802A3C98(46.0f, 1); + obj_explode_and_spawn_coins(46.0f, 1); } o->oInteractStatus = 0; } diff --git a/src/game/behaviors/kickable_board.inc.c b/src/game/behaviors/kickable_board.inc.c index ee56370c..7be9b212 100644 --- a/src/game/behaviors/kickable_board.inc.c +++ b/src/game/behaviors/kickable_board.inc.c @@ -1,7 +1,7 @@ // kickable_board.c.inc -s32 func_802A9A0C(UNUSED s32 sp18) { - if (are_objects_collided(o, gMarioObject)) { +s32 check_mario_attacking(UNUSED s32 sp18) { + if (obj_check_if_collided_with_object(o, gMarioObject)) { if (abs_angle_diff(o->oMoveAngleYaw, gMarioObject->oMoveAngleYaw) > 0x6000) { if (gMarioStates->action == ACT_SLIDE_KICK) return 1; @@ -20,7 +20,7 @@ s32 func_802A9A0C(UNUSED s32 sp18) { return 0; } -void func_802A9B54(void) { +void init_kickable_board_rock(void) { o->oKickableBoardF8 = 1600; o->oKickableBoardF4 = 0; } @@ -30,8 +30,8 @@ void bhv_kickable_board_loop(void) { switch (o->oAction) { case 0: o->oFaceAnglePitch = 0; - if (func_802A9A0C(0)) { - func_802A9B54(); + if (check_mario_attacking(0)) { + init_kickable_board_rock(); o->oAction++; } load_object_collision_model(); @@ -40,10 +40,10 @@ void bhv_kickable_board_loop(void) { o->oFaceAnglePitch = 0; load_object_collision_model(); o->oFaceAnglePitch = -sins(o->oKickableBoardF4) * o->oKickableBoardF8; - if (o->oTimer > 30 && (sp24 = func_802A9A0C(0))) { + if (o->oTimer > 30 && (sp24 = check_mario_attacking(0))) { if (gMarioObject->oPosY > o->oPosY + 160.0f && sp24 == 2) { o->oAction++; - PlaySound2(SOUND_GENERAL_BUTTON_PRESS_2); + cur_obj_play_sound_2(SOUND_GENERAL_BUTTON_PRESS_2); } else o->oTimer = 0; } @@ -52,22 +52,22 @@ void bhv_kickable_board_loop(void) { if (o->oKickableBoardF8 < 0) o->oAction = 0; } else - func_802A9B54(); + init_kickable_board_rock(); if (!(o->oKickableBoardF4 & 0x7FFF)) - PlaySound2(SOUND_GENERAL_BUTTON_PRESS_2); + cur_obj_play_sound_2(SOUND_GENERAL_BUTTON_PRESS_2); o->oKickableBoardF4 += 0x400; break; case 2: - obj_become_intangible(); - obj_set_model(MODEL_WF_KICKABLE_BOARD_FELLED); + cur_obj_become_intangible(); + cur_obj_set_model(MODEL_WF_KICKABLE_BOARD_FELLED); o->oAngleVelPitch -= 0x80; o->oFaceAnglePitch += o->oAngleVelPitch; if (o->oFaceAnglePitch < -0x4000) { o->oFaceAnglePitch = -0x4000; o->oAngleVelPitch = 0; o->oAction++; - ShakeScreen(SHAKE_POS_SMALL); - PlaySound2(SOUND_GENERAL_UNKNOWN4); + cur_obj_shake_screen(SHAKE_POS_SMALL); + cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN4); } load_object_collision_model(); break; diff --git a/src/game/behaviors/king_bobomb.inc.c b/src/game/behaviors/king_bobomb.inc.c index d1665a9b..248f54f8 100644 --- a/src/game/behaviors/king_bobomb.inc.c +++ b/src/game/behaviors/king_bobomb.inc.c @@ -1,84 +1,100 @@ // king_bobomb.c.inc -void bhv_bobomb_anchor_mario_loop(void) { - func_802A8D18(50.0f, 50.0f, 64); +// Copy of geo_update_projectile_pos_from_parent +Gfx *geo_update_held_mario_pos(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) { + Mat4 sp20; + struct Object *sp1C; + + if (run == TRUE) { + sp1C = (struct Object *) gCurGraphNodeObject; + if (sp1C->prevObj != NULL) { + create_transformation_from_matrices(sp20, mtx, gCurGraphNodeCamera->matrixPtr); + obj_update_pos_from_parent_transformation(sp20, sp1C->prevObj); + obj_set_gfx_pos_from_pos(sp1C->prevObj); + } + } + return NULL; } -void ActionKingBobomb0(void) { +void bhv_bobomb_anchor_mario_loop(void) { + common_anchor_mario_behavior(50.0f, 50.0f, 64); +} + +void king_bobomb_act_0(void) { #ifndef VERSION_JP o->oForwardVel = 0; o->oVelY = 0; #endif if (o->oSubAction == 0) { - obj_become_intangible(); + cur_obj_become_intangible(); gSecondCameraFocus = o; - set_obj_animation_and_sound_state(5); - obj_set_pos_to_home(); + cur_obj_init_animation_with_sound(5); + cur_obj_set_pos_to_home(); o->oHealth = 3; - if (obj_is_mario_in_range_and_ready_to_speak(500.0f, 100.0f)) { + if (cur_obj_can_mario_activate_textbox_2(500.0f, 100.0f)) { o->oSubAction++; func_8031FFB4(0, 60, 40); } - } else if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_017)) { + } else if (cur_obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_017)) { o->oAction = 2; o->oFlags |= OBJ_FLAG_HOLDABLE; } } -int func_802A6AF8(f32 arg0) { +int mario_is_far_below_object(f32 arg0) { if (arg0 < o->oPosY - gMarioObject->oPosY) return 1; else return 0; } -void ActionKingBobomb2(void) { - obj_become_tangible(); +void king_bobomb_act_2(void) { + cur_obj_become_tangible(); if (o->oPosY - o->oHomeY < -100.0f) { // Thrown off hill o->oAction = 5; - obj_become_intangible(); + cur_obj_become_intangible(); } if (o->oKingBobombUnk100 == 0) { - if (obj_check_anim_frame(15)) - ShakeScreen(SHAKE_POS_SMALL); - if (func_802A4AB0(4)) + if (cur_obj_check_anim_frame(15)) + cur_obj_shake_screen(SHAKE_POS_SMALL); + if (cur_obj_init_animation_and_check_if_near_end(4)) o->oKingBobombUnk100++; } else { if (o->oKingBobombUnk100 == 1) { - func_802A4A70(11, 7); + cur_obj_init_animation_and_anim_frame(11, 7); o->oKingBobombUnk100 = 2; } else - set_obj_animation_and_sound_state(11); + cur_obj_init_animation_with_sound(11); if (o->oKingBobombUnk108 == 0) { o->oForwardVel = 3.0f; - obj_rotate_yaw_toward(o->oAngleToMario, 0x100); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x100); } else { o->oForwardVel = 0.0f; o->oKingBobombUnk108--; } } - if (obj_check_grabbed_mario()) + if (cur_obj_check_grabbed_mario()) o->oAction = 3; - if (func_802A6AF8(1200.0f)) { + if (mario_is_far_below_object(1200.0f)) { o->oAction = 0; stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS)); } } -void ActionKingBobomb3(void) { +void king_bobomb_act_3(void) { if (o->oSubAction == 0) { o->oForwardVel = 0; o->oKingBobombUnk104 = 0; o->oKingBobombUnkFC = 0; if (o->oTimer == 0) - PlaySound2(SOUND_OBJ_UNKNOWN3); - if (func_802A4AB0(0)) { + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN3); + if (cur_obj_init_animation_and_check_if_near_end(0)) { o->oSubAction++; - func_802A4A70(1, 0); + cur_obj_init_animation_and_anim_frame(1, 0); } } else { if (o->oSubAction == 1) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); o->oKingBobombUnkFC += player_performed_grab_escape_action(); print_debug_bottom_up("%d", o->oKingBobombUnkFC); if (o->oKingBobombUnkFC > 10) { @@ -88,18 +104,18 @@ void ActionKingBobomb3(void) { o->oInteractStatus &= ~(INT_STATUS_GRABBED_MARIO); } else { o->oForwardVel = 3.0f; - if (o->oKingBobombUnk104 > 20 && obj_rotate_yaw_toward(0, 0x400)) { + if (o->oKingBobombUnk104 > 20 && cur_obj_rotate_yaw_toward(0, 0x400)) { o->oSubAction++; - func_802A4A70(9, 22); + cur_obj_init_animation_and_anim_frame(9, 22); } } o->oKingBobombUnk104++; } else { - set_obj_animation_and_sound_state(9); - if (obj_check_anim_frame(31)) { + cur_obj_init_animation_with_sound(9); + if (cur_obj_check_anim_frame(31)) { o->oKingBobombUnk88 = 2; - PlaySound2(SOUND_OBJ_UNKNOWN4); - } else if (func_8029F788()) { + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN4); + } else if (cur_obj_check_if_near_animation_end()) { o->oAction = 1; o->oInteractStatus &= ~(INT_STATUS_GRABBED_MARIO); } @@ -107,31 +123,31 @@ void ActionKingBobomb3(void) { } } -void ActionKingBobomb1(void) { +void king_bobomb_act_1(void) { o->oForwardVel = 0; o->oVelY = 0; - set_obj_animation_and_sound_state(11); + cur_obj_init_animation_with_sound(11); o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 512); if (o->oDistanceToMario < 2500.0f) o->oAction = 2; - if (func_802A6AF8(1200.0f)) { + if (mario_is_far_below_object(1200.0f)) { o->oAction = 0; stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS)); } } -void ActionKingBobomb6(void) { +void king_bobomb_act_6(void) { if (o->oSubAction == 0) { if (o->oTimer == 0) { o->oKingBobombUnk104 = 0; - PlaySound2(SOUND_OBJ_KING_BOBOMB); - PlaySound2(SOUND_OBJ2_KING_BOBOMB_DAMAGE); - ShakeScreen(SHAKE_POS_SMALL); - func_802AA618(0, 0, 100.0f); + cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB); + cur_obj_play_sound_2(SOUND_OBJ2_KING_BOBOMB_DAMAGE); + cur_obj_shake_screen(SHAKE_POS_SMALL); + spawn_mist_particles_variable(0, 0, 100.0f); o->oInteractType = 8; - obj_become_tangible(); + cur_obj_become_tangible(); } - if (func_802A4AB0(2)) + if (cur_obj_init_animation_and_check_if_near_end(2)) o->oKingBobombUnk104++; if (o->oKingBobombUnk104 > 3) { o->oSubAction++; @@ -139,50 +155,50 @@ void ActionKingBobomb6(void) { } } else { if (o->oSubAction == 1) { - if (func_802A4AB0(10)) { + if (cur_obj_init_animation_and_check_if_near_end(10)) { o->oSubAction++; o->oInteractType = 2; - obj_become_intangible(); + cur_obj_become_intangible(); } } else { - set_obj_animation_and_sound_state(11); - if (obj_rotate_yaw_toward(o->oAngleToMario, 0x800) == 1) + cur_obj_init_animation_with_sound(11); + if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x800) == 1) o->oAction = 2; } } } -void ActionKingBobomb7(void) { - set_obj_animation_and_sound_state(2); - if (obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG, DIALOG_116)) { +void king_bobomb_act_7(void) { + cur_obj_init_animation_with_sound(2); + if (cur_obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG, DIALOG_116)) { create_sound_spawner(SOUND_OBJ_KING_WHOMP_DEATH); - obj_hide(); - obj_become_intangible(); - func_802AA618(0, 0, 200.0f); + cur_obj_hide(); + cur_obj_become_intangible(); + spawn_mist_particles_variable(0, 0, 200.0f); spawn_triangle_break_particles(20, 138, 3.0f, 4); - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_shake_screen(SHAKE_POS_SMALL); #ifndef VERSION_JP - obj_spawn_star_at_y_offset(2000.0f, 4500.0f, -4500.0f, 200.0f); + cur_obj_spawn_star_at_y_offset(2000.0f, 4500.0f, -4500.0f, 200.0f); #else o->oPosY += 100.0f; - create_star(2000.0f, 4500.0f, -4500.0f); + spawn_default_star(2000.0f, 4500.0f, -4500.0f); #endif o->oAction = 8; } } -void ActionKingBobomb8(void) { +void king_bobomb_act_8(void) { if (o->oTimer == 60) stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS)); } -void ActionKingBobomb4() { // bobomb been thrown +void king_bobomb_act_4() { // bobomb been thrown if (o->oPosY - o->oHomeY > -100.0f) { // not thrown off hill if (o->oMoveFlags & 1) { o->oHealth--; o->oForwardVel = 0; o->oVelY = 0; - PlaySound2(SOUND_OBJ_KING_BOBOMB); + cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB); if (o->oHealth) o->oAction = 6; else @@ -195,66 +211,66 @@ void ActionKingBobomb4() { // bobomb been thrown o->oVelY = 0; o->oSubAction++; } else if (o->oMoveFlags & 1) - PlaySound2(SOUND_OBJ_KING_BOBOMB); + cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB); } else { - if (func_802A4AB0(10)) + if (cur_obj_init_animation_and_check_if_near_end(10)) o->oAction = 5; // Go back to top of hill o->oSubAction++; } } } -void ActionKingBobomb5() { // bobomb returns home +void king_bobomb_act_5() { // bobomb returns home switch (o->oSubAction) { case 0: if (o->oTimer == 0) - PlaySound2(SOUND_OBJ_KING_BOBOMB_JUMP); + cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB_JUMP); o->oKingBobombUnkF8 = 1; - func_802A4AEC(8); - o->oMoveAngleYaw = obj_angle_to_home(); + cur_obj_init_animation_and_extend_if_at_end(8); + o->oMoveAngleYaw = cur_obj_angle_to_home(); if (o->oPosY < o->oHomeY) o->oVelY = 100.0f; else { - func_802B2894(&o->oHomeX, &o->oPosX, 100.0f, -4.0f); + arc_to_goal_pos(&o->oHomeX, &o->oPosX, 100.0f, -4.0f); o->oSubAction++; } break; case 1: - func_802A4AEC(8); + cur_obj_init_animation_and_extend_if_at_end(8); if (o->oVelY < 0 && o->oPosY < o->oHomeY) { o->oPosY = o->oHomeY; o->oVelY = 0; o->oForwardVel = 0; o->oGravity = -4.0f; o->oKingBobombUnkF8 = 0; - set_obj_animation_and_sound_state(7); - PlaySound2(SOUND_OBJ_KING_BOBOMB); - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_init_animation_with_sound(7); + cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB); + cur_obj_shake_screen(SHAKE_POS_SMALL); o->oSubAction++; } break; case 2: - if (func_802A4AB0(7)) + if (cur_obj_init_animation_and_check_if_near_end(7)) o->oSubAction++; break; case 3: - if (func_802A6AF8(1200.0f)) { + if (mario_is_far_below_object(1200.0f)) { o->oAction = 0; stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS)); } - if (obj_is_mario_in_range_and_ready_to_speak(500.0f, 100.0f)) + if (cur_obj_can_mario_activate_textbox_2(500.0f, 100.0f)) o->oSubAction++; break; case 4: - if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_128)) + if (cur_obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_128)) o->oAction = 2; break; } } void (*sKingBobombActions[])(void) = { - ActionKingBobomb0, ActionKingBobomb1, ActionKingBobomb2, ActionKingBobomb3, ActionKingBobomb4, - ActionKingBobomb5, ActionKingBobomb6, ActionKingBobomb7, ActionKingBobomb8, + king_bobomb_act_0, king_bobomb_act_1, king_bobomb_act_2, king_bobomb_act_3, king_bobomb_act_4, + king_bobomb_act_5, king_bobomb_act_6, king_bobomb_act_7, king_bobomb_act_8, }; struct SoundState sKingBobombSoundStates[] = { { 0, 0, 0, NO_SOUND }, @@ -271,18 +287,18 @@ struct SoundState sKingBobombSoundStates[] = { { 1, 1, 15, SOUND_OBJ_POUNDING1_HIGHPRIO }, }; -void func_802A7748(void) { - obj_update_floor_and_walls(); +void king_bobomb_move(void) { + cur_obj_update_floor_and_walls(); if (o->oKingBobombUnkF8 == 0) - obj_move_standard(-78); + cur_obj_move_standard(-78); else - obj_move_using_fvel_and_gravity(); - obj_call_action_function(sKingBobombActions); + cur_obj_move_using_fvel_and_gravity(); + cur_obj_call_action_function(sKingBobombActions); exec_anim_sound_state(sKingBobombSoundStates); if (o->oDistanceToMario < 5000.0f) - obj_enable_rendering(); + cur_obj_enable_rendering(); else - obj_disable_rendering(); + cur_obj_disable_rendering(); } void bhv_king_bobomb_loop(void) { @@ -292,15 +308,15 @@ void bhv_king_bobomb_loop(void) { o->oInteractionSubtype |= INT_SUBTYPE_GRABS_MARIO; switch (o->oHeldState) { case HELD_FREE: - func_802A7748(); + king_bobomb_move(); break; case HELD_HELD: - func_8029FA5C(6, 1); + cur_obj_unrender_and_reset_state(6, 1); break; case HELD_THROWN: case HELD_DROPPED: - obj_get_thrown_or_placed(sp34, sp30, 4); - obj_become_intangible(); + cur_obj_get_thrown_or_placed(sp34, sp30, 4); + cur_obj_become_intangible(); o->oPosY += 20.0f; break; } diff --git a/src/game/behaviors/klepto.inc.c b/src/game/behaviors/klepto.inc.c index 94dfdabf..39b105f4 100644 --- a/src/game/behaviors/klepto.inc.c +++ b/src/game/behaviors/klepto.inc.c @@ -30,12 +30,12 @@ static s32 func_8030F158(void) { func_802F932C(5); } else if (o->oSoundStateID == 5) { if (func_802F932C(0)) { - PlaySound2(SOUND_GENERAL_SWISH_WATER); + cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER); o->header.gfx.unk38.animFrame = 9; } } else { - if (obj_check_anim_frame(9)) { - PlaySound2(SOUND_GENERAL_SWISH_WATER); + if (cur_obj_check_anim_frame(9)) { + cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER); } return TRUE; } @@ -49,9 +49,9 @@ static void func_8030F218(void) { o->oKleptoUnk1AE = 0; } else { if (o->oSoundStateID == 0) { - if (obj_check_anim_frame(9)) { - PlaySound2(SOUND_GENERAL_SWISH_WATER); - set_obj_animation_and_sound_state(6); + if (cur_obj_check_anim_frame(9)) { + cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER); + cur_obj_init_animation_with_sound(6); } } else if (--o->oKleptoUnk1AE == 0) { o->oKleptoUnk1AE = -random_linear_offset(60, 60); @@ -121,7 +121,7 @@ static void klepto_change_target(void) { o->oHomeY = sKleptoTargetPositions[o->oKleptoTargetNumber][1] + o->oKleptoUnkF8; o->oHomeZ = sKleptoTargetPositions[o->oKleptoTargetNumber][2]; - o->oKleptoUnkFC = obj_lateral_dist_to_home() / 2; + o->oKleptoUnkFC = cur_obj_lateral_dist_to_home() / 2; } static void klepto_circle_target(f32 radius, f32 targetSpeed) { @@ -190,14 +190,14 @@ static void klepto_act_wait_for_mario(void) { static void klepto_act_turn_toward_mario(void) { klepto_target_mario(); - if (func_8030F158() && func_8029F828() && o->oKleptoDistanceToTarget > 800.0f + if (func_8030F158() && cur_obj_check_if_at_animation_end() && o->oKleptoDistanceToTarget > 800.0f && abs_angle_diff(o->oAngleToMario, o->oFaceAngleYaw) < 0x800 && o->oKleptoUnk1B0 < 0x400) { - PlaySound2(SOUND_OBJ_KLEPTO1); + cur_obj_play_sound_2(SOUND_OBJ_KLEPTO1); o->oAction = KLEPTO_ACT_DIVE_AT_MARIO; o->oMoveAngleYaw = o->oFaceAngleYaw; o->oFlags |= 0x00000008; - set_obj_animation_and_sound_state(3); + cur_obj_init_animation_with_sound(3); } klepto_circle_target(1000.0f, 40.0f); @@ -207,8 +207,8 @@ static void klepto_act_turn_toward_mario(void) { static void klepto_act_dive_at_mario(void) { approach_f32_ptr(&o->oKleptoSpeed, 60.0f, 10.0f); if (o->oSoundStateID == 2) { - if (obj_check_anim_frame(11)) { - PlaySound2(SOUND_GENERAL_SWISH_WATER); + if (cur_obj_check_anim_frame(11)) { + cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER); } if (func_802F932C(0)) { @@ -224,7 +224,7 @@ static void klepto_act_dive_at_mario(void) { if (o->oSoundStateID == 3) { func_802F932C(4); } else if (o->oVelY > 0.0f && dy > 200.0f) { - set_obj_animation_and_sound_state(2); + cur_obj_init_animation_with_sound(2); } o->oKleptoUnk1B0 = -0x3000; @@ -254,13 +254,13 @@ static void klepto_act_dive_at_mario(void) { } static void klepto_act_struck_by_mario(void) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); obj_face_pitch_approach(0, 800); obj_face_yaw_approach(o->oMoveAngleYaw + 0x8000, 800); obj_face_roll_approach(0, 800); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oAction = KLEPTO_ACT_RETREAT; o->oGravity = 0.0f; @@ -274,7 +274,7 @@ static void klepto_act_struck_by_mario(void) { } static void klepto_act_retreat(void) { - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); approach_f32_ptr(&o->oKleptoSpeed, 40.0f, 10.0f); obj_move_pitch_approach(o->oKleptoUnk1B0, 1000); @@ -288,7 +288,7 @@ static void klepto_act_retreat(void) { o->oHomeY = 1500.0f; o->oKleptoUnk1AE = -100; o->oFlags |= 0x00000008; - obj_become_tangible(); + cur_obj_become_tangible(); } } } @@ -302,7 +302,7 @@ static void klepto_act_reset_position(void) { o->oHomeY = o->oKleptoDistanceToTarget = 9999.0f; if (o->oPosY > 5000.0f) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { klepto_approach_target(20.0f); } @@ -321,11 +321,11 @@ void obj_set_speed_to_zero(void) { void bhv_klepto_update(void) { UNUSED s32 unused; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); - o->oKleptoDistanceToTarget = obj_lateral_dist_to_home(); + o->oKleptoDistanceToTarget = cur_obj_lateral_dist_to_home(); o->oKleptoUnk1B0 = obj_get_pitch_to_home(o->oKleptoDistanceToTarget); - o->oKleptoYawToTarget = obj_angle_to_home(); + o->oKleptoYawToTarget = cur_obj_angle_to_home(); if (o->oAction == KLEPTO_ACT_STRUCK_BY_MARIO) { klepto_act_struck_by_mario(); @@ -357,13 +357,13 @@ void bhv_klepto_update(void) { } if (obj_handle_attacks(&sKleptoHitbox, o->oAction, sKleptoAttackHandlers)) { - PlaySound2(SOUND_OBJ_KLEPTO2); + cur_obj_play_sound_2(SOUND_OBJ_KLEPTO2); if (o->oAnimState == KLEPTO_ANIM_STATE_HOLDING_CAP) { save_file_clear_flags(SAVE_FLAG_CAP_ON_KLEPTO); spawn_object(o, MODEL_MARIOS_CAP, bhvNormalCap); } else if (o->oAnimState == KLEPTO_ANIM_STATE_HOLDING_STAR) { - create_star(-5550.0f, 300.0f, -930.0f); + spawn_default_star(-5550.0f, 300.0f, -930.0f); } o->oAnimState = KLEPTO_ANIM_STATE_HOLDING_NOTHING; @@ -372,16 +372,16 @@ void bhv_klepto_update(void) { o->oMoveAngleYaw = o->oAngleToMario + 0x8000; o->oFlags &= ~0x00000008; - obj_become_intangible(); + cur_obj_become_intangible(); } else if (gMarioStates[0].action == ACT_SLEEPING || (gMarioStates[0].action & (ACT_FLAG_SHORT_HITBOX | ACT_FLAG_BUTT_OR_STOMACH_SLIDE))) { - obj_become_intangible(); + cur_obj_become_intangible(); } else { - obj_become_tangible(); + cur_obj_become_tangible(); } } obj_roll_to_match_yaw_turn(o->oKleptoYawToTarget, 0x3000, 600); - obj_move_standard(78); + cur_obj_move_standard(78); } diff --git a/src/game/behaviors/koopa.inc.c b/src/game/behaviors/koopa.inc.c index 30a92f0d..2786ac35 100644 --- a/src/game/behaviors/koopa.inc.c +++ b/src/game/behaviors/koopa.inc.c @@ -74,13 +74,13 @@ void bhv_koopa_init(void) { o->oKoopaMovementType = KOOPA_BP_NORMAL; o->oKoopaAgility = 1.6f / 3.0f; o->oDrawingDistance = 1500.0f; - obj_scale(0.8f); + cur_obj_scale(0.8f); o->oGravity = -6.4f / 3.0f; } else if (o->oKoopaMovementType >= KOOPA_BP_KOOPA_THE_QUICK_BASE) { // Koopa the Quick. Race index is 0 for BoB and 1 for THI o->oKoopaTheQuickRaceIndex = o->oKoopaMovementType - KOOPA_BP_KOOPA_THE_QUICK_BASE; o->oKoopaAgility = 4.0f; - obj_scale(3.0f); + cur_obj_scale(3.0f); } else { o->oKoopaAgility = 1.0f; } @@ -142,12 +142,12 @@ static void koopa_walk_start(void) { * Walk until oKoopaCountdown hits zero, then increment sub-action. */ static void koopa_walk(void) { - set_obj_animation_and_sound_state(9); + cur_obj_init_animation_with_sound(9); koopa_play_footstep_sound(2, 17); if (o->oKoopaCountdown != 0) { o->oKoopaCountdown -= 1; - } else if (func_8029F788()) { + } else if (cur_obj_check_if_near_animation_end()) { o->oSubAction += 1; } } @@ -176,7 +176,7 @@ static void koopa_shelled_act_walk(void) { } o->oKoopaTurningAwayFromWall = obj_bounce_off_walls_edges_objects(&o->oKoopaTargetYaw); - obj_rotate_yaw_toward(o->oKoopaTargetYaw, 0x200); + cur_obj_rotate_yaw_toward(o->oKoopaTargetYaw, 0x200); } switch (o->oSubAction) { @@ -199,7 +199,7 @@ static void koopa_shelled_act_walk(void) { * away. */ static void koopa_shelled_act_run_from_mario(void) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); koopa_play_footstep_sound(0, 11); // If far from home, run toward it @@ -213,7 +213,7 @@ static void koopa_shelled_act_run_from_mario(void) { o->oAction = KOOPA_SHELLED_ACT_STOPPED; } } else { - obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x400); + cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x400); obj_forward_vel_approach(17.0f, 1.0f); } } @@ -238,14 +238,14 @@ static void koopa_dive_update_speed(f32 decel) { static void koopa_shelled_act_lying(void) { if (o->oForwardVel != 0.0f) { if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { - o->oMoveAngleYaw = obj_reflect_move_angle_off_wall(); + o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); } func_802F927C(5); koopa_dive_update_speed(0.3f); } else if (o->oKoopaCountdown != 0) { o->oKoopaCountdown -= 1; - func_8029F728(); + cur_obj_extend_animation_if_at_end(); } else if (func_802F92B0(6)) { o->oAction = KOOPA_SHELLED_ACT_STOPPED; } @@ -257,7 +257,7 @@ static void koopa_shelled_act_lying(void) { */ void shelled_koopa_attack_handler(s32 attackType) { if (o->header.gfx.scale[0] > 0.8f) { - PlaySound2(SOUND_OBJ_KOOPA_DAMAGE); + cur_obj_play_sound_2(SOUND_OBJ_KOOPA_DAMAGE); o->oKoopaMovementType = KOOPA_BP_UNSHELLED; o->oAction = KOOPA_UNSHELLED_ACT_LYING; @@ -265,16 +265,16 @@ void shelled_koopa_attack_handler(s32 attackType) { // If attacked from the side, get knocked away from mario if (attackType != ATTACK_FROM_ABOVE && attackType != ATTACK_GROUND_POUND_OR_TWIRL) { - o->oMoveAngleYaw = angle_to_object(gMarioObject, o); + o->oMoveAngleYaw = obj_angle_to_object(gMarioObject, o); } - obj_set_model(MODEL_KOOPA_WITHOUT_SHELL); + cur_obj_set_model(MODEL_KOOPA_WITHOUT_SHELL); spawn_object(o, MODEL_KOOPA_SHELL, bhvKoopaShell); //! Because bob-ombs/corkboxes come after koopa in processing order, // they can interact with the koopa on the same frame that this // happens. This causes the koopa to die immediately. - obj_become_intangible(); + cur_obj_become_intangible(); } else { // Die if tiny koopa obj_die_if_health_non_positive(); @@ -285,7 +285,7 @@ void shelled_koopa_attack_handler(s32 attackType) { * Update function for both regular and tiny shelled koopa. */ static void koopa_shelled_update(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); obj_update_blinking(&o->oKoopaBlinkTimer, 20, 50, 4); switch (o->oAction) { @@ -317,7 +317,7 @@ static void koopa_shelled_update(void) { } } - obj_move_standard(-78); + cur_obj_move_standard(-78); } /** @@ -330,7 +330,7 @@ static void koopa_unshelled_act_run(void) { f32 distToShell = 99999.0f; struct Object *shell; - set_obj_animation_and_sound_state(3); + cur_obj_init_animation_with_sound(3); koopa_play_footstep_sound(0, 6); if (o->oKoopaTurningAwayFromWall) { @@ -342,10 +342,10 @@ static void koopa_unshelled_act_run(void) { } // If shell exists, then turn toward shell - shell = obj_find_nearest_object_with_behavior(bhvKoopaShell, &distToShell); + shell = cur_obj_find_nearest_object_with_behavior(bhvKoopaShell, &distToShell); if (shell != NULL) { //! This overrides turning toward home - o->oKoopaTargetYaw = angle_to_object(o, shell); + o->oKoopaTargetYaw = obj_angle_to_object(o, shell); } else if (!(o->oKoopaTurningAwayFromWall = obj_bounce_off_walls_edges_objects(&o->oKoopaTargetYaw))) { // Otherwise run around randomly @@ -362,10 +362,10 @@ static void koopa_unshelled_act_run(void) { || (shell != NULL && abs_angle_diff(o->oKoopaTargetYaw, o->oAngleToMario + 0x8000) < 0x2000)) { // then turn toward the shell - obj_rotate_yaw_toward(o->oKoopaTargetYaw, 0x600); + cur_obj_rotate_yaw_toward(o->oKoopaTargetYaw, 0x600); } else { // otherwise continue running from mario - obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x600); + cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x600); } } @@ -389,11 +389,11 @@ static void koopa_unshelled_act_dive(void) { f32 distToShell; if (o->oTimer > 10) { - obj_become_tangible(); + cur_obj_become_tangible(); } if (o->oTimer > 10) { - shell = obj_find_nearest_object_with_behavior(bhvKoopaShell, &distToShell); + shell = cur_obj_find_nearest_object_with_behavior(bhvKoopaShell, &distToShell); // If we got the shell and mario didn't, put on the shell //! The shell comes after koopa in processing order, and the shell is @@ -409,8 +409,8 @@ static void koopa_unshelled_act_dive(void) { o->oAction = KOOPA_SHELLED_ACT_LYING; o->oForwardVel *= 0.5f; - obj_set_model(MODEL_KOOPA_WITH_SHELL); - mark_object_for_deletion(shell); + cur_obj_set_model(MODEL_KOOPA_WITH_SHELL); + obj_mark_for_deletion(shell); goto end; } } @@ -425,7 +425,7 @@ static void koopa_unshelled_act_dive(void) { koopa_dive_update_speed(0.5f); } else if (o->oKoopaCountdown != 0) { o->oKoopaCountdown -= 1; - func_8029F728(); + cur_obj_extend_animation_if_at_end(); } else if (func_802F92B0(6)) { o->oAction = KOOPA_UNSHELLED_ACT_RUN; } @@ -444,7 +444,7 @@ static void koopa_unshelled_act_unused3(void) { * Update function for koopa after losing his shell. */ static void koopa_unshelled_update(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); obj_update_blinking(&o->oKoopaBlinkTimer, 10, 15, 3); switch (o->oAction) { @@ -461,7 +461,7 @@ static void koopa_unshelled_update(void) { } obj_handle_attacks(&sKoopaHitbox, o->oAction, sKoopaUnshelledAttackHandlers); - obj_move_standard(-78); + cur_obj_move_standard(-78); } /** @@ -470,7 +470,7 @@ static void koopa_unshelled_update(void) { */ s32 obj_begin_race(s32 noTimer) { if (o->oTimer == 50) { - PlaySound2(SOUND_GENERAL_RACE_GUN_SHOT); + cur_obj_play_sound_2(SOUND_GENERAL_RACE_GUN_SHOT); if (!noTimer) { play_music(0, SEQUENCE_ARGS(4, SEQ_LEVEL_SLIDE), 0); @@ -499,14 +499,14 @@ static void koopa_the_quick_act_wait_before_race(void) { if (o->oKoopaTheQuickInitTextboxCooldown != 0) { o->oKoopaTheQuickInitTextboxCooldown -= 1; - } else if (obj_is_mario_in_range_and_ready_to_speak(400.0f, 400.0f)) { + } else if (cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) { //! The next action doesn't execute until next frame, giving mario one // frame where he can jump, and thus no longer be ready to speak. // (On J, he has two frames and doing this enables time stop - see - // obj_update_dialog_with_cutscene for that glitch) + // cur_obj_update_dialog_with_cutscene for that glitch) o->oAction = KOOPA_THE_QUICK_ACT_SHOW_INIT_TEXT; o->oForwardVel = 0.0f; - set_obj_animation_and_sound_state(7); + cur_obj_init_animation_with_sound(7); } } @@ -524,7 +524,7 @@ static void koopa_the_quick_act_show_init_text(void) { o->oAction = KOOPA_THE_QUICK_ACT_RACE; o->oForwardVel = 0.0f; - o->parentObj = obj_nearest_object_with_behavior(bhvKoopaRaceEndpoint); + o->parentObj = cur_obj_nearest_object_with_behavior(bhvKoopaRaceEndpoint); o->oPathedStartWaypoint = o->oPathedPrevWaypoint = segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path); @@ -547,7 +547,7 @@ static s32 koopa_the_quick_detect_bowling_ball(void) { s16 angleToBall; f32 ballSpeedInKoopaRunDir; - ball = obj_find_nearest_object_with_behavior(bhvBowlingBall, &distToBall); + ball = cur_obj_find_nearest_object_with_behavior(bhvBowlingBall, &distToBall); if (ball != NULL) { angleToBall = obj_turn_toward_object(o, ball, O_MOVE_ANGLE_YAW_INDEX, 0); ballSpeedInKoopaRunDir = ball->oForwardVel * coss(ball->oMoveAngleYaw - o->oMoveAngleYaw); @@ -584,7 +584,7 @@ static s32 koopa_the_quick_detect_bowling_ball(void) { static void koopa_the_quick_animate_footsteps(void) { //! With high negative speed (using the bowling ball deceleration), we can // index out of the animation's bounds - func_8029ED98(9, o->oForwardVel * 0.09f); + cur_obj_init_animation_with_accel_and_sound(9, o->oForwardVel * 0.09f); koopa_play_footstep_sound(2, 17); } @@ -598,13 +598,13 @@ static void koopa_the_quick_act_race(void) { if (obj_begin_race(FALSE)) { // Hitbox is slightly larger while racing - obj_push_mario_away_from_cylinder(180.0f, 300.0f); + cur_obj_push_mario_away_from_cylinder(180.0f, 300.0f); - if (obj_follow_path(0) == PATH_REACHED_END) { + if (cur_obj_follow_path(0) == PATH_REACHED_END) { o->oAction = KOOPA_THE_QUICK_ACT_DECELERATE; } else { downhillSteepness = 1.0f + sins((s16)(f32) o->oPathedTargetPitch); - obj_rotate_yaw_toward(o->oPathedTargetYaw, (s32)(o->oKoopaAgility * 150.0f)); + cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, (s32)(o->oKoopaAgility * 150.0f)); switch (o->oSubAction) { case KOOPA_THE_QUICK_SUB_ACT_START_RUN: @@ -654,7 +654,7 @@ static void koopa_the_quick_act_race(void) { o->oSubAction = 2; o->oMoveFlags = 0; - set_obj_animation_and_sound_state(12); + cur_obj_init_animation_with_sound(12); } break; @@ -678,9 +678,9 @@ static void koopa_the_quick_act_race(void) { */ static void koopa_the_quick_act_decelerate(void) { obj_forward_vel_approach(3.0f, 1.0f); - func_8029ED98(9, 0.99f); + cur_obj_init_animation_with_accel_and_sound(9, 0.99f); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oAction = KOOPA_THE_QUICK_ACT_STOP; o->oForwardVel = 3.0f; } @@ -705,10 +705,10 @@ static void koopa_the_quick_act_stop(void) { * the star. */ static void koopa_the_quick_act_after_race(void) { - set_obj_animation_and_sound_state(7); + cur_obj_init_animation_with_sound(7); if (o->parentObj->oKoopaRaceEndpointUnk100 == 0) { - if (obj_is_mario_in_range_and_ready_to_speak(400.0f, 400.0f)) { + if (cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) { stop_background_music(SEQUENCE_ARGS(4, SEQ_LEVEL_SLIDE)); // Determine which text to display @@ -731,13 +731,13 @@ static void koopa_the_quick_act_after_race(void) { o->oFlags &= ~OBJ_FLAG_ACTIVE_FROM_AFAR; } } else if (o->parentObj->oKoopaRaceEndpointUnk100 > 0) { - s32 dialogResponse = obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, o->parentObj->oKoopaRaceEndpointUnk100); + s32 dialogResponse = cur_obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, o->parentObj->oKoopaRaceEndpointUnk100); if (dialogResponse != 0) { o->parentObj->oKoopaRaceEndpointUnk100 = -1; o->oTimer = 0; } } else if (o->parentObj->oKoopaRaceEndpointRaceStatus != 0) { - create_star(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].starPos[0], + spawn_default_star(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].starPos[0], sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].starPos[1], sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].starPos[2]); @@ -749,7 +749,7 @@ static void koopa_the_quick_act_after_race(void) { * Update function for koopa the quick. */ static void koopa_the_quick_update(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); obj_update_blinking(&o->oKoopaBlinkTimer, 10, 15, 3); switch (o->oAction) { @@ -780,8 +780,8 @@ static void koopa_the_quick_update(void) { } } - obj_push_mario_away_from_cylinder(140.0f, 300.0f); - obj_move_standard(-78); + cur_obj_push_mario_away_from_cylinder(140.0f, 300.0f); + cur_obj_move_standard(-78); } /** diff --git a/src/game/behaviors/koopa_shell.inc.c b/src/game/behaviors/koopa_shell.inc.c index 2830a5f8..62526dbc 100644 --- a/src/game/behaviors/koopa_shell.inc.c +++ b/src/game/behaviors/koopa_shell.inc.c @@ -12,14 +12,14 @@ struct ObjectHitbox sKoopaShellHitbox = { /* hurtboxHeight: */ 50, }; -void func_802BCA8C(void) { +void koopa_shell_spawn_water_drop(void) { UNUSED s32 unused; struct Object *drop; - spawn_object(o, MODEL_WATER_WAVES, bhvWaterType); + spawn_object(o, MODEL_WAVE_TRAIL, bhvObjectWaveTrail); if (gMarioStates->forwardVel > 10.0f) { - drop = spawn_object_with_scale(o, MODEL_WHITE_PARTICLE_SMALL, bhvWaterDrops, 1.5f); + drop = spawn_object_with_scale(o, MODEL_WHITE_PARTICLE_SMALL, bhvWaterDroplet, 1.5f); drop->oVelY = RandomFloat() * 30.0f; - translate_object_xz_random(drop, 110.0f); + obj_translate_xz_random(drop, 110.0f); } } @@ -29,15 +29,15 @@ void bhv_koopa_shell_flame_loop(void) { o->oVelY = RandomFloat() * 30.0f; o->oGravity = -4.0f; o->oAnimState = RandomFloat() * 10.0f; - translate_object_xz_random(o, 110.0f); + obj_translate_xz_random(o, 110.0f); o->oKoopaShellFlameUnkF8 = 4.0f; } - obj_update_floor_height(); - obj_move_using_fvel_and_gravity(); + cur_obj_update_floor_height(); + cur_obj_move_using_fvel_and_gravity(); if (o->oFloorHeight > o->oPosY || o->oTimer > 10) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); o->oKoopaShellFlameUnkF8 += -0.3; - obj_scale(o->oKoopaShellFlameUnkF8); + cur_obj_scale(o->oKoopaShellFlameUnkF8); } void bhv_koopa_shell_flame_spawn(void) { @@ -46,41 +46,41 @@ void bhv_koopa_shell_flame_spawn(void) { spawn_object(o, MODEL_RED_FLAME, bhvKoopaShellFlame); } -void func_802BCCD4(f32 a) { +void koopa_shell_spawn_sparkles(f32 a) { struct Object *sp1C = spawn_object(o, MODEL_NONE, bhvSparkleSpawn); sp1C->oPosY += a; } void bhv_koopa_shell_loop(void) { struct Surface *sp34; - set_object_hitbox(o, &sKoopaShellHitbox); - obj_scale(1.0f); + obj_set_hitbox(o, &sKoopaShellHitbox); + cur_obj_scale(1.0f); switch (o->oAction) { case 0: - obj_update_floor_and_walls(); - obj_if_hit_wall_bounce_away(); + cur_obj_update_floor_and_walls(); + cur_obj_if_hit_wall_bounce_away(); if (o->oInteractStatus & INT_STATUS_INTERACTED) o->oAction++; o->oFaceAngleYaw += 0x1000; - obj_move_standard(-20); - func_802BCCD4(10.0f); + cur_obj_move_standard(-20); + koopa_shell_spawn_sparkles(10.0f); break; case 1: - copy_object_pos(o, gMarioObject); - sp34 = obj_update_floor_height_and_get_floor(); + obj_copy_pos(o, gMarioObject); + sp34 = cur_obj_update_floor_height_and_get_floor(); if (absf(find_water_level(o->oPosX, o->oPosZ) - o->oPosY) < 10.0f) - func_802BCA8C(); + koopa_shell_spawn_water_drop(); else if (5.0f > absf(o->oPosY - o->oFloorHeight)) { if (sp34 != NULL && sp34->type == 1) bhv_koopa_shell_flame_spawn(); else - func_802BCCD4(10.0f); + koopa_shell_spawn_sparkles(10.0f); } else - func_802BCCD4(10.0f); + koopa_shell_spawn_sparkles(10.0f); o->oFaceAngleYaw = gMarioObject->oMoveAngleYaw; if (o->oInteractStatus & INT_STATUS_STOP_RIDING) { - mark_object_for_deletion(o); - func_802A3004(); + obj_mark_for_deletion(o); + spawn_mist_particles(); o->oAction = 0; } break; diff --git a/src/game/behaviors/koopa_shell_underwater.inc.c b/src/game/behaviors/koopa_shell_underwater.inc.c index 3024823a..ff0eef70 100644 --- a/src/game/behaviors/koopa_shell_underwater.inc.c +++ b/src/game/behaviors/koopa_shell_underwater.inc.c @@ -12,27 +12,27 @@ struct ObjectHitbox sKoopaShellUnderwaterHitbox = { /* hurtboxHeight: */ 0, }; -void func_802AA0D4(void) { - set_object_hitbox(o, &sKoopaShellUnderwaterHitbox); +void set_koopa_shell_underwater_hitbox(void) { + obj_set_hitbox(o, &sKoopaShellUnderwaterHitbox); } void bhv_koopa_shell_underwater_loop(void) { switch (o->oHeldState) { case HELD_FREE: - func_802AA0D4(); + set_koopa_shell_underwater_hitbox(); break; case HELD_HELD: - func_8029FA5C(-1, 0); + cur_obj_unrender_and_reset_state(-1, 0); break; case HELD_THROWN: case HELD_DROPPED: - mark_object_for_deletion(o); - func_802A3004(); + obj_mark_for_deletion(o); + spawn_mist_particles(); break; } if (o->oInteractStatus & INT_STATUS_STOP_RIDING) { - mark_object_for_deletion(o); - func_802A3004(); + obj_mark_for_deletion(o); + spawn_mist_particles(); } o->oInteractStatus = 0; } diff --git a/src/game/behaviors/lll_floating_wood_piece.inc.c b/src/game/behaviors/lll_floating_wood_piece.inc.c index 9a8ff3c3..a484471c 100644 --- a/src/game/behaviors/lll_floating_wood_piece.inc.c +++ b/src/game/behaviors/lll_floating_wood_piece.inc.c @@ -6,7 +6,7 @@ void bhv_lll_wood_piece_loop(void) { o->oPosY += sins(o->oLllWoodPieceUnkF4) * 3.0f; o->oLllWoodPieceUnkF4 += 0x400; if (o->parentObj->oAction == 2) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_lll_floating_wood_bridge_loop(void) { diff --git a/src/game/behaviors/lll_hexagonal_ring.inc.c b/src/game/behaviors/lll_hexagonal_ring.inc.c index 53e60dd5..7c75f046 100644 --- a/src/game/behaviors/lll_hexagonal_ring.inc.c +++ b/src/game/behaviors/lll_hexagonal_ring.inc.c @@ -1,5 +1,19 @@ // lll_hexagonal_ring.c.inc +void hexagonal_ring_spawn_flames(void) { + struct Object *sp1C; + f32 size; + sp1C = spawn_object(o, MODEL_RED_FLAME, bhvVolcanoFlames); + sp1C->oPosY += 550.0f; + sp1C->oMoveAngleYaw = RandomU16() << 0x10 >> 0x10; + sp1C->oForwardVel = RandomFloat() * 40.0f + 20.0f; + sp1C->oVelY = RandomFloat() * 50.0f + 10.0f; + size = RandomFloat() * 6.0 + 3.0; + obj_scale_xyz(sp1C, size, size, size); + if (RandomFloat() < 0.1) + cur_obj_play_sound_2(SOUND_GENERAL_VOLCANO_EXPLOSION); +} + void bhv_lll_rotating_hexagonal_ring_loop(void) { UNUSED s32 unused; o->oCollisionDistance = 4000.0f; @@ -21,7 +35,7 @@ void bhv_lll_rotating_hexagonal_ring_loop(void) { if (o->oTimer > 128) o->oAction++; o->oAngleVelYaw = 0; - func_802BBFDC(); + hexagonal_ring_spawn_flames(); break; case 3: o->oAngleVelYaw = sins(o->oTimer << 7) * 256.0f; diff --git a/src/game/behaviors/lll_octagonal_rotating_mesh.inc.c b/src/game/behaviors/lll_octagonal_rotating_mesh.inc.c index 82e63f39..7fc4936f 100644 --- a/src/game/behaviors/lll_octagonal_rotating_mesh.inc.c +++ b/src/game/behaviors/lll_octagonal_rotating_mesh.inc.c @@ -7,12 +7,12 @@ s16 D_8032F894[] = { 4, 0, 0, 0, 1, 475, 900, 30, 1, 30, 0, -30, 2, s16 *D_8032F8C8[] = { D_8032F860, D_8032F894 }; -s32 func_802BB414(s16 *a0, s32 a1) { +s32 lll_octagonal_mesh_move(s16 *a0, s32 a1) { switch (a0[a1]) { case 4: o->oMoveAngleYaw = a0[a1 + 2]; o->oForwardVel = a0[a1 + 3] / 100.0f; - if (obj_is_mario_on_platform()) { + if (cur_obj_is_mario_on_platform()) { a1 += 4; o->oTimer = 0; } @@ -40,8 +40,8 @@ s32 func_802BB414(s16 *a0, s32 a1) { return a1; } -s32 func_802BB680(s32 *a0, f32 *a1, s32 a2, s32 a3) { - if (obj_is_mario_on_platform()) { +s32 lll_octagonal_mesh_find_y_offset(s32 *a0, f32 *a1, s32 a2, s32 a3) { + if (cur_obj_is_mario_on_platform()) { if (a0[0] < 0x4000) a0[0] += a2; else @@ -65,10 +65,10 @@ void bhv_lll_moving_octagonal_mesh_platform_loop(void) { o->oAction++; } else o->oHorizontalMovementUnkF8 = - func_802BB414(D_8032F8C8[o->oBehParams2ndByte], o->oHorizontalMovementUnkF8); + lll_octagonal_mesh_move(D_8032F8C8[o->oBehParams2ndByte], o->oHorizontalMovementUnkF8); print_debug_top_down_objectinfo("number %d\n", o->oHorizontalMovementUnkF8); - obj_move_using_fvel_and_gravity(); - if (func_802BB680(&o->oHorizontalMovementUnk104, &o->oHorizontalMovementUnk108, 0x400, -80)) { + cur_obj_move_using_fvel_and_gravity(); + if (lll_octagonal_mesh_find_y_offset(&o->oHorizontalMovementUnk104, &o->oHorizontalMovementUnk108, 0x400, -80)) { o->oHorizontalMovementUnkF4 += 0x800; o->oHorizontalMovementUnk100 -= sins(o->oHorizontalMovementUnkF4) * 2; } diff --git a/src/game/behaviors/lll_rotating_hex_flame.inc.c b/src/game/behaviors/lll_rotating_hex_flame.inc.c index 2cc1178f..efabfca8 100644 --- a/src/game/behaviors/lll_rotating_hex_flame.inc.c +++ b/src/game/behaviors/lll_rotating_hex_flame.inc.c @@ -4,13 +4,13 @@ void bhv_lll_rotating_hex_flame_loop(void) { f32 sp24 = o->oLllRotatingHexFlameUnkF4; f32 sp20 = o->oLllRotatingHexFlameUnkF8; f32 sp1C = o->oLllRotatingHexFlameUnkFC; - obj_set_pos_relative(o->parentObj, sp24, sp20, sp1C); + cur_obj_set_pos_relative(o->parentObj, sp24, sp20, sp1C); o->oPosY = o->parentObj->oPosY + 100.0f; if (o->parentObj->oAction == 3) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void func_802BB9F0(s16 a0) { +void fire_bar_spawn_flames(s16 a0) { struct Object *sp2C; UNUSED s32 unused; s32 i; @@ -23,41 +23,41 @@ void func_802BB9F0(s16 a0) { sp2C->oLllRotatingHexFlameUnkF4 += sp1C; sp2C->oLllRotatingHexFlameUnkF8 = o->oPosY - 200.0f; sp2C->oLllRotatingHexFlameUnkFC += sp18; - scale_object_xyz(sp2C, 6.0f, 6.0f, 6.0f); + obj_scale_xyz(sp2C, 6.0f, 6.0f, 6.0f); sp1C += sins(a0) * 150.0f; sp18 += coss(a0) * 150.0f; } } -void ActionRotatingCwFireBars0(void) { +void fire_bar_act_0(void) { if (o->oDistanceToMario < 3000.0f) o->oAction = 1; } -void ActionRotatingCwFireBars1(void) { - func_802BB9F0(0); - func_802BB9F0(-0x8000); +void fire_bar_act_1(void) { + fire_bar_spawn_flames(0); + fire_bar_spawn_flames(-0x8000); o->oAngleVelYaw = 0; o->oMoveAngleYaw = 0; o->oAction = 2; } -void ActionRotatingCwFireBars2(void) { +void fire_bar_act_2(void) { o->oAngleVelYaw = -0x100; o->oMoveAngleYaw += o->oAngleVelYaw; if (o->oDistanceToMario > 3200.0f) o->oAction = 3; } -void ActionRotatingCwFireBars3(void) { +void fire_bar_act_3(void) { o->oAction = 0; } -void (*sRotatingCwFireBarsActions[])(void) = { ActionRotatingCwFireBars0, ActionRotatingCwFireBars1, - ActionRotatingCwFireBars2, ActionRotatingCwFireBars3 }; +void (*sRotatingCwFireBarsActions[])(void) = { fire_bar_act_0, fire_bar_act_1, + fire_bar_act_2, fire_bar_act_3 }; void bhv_lll_rotating_block_fire_bars_loop(void) { - obj_call_action_function(sRotatingCwFireBarsActions); + cur_obj_call_action_function(sRotatingCwFireBarsActions); if (o->oBehParams2ndByte == 0) load_object_collision_model(); } diff --git a/src/game/behaviors/lll_sinking_rectangle.inc.c b/src/game/behaviors/lll_sinking_rectangle.inc.c index 3f304c5e..63910414 100644 --- a/src/game/behaviors/lll_sinking_rectangle.inc.c +++ b/src/game/behaviors/lll_sinking_rectangle.inc.c @@ -1,6 +1,6 @@ // lll_sinking_rectangle.c.inc -void func_802BC390(f32 a0, s32 a1) { +void sinking_rectangular_plat_actions(f32 a0, s32 a1) { switch (o->oAction) { case 0: o->oAction++; @@ -19,7 +19,7 @@ void bhv_lll_sinking_rectangular_platform_loop(void) { f32 sp1C = 0.4f; s32 sp18 = 0x100; if (o->oMoveAngleYaw != 0) - func_802BC390(sp1C, sp18); + sinking_rectangular_plat_actions(sp1C, sp18); else { o->oFaceAnglePitch = sins(o->oLllWoodPieceUnkF4) * 512.0f; o->oLllWoodPieceUnkF4 += 0x100; @@ -29,5 +29,5 @@ void bhv_lll_sinking_rectangular_platform_loop(void) { void bhv_lll_sinking_square_platforms_loop(void) { f32 sp1C = 0.5f; s32 sp18 = 0x100; - func_802BC390(sp1C, sp18); + sinking_rectangular_plat_actions(sp1C, sp18); } diff --git a/src/game/behaviors/lll_sinking_rock_block.inc.c b/src/game/behaviors/lll_sinking_rock_block.inc.c index 31c2b7b9..056d0aaa 100644 --- a/src/game/behaviors/lll_sinking_rock_block.inc.c +++ b/src/game/behaviors/lll_sinking_rock_block.inc.c @@ -1,7 +1,7 @@ // lll_sinking_rock_block.c.inc void bhv_lll_sinking_rock_block_loop(void) { - func_802BB680(&o->oSinkWhenSteppedOnUnk104, &o->oSinkWhenSteppedOnUnk108, 124, -110); + lll_octagonal_mesh_find_y_offset(&o->oSinkWhenSteppedOnUnk104, &o->oSinkWhenSteppedOnUnk108, 124, -110); o->oGraphYOffset = 0.0f; o->oPosY = o->oHomeY + o->oSinkWhenSteppedOnUnk108; } diff --git a/src/game/behaviors/lll_volcano_flames.inc.c b/src/game/behaviors/lll_volcano_flames.inc.c index 591a01f1..32207c84 100644 --- a/src/game/behaviors/lll_volcano_flames.inc.c +++ b/src/game/behaviors/lll_volcano_flames.inc.c @@ -1,25 +1,11 @@ // lll_volcano_flames.c.inc void bhv_volcano_flames_loop(void) { - obj_update_floor_height(); - obj_compute_vel_xz(); + cur_obj_update_floor_height(); + cur_obj_compute_vel_xz(); o->oPosX += o->oVelX; o->oPosZ += o->oVelZ; - obj_move_y(-4.0f, -0.7f, 2.0f); + cur_obj_move_y(-4.0f, -0.7f, 2.0f); if (o->oMoveFlags & 0x33) - mark_object_for_deletion(o); -} - -void func_802BBFDC(void) { - struct Object *sp1C; - f32 size; - sp1C = spawn_object(o, MODEL_RED_FLAME, bhvVolcanoFlames); - sp1C->oPosY += 550.0f; - sp1C->oMoveAngleYaw = RandomU16() << 0x10 >> 0x10; - sp1C->oForwardVel = RandomFloat() * 40.0f + 20.0f; - sp1C->oVelY = RandomFloat() * 50.0f + 10.0f; - size = RandomFloat() * 6.0 + 3.0; - scale_object_xyz(sp1C, size, size, size); - if (RandomFloat() < 0.1) - PlaySound2(SOUND_GENERAL_VOLCANO_EXPLOSION); + obj_mark_for_deletion(o); } diff --git a/src/game/behaviors/mad_piano.inc.c b/src/game/behaviors/mad_piano.inc.c index 84331705..18d20be2 100644 --- a/src/game/behaviors/mad_piano.inc.c +++ b/src/game/behaviors/mad_piano.inc.c @@ -12,35 +12,35 @@ static struct ObjectHitbox sMadPianoHitbox = { }; static void mad_piano_act_wait(void) { - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); if (o->oDistanceToMario < 500.0f) { if (o->oTimer > 20) { if (gMarioStates[0].forwardVel > 10.0f) { o->oAction = MAD_PIANO_ACT_ATTACK; - obj_become_tangible(); + cur_obj_become_tangible(); } } } else { o->oTimer = 0; } - obj_push_mario_away_from_cylinder(280.0f, 150.0f); + cur_obj_push_mario_away_from_cylinder(280.0f, 150.0f); } static void mad_piano_act_attack(void) { - obj_update_floor_and_walls(); - set_obj_animation_and_sound_state(1); + cur_obj_update_floor_and_walls(); + cur_obj_init_animation_with_sound(1); func_802F9378(0, 0, SOUND_OBJ_MAD_PIANO_CHOMPING); if (o->oDistanceToMario < 500.0f) { o->oTimer = 0; } - if (o->oTimer > 80 && func_8029F788()) { + if (o->oTimer > 80 && cur_obj_check_if_near_animation_end()) { o->oAction = MAD_PIANO_ACT_WAIT; o->oForwardVel = 0.0f; - obj_become_intangible(); + cur_obj_become_intangible(); } else { f32 dx = o->oPosX - o->oHomeX; f32 dz = o->oPosZ - o->oHomeZ; @@ -52,12 +52,12 @@ static void mad_piano_act_attack(void) { o->oPosZ = o->oHomeZ + dz * distToHome; } - obj_rotate_yaw_toward(o->oAngleToMario, 400); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 400); o->oForwardVel = 5.0f; } obj_check_attacks(&sMadPianoHitbox, o->oAction); - obj_move_standard(78); + cur_obj_move_standard(78); } void bhv_mad_piano_update(void) { diff --git a/src/game/behaviors/manta_ray.inc.c b/src/game/behaviors/manta_ray.inc.c index 3007bdf5..4ffc5bf1 100644 --- a/src/game/behaviors/manta_ray.inc.c +++ b/src/game/behaviors/manta_ray.inc.c @@ -22,17 +22,17 @@ void bhv_manta_ray_init(void) { struct Object *sp1C; sp1C = spawn_object(o, MODEL_NONE, bhvMantaRayRingManager); o->parentObj = sp1C; - set_object_hitbox(o, &sMantaRayHitbox); - obj_scale(2.5f); + obj_set_hitbox(o, &sMantaRayHitbox); + cur_obj_scale(2.5f); } -void func_802F5E20(void) { +void manta_ray_move(void) { s16 sp1E; s32 sp18; sp1E = o->header.gfx.unk38.animFrame; gCurrentObject->oPathedWaypointsS16 = &D_803316A8; - sp18 = obj_follow_path(sp18); + sp18 = cur_obj_follow_path(sp18); o->oMantaUnkF8 = o->oPathedTargetYaw; o->oMantaUnkF4 = o->oPathedTargetPitch; o->oForwardVel = 10.0f; @@ -48,12 +48,12 @@ void func_802F5E20(void) { o->oMoveAngleRoll = 0x4000 / 3; } - func_802A2A38(); + cur_obj_set_pos_via_transform(); if (sp1E == 0) - PlaySound2(SOUND_GENERAL_MOVING_WATER); + cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER); } -void func_802F5FD8(void) { +void manta_ray_act_spawn_ring(void) { struct Object *sp1C = o->parentObj; struct Object *sp18; @@ -78,17 +78,17 @@ void func_802F5FD8(void) { void bhv_manta_ray_loop(void) { switch (o->oAction) { case 0: - func_802F5E20(); - func_802F5FD8(); + manta_ray_move(); + manta_ray_act_spawn_ring(); if (o->oMantaUnk1AC == 5) { - func_802A3004(); - create_star(-3180.0f, -3600.0f, 120.0f); + spawn_mist_particles(); + spawn_default_star(-3180.0f, -3600.0f, 120.0f); o->oAction = 1; } break; case 1: - func_802F5E20(); + manta_ray_move(); break; } diff --git a/src/game/behaviors/metal_box.inc.c b/src/game/behaviors/metal_box.inc.c index 87abbbe0..851dfede 100644 --- a/src/game/behaviors/metal_box.inc.c +++ b/src/game/behaviors/metal_box.inc.c @@ -12,7 +12,7 @@ struct ObjectHitbox sMetalBoxHitbox = { /* hurtboxHeight: */ 300, }; -s32 func_802B0C54(f32 a0, f32 a1) { +s32 check_if_moving_over_floor(f32 a0, f32 a1) { struct Surface *sp24; f32 sp20 = o->oPosX + sins(o->oMoveAngleYaw) * a1; f32 floorHeight; @@ -27,17 +27,17 @@ s32 func_802B0C54(f32 a0, f32 a1) { void bhv_pushable_loop(void) { UNUSED s16 unused; s16 sp1C; - set_object_hitbox(o, &sMetalBoxHitbox); + obj_set_hitbox(o, &sMetalBoxHitbox); o->oForwardVel = 0.0f; - if (are_objects_collided(o, gMarioObject) && gMarioStates->flags & 0x80000000) { - sp1C = angle_to_object(o, gMarioObject); + if (obj_check_if_collided_with_object(o, gMarioObject) && gMarioStates->flags & 0x80000000) { + sp1C = obj_angle_to_object(o, gMarioObject); if (abs_angle_diff(sp1C, gMarioObject->oMoveAngleYaw) > 0x4000) { o->oMoveAngleYaw = (s16)((gMarioObject->oMoveAngleYaw + 0x2000) & 0xc000); - if (func_802B0C54(8.0f, 150.0f)) { + if (check_if_moving_over_floor(8.0f, 150.0f)) { o->oForwardVel = 4.0f; - PlaySound(SOUND_ENV_METAL_BOX_PUSH); + cur_obj_play_sound_1(SOUND_ENV_METAL_BOX_PUSH); } } } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } diff --git a/src/game/behaviors/mips.inc.c b/src/game/behaviors/mips.inc.c index 06b094bd..be33eca5 100644 --- a/src/game/behaviors/mips.inc.c +++ b/src/game/behaviors/mips.inc.c @@ -40,7 +40,7 @@ void bhv_mips_init(void) { o->oFriction = 0.89f; o->oBuoyancy = 1.2f; - SetObjAnimation(0); + cur_obj_init_animation(0); } /** @@ -99,7 +99,7 @@ void bhv_mips_act_wait_for_nearby_mario(void) { o->oAction = MIPS_ACT_WAIT_FOR_ANIMATION_DONE; } else { // Resume path following. - SetObjAnimation(1); + cur_obj_init_animation(1); o->oAction = MIPS_ACT_FOLLOW_PATH; } } @@ -120,7 +120,7 @@ void bhv_mips_act_follow_path(void) { // Set start waypoint and follow the path from there. o->oPathedStartWaypoint = waypoint; - followStatus = obj_follow_path(followStatus); + followStatus = cur_obj_follow_path(followStatus); // Update velocity and angle and do movement. #ifndef VERSION_JP @@ -133,16 +133,16 @@ void bhv_mips_act_follow_path(void) { // If we are at the end of the path, do idle animation and wait for Mario. if (followStatus == PATH_REACHED_END) { - SetObjAnimation(0); + cur_obj_init_animation(0); o->oAction = MIPS_ACT_WAIT_FOR_NEARBY_MARIO; } // Play sounds during walk animation. - if (func_8029F788() == 1 && (collisionFlags & OBJ_COL_FLAG_UNDERWATER)) { - PlaySound2(SOUND_OBJ_MIPS_RABBIT_WATER); - spawn_object(o, MODEL_NONE, bhvSurfaceWaveShrinking); - } else if (func_8029F788() == 1) { - PlaySound2(SOUND_OBJ_MIPS_RABBIT); + if (cur_obj_check_if_near_animation_end() == 1 && (collisionFlags & OBJ_COL_FLAG_UNDERWATER)) { + cur_obj_play_sound_2(SOUND_OBJ_MIPS_RABBIT_WATER); + spawn_object(o, MODEL_NONE, bhvShallowWaterSplash); + } else if (cur_obj_check_if_near_animation_end() == 1) { + cur_obj_play_sound_2(SOUND_OBJ_MIPS_RABBIT); } } @@ -150,8 +150,8 @@ void bhv_mips_act_follow_path(void) { * Seems to wait until the current animation is done, then go idle. */ void bhv_mips_act_wait_for_animation_done(void) { - if (func_8029F788() == 1) { - SetObjAnimation(0); + if (cur_obj_check_if_near_animation_end() == 1) { + cur_obj_init_animation(0); o->oAction = MIPS_ACT_IDLE; } } @@ -176,7 +176,7 @@ void bhv_mips_act_fall_down(void) { o->oMoveAngleYaw = o->oFaceAngleYaw; if (collisionFlags & OBJ_COL_FLAG_UNDERWATER) - spawn_object(o, MODEL_NONE, bhvSurfaceWaveShrinking); + spawn_object(o, MODEL_NONE, bhvShallowWaterSplash); } } @@ -230,9 +230,9 @@ void bhv_mips_held(void) { s16 dialogID; o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE; - SetObjAnimation(4); // Held animation. - obj_set_pos_relative(gMarioObject, 0, 60.0f, 100.0f); - obj_become_intangible(); + cur_obj_init_animation(4); // Held animation. + cur_obj_set_pos_relative(gMarioObject, 0, 60.0f, 100.0f); + cur_obj_become_intangible(); // If MIPS hasn't spawned his star yet... if (o->oMipsStarStatus == MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR) { @@ -258,11 +258,11 @@ void bhv_mips_held(void) { * Handles MIPS being dropped by Mario. */ void bhv_mips_dropped(void) { - obj_get_dropped(); + cur_obj_get_dropped(); o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE; - SetObjAnimation(0); + cur_obj_init_animation(0); o->oHeldState = HELD_FREE; - obj_become_tangible(); + cur_obj_become_tangible(); o->oForwardVel = 3.0f; o->oAction = MIPS_ACT_IDLE; } @@ -271,12 +271,12 @@ void bhv_mips_dropped(void) { * Handles MIPS being thrown by Mario. */ void bhv_mips_thrown(void) { - obj_enable_rendering_2(); + cur_obj_enable_rendering_2(); o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE; o->oHeldState = HELD_FREE; o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; - SetObjAnimation(2); - obj_become_tangible(); + cur_obj_init_animation(2); + cur_obj_become_tangible(); o->oForwardVel = 25.0f; o->oVelY = 20.0f; o->oAction = MIPS_ACT_FALL_DOWN; diff --git a/src/game/behaviors/moat_grill.inc.c b/src/game/behaviors/moat_grill.inc.c index 935a7aee..e2b4da82 100644 --- a/src/game/behaviors/moat_grill.inc.c +++ b/src/game/behaviors/moat_grill.inc.c @@ -2,7 +2,7 @@ void bhv_moat_grills_loop(void) { if (save_file_get_flags() & SAVE_FLAG_MOAT_DRAINED) - obj_set_model(MODEL_NONE); + cur_obj_set_model(MODEL_NONE); else load_object_collision_model(); } diff --git a/src/game/behaviors/moneybag.inc.c b/src/game/behaviors/moneybag.inc.c index 674a5576..667182e9 100644 --- a/src/game/behaviors/moneybag.inc.c +++ b/src/game/behaviors/moneybag.inc.c @@ -28,12 +28,12 @@ void bhv_moneybag_init(void) { o->oGravity = 3.0f; o->oFriction = 1.0f; o->oBuoyancy = 2.0f; - SetObjAnimation(0); + cur_obj_init_animation(0); o->oOpacity = 0; } -void MoneybagCheckMarioCollision(void) { - set_object_hitbox(o, &sMoneybagHitbox); +void moneybag_check_mario_collision(void) { + obj_set_hitbox(o, &sMoneybagHitbox); if (o->oInteractStatus & INT_STATUS_INTERACTED) /* bit 15 */ { @@ -54,25 +54,25 @@ void MoneybagCheckMarioCollision(void) { // sp20 = collisionFlags -void MoneybagJump(s8 collisionFlags) { +void moneybag_jump(s8 collisionFlags) { s16 animFrame = o->header.gfx.unk38.animFrame; switch (o->oMoneybagJumpState) { case MONEYBAG_JUMP_PREPARE: - SetObjAnimation(1); + cur_obj_init_animation(1); if (animFrame == 5) { o->oForwardVel = 20.0f; o->oVelY = 40.0f; } - if (func_8029F788() == 1) { + if (cur_obj_check_if_near_animation_end() == 1) { o->oMoneybagJumpState = MONEYBAG_JUMP_JUMP; - PlaySound2(SOUND_GENERAL_BOING2_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_BOING2_LOWPRIO); } break; case MONEYBAG_JUMP_JUMP: - SetObjAnimation(2); + cur_obj_init_animation(2); if ((collisionFlags & 1) == 1) /* bit 0 */ { @@ -83,14 +83,14 @@ void MoneybagJump(s8 collisionFlags) { break; case MONEYBAG_JUMP_JUMP_AND_BOUNCE: - SetObjAnimation(3); + cur_obj_init_animation(3); - if (func_8029F788() == 1) + if (cur_obj_check_if_near_animation_end() == 1) o->oMoneybagJumpState = MONEYBAG_JUMP_LANDING; break; case MONEYBAG_JUMP_WALK_AROUND: - SetObjAnimation(4); + cur_obj_init_animation(4); o->oForwardVel = 10.0f; if (o->oTimer >= 61) { @@ -101,13 +101,13 @@ void MoneybagJump(s8 collisionFlags) { break; case MONEYBAG_JUMP_WALK_HOME: - SetObjAnimation(4); + cur_obj_init_animation(4); o->oForwardVel = 5.0f; break; } } -void MoneybagMoveAroundLoop(void) { +void moneybag_act_move_around(void) { s16 collisionFlags; obj_return_and_displace_home(o, o->oHomeX, o->oHomeY, o->oHomeZ, 200); @@ -123,15 +123,15 @@ void MoneybagMoveAroundLoop(void) { o->oMoneybagJumpState = MONEYBAG_JUMP_PREPARE; } - MoneybagJump(collisionFlags); - MoneybagCheckMarioCollision(); + moneybag_jump(collisionFlags); + moneybag_check_mario_collision(); if (!is_point_within_radius_of_mario(o->oHomeX, o->oHomeY, o->oHomeZ, 800) && ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED)) o->oAction = MONEYBAG_ACT_RETURN_HOME; } -void MoneybagReturnHomeLoop(void) { +void moneybag_act_return_home(void) { s16 collisionFlags; f32 sp28 = o->oHomeX - o->oPosX; f32 sp24 = o->oHomeZ - o->oPosZ; @@ -143,15 +143,15 @@ void MoneybagReturnHomeLoop(void) { && (o->oMoneybagJumpState == MONEYBAG_JUMP_LANDING)) o->oMoneybagJumpState = MONEYBAG_JUMP_WALK_HOME; - MoneybagJump(collisionFlags); - MoneybagCheckMarioCollision(); + moneybag_jump(collisionFlags); + moneybag_check_mario_collision(); if (is_point_close_to_object(o, o->oHomeX, o->oHomeY, o->oHomeZ, 100)) { spawn_object(o, MODEL_YELLOW_COIN, bhvMoneybagHidden); #ifndef VERSION_JP - PlaySound2(SOUND_GENERAL_VANISH_SFX); + cur_obj_play_sound_2(SOUND_GENERAL_VANISH_SFX); #endif - SetObjAnimation(0); + cur_obj_init_animation(0); o->oAction = MONEYBAG_ACT_DISAPPEAR; o->oMoneybagJumpState = MONEYBAG_JUMP_LANDING; } @@ -162,7 +162,7 @@ void MoneybagReturnHomeLoop(void) { } } -void MoneybagDisappearLoop(void) { +void moneybag_act_disappear(void) { o->oOpacity -= 6; if (o->oOpacity < 0) { o->oOpacity = 0; @@ -170,11 +170,11 @@ void MoneybagDisappearLoop(void) { } } -void MoneybagDeathLoop(void) { +void moneybag_act_death(void) { if (o->oTimer == 1) { obj_spawn_yellow_coins(o, 5); create_sound_spawner(SOUND_GENERAL_SPLATTERING); - func_802A3004(); + spawn_mist_particles(); o->activeFlags = 0; } } @@ -192,34 +192,34 @@ void bhv_moneybag_loop(void) { break; case MONEYBAG_ACT_MOVE_AROUND: - MoneybagMoveAroundLoop(); + moneybag_act_move_around(); if (o->oTimer >= 31) - obj_become_tangible(); + cur_obj_become_tangible(); break; case MONEYBAG_ACT_RETURN_HOME: - MoneybagReturnHomeLoop(); + moneybag_act_return_home(); break; case MONEYBAG_ACT_DISAPPEAR: - MoneybagDisappearLoop(); + moneybag_act_disappear(); break; case MONEYBAG_ACT_DEATH: - MoneybagDeathLoop(); + moneybag_act_death(); break; } } void bhv_moneybag_hidden_loop(void) { - set_object_hitbox(o, &sMoneybagHiddenHitbox); + obj_set_hitbox(o, &sMoneybagHiddenHitbox); switch (o->oAction) { case FAKE_MONEYBAG_COIN_ACT_IDLE: if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 400)) { spawn_object(o, MODEL_MONEYBAG, bhvMoneybag); #ifndef VERSION_JP - PlaySound2(SOUND_GENERAL_VANISH_SFX); + cur_obj_play_sound_2(SOUND_GENERAL_VANISH_SFX); #endif o->oAction = FAKE_MONEYBAG_COIN_ACT_TRANSFORM; } diff --git a/src/game/behaviors/monty_mole.inc.c b/src/game/behaviors/monty_mole.inc.c index 87c1b390..582acdec 100644 --- a/src/game/behaviors/monty_mole.inc.c +++ b/src/game/behaviors/monty_mole.inc.c @@ -186,7 +186,7 @@ void monty_mole_spawn_dirt_particles(s8 offsetY, s8 velYBase) { #if defined(VERSION_JP) || defined(VERSION_US) sMontyMoleRiseFromGroundParticles.offsetY = offsetY; sMontyMoleRiseFromGroundParticles.velYBase = velYBase; - obj_spawn_particles(&sMontyMoleRiseFromGroundParticles); + cur_obj_spawn_particles(&sMontyMoleRiseFromGroundParticles); #else s8 tempVelYBase = velYBase; s8 tempOffsetY = offsetY; @@ -194,7 +194,7 @@ void monty_mole_spawn_dirt_particles(s8 offsetY, s8 velYBase) { do { sMontyMoleRiseFromGroundParticles.offsetY = tempOffsetY; sMontyMoleRiseFromGroundParticles.velYBase = tempVelYBase; - obj_spawn_particles(&sMontyMoleRiseFromGroundParticles); + cur_obj_spawn_particles(&sMontyMoleRiseFromGroundParticles); } while (0); #endif } @@ -223,7 +223,7 @@ static void monty_mole_act_select_hole(void) { // Select a hole to pop out of if ((o->oMontyMoleCurrentHole = monty_mole_select_available_hole(minDistToMario)) != NULL) { - PlaySound2(SOUND_OBJ2_MONTY_MOLE_APPEAR); + cur_obj_play_sound_2(SOUND_OBJ2_MONTY_MOLE_APPEAR); // Mark hole as unavailable o->oMontyMoleCurrentHole->oMontyMoleHoleCooldown = -1; @@ -248,8 +248,8 @@ static void monty_mole_act_select_hole(void) { monty_mole_spawn_dirt_particles(0, 20); } - obj_unhide(); - obj_become_tangible(); + cur_obj_unhide(); + cur_obj_become_tangible(); } } @@ -257,13 +257,13 @@ static void monty_mole_act_select_hole(void) { * Move upward until high enough, then enter the spawn rock action. */ static void monty_mole_act_rise_from_hole(void) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); if (o->oMontyMoleHeightRelativeToFloor >= 49.0f) { o->oPosY = o->oFloorHeight + 50.0f; o->oVelY = 0.0f; - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oAction = MONTY_MOLE_ACT_SPAWN_ROCK; } } @@ -305,11 +305,11 @@ static void monty_mole_act_begin_jump_into_hole(void) { */ static void monty_mole_act_throw_rock(void) { if (func_802F92EC(8, 10)) { - PlaySound2(SOUND_OBJ_MONTY_MOLE_ATTACK); + cur_obj_play_sound_2(SOUND_OBJ_MONTY_MOLE_ATTACK); o->prevObj = NULL; } - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oAction = MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE; } } @@ -344,17 +344,17 @@ static void monty_mole_hide_in_hole(void) { // action. If no hole is available (e.g. because mario is too far away), // the game will crash because of the line above that accesses // oMontyMoleCurrentHole. - obj_become_intangible(); + cur_obj_become_intangible(); } /** * Wait to land on the floor, then hide. */ static void monty_mole_act_hide(void) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) { - obj_hide(); + cur_obj_hide(); monty_mole_hide_in_hole(); } else { approach_f32_ptr(&o->oVelY, -4.0f, 0.5f); @@ -367,7 +367,7 @@ static void monty_mole_act_hide(void) { */ static void monty_mole_act_jump_out_of_hole(void) { if (o->oVelY > 0.0f) { - set_obj_animation_and_sound_state(9); + cur_obj_init_animation_with_sound(9); } else { func_802F927C(4); @@ -386,7 +386,7 @@ void bhv_monty_mole_update(void) { // PARTIAL_UPDATE o->oDeathSound = SOUND_OBJ_DYING_ENEMY1; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); o->oMontyMoleHeightRelativeToFloor = o->oPosY - o->oFloorHeight; @@ -452,7 +452,7 @@ void bhv_monty_mole_update(void) { o->prevObj = NULL; } - obj_move_standard(78); + cur_obj_move_standard(78); } /** @@ -486,14 +486,14 @@ static void monty_mole_rock_act_held(void) { * Move, then despawn after hitting the ground or water. */ static void monty_mole_rock_act_move(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_ENTERED_WATER)) { - obj_spawn_particles(&sMontyMoleRockBreakParticles); - mark_object_for_deletion(o); + cur_obj_spawn_particles(&sMontyMoleRockBreakParticles); + obj_mark_for_deletion(o); } - obj_move_standard(78); + cur_obj_move_standard(78); } /** diff --git a/src/game/behaviors/moving_coin.inc.c b/src/game/behaviors/moving_coin.inc.c index 404d22d1..71c1d6fa 100644 --- a/src/game/behaviors/moving_coin.inc.c +++ b/src/game/behaviors/moving_coin.inc.c @@ -26,28 +26,28 @@ static struct ObjectHitbox sMovingBlueCoinHitbox = { /* hurtboxHeight: */ 0, }; -s32 CoinStep(s16 *collisionFlagsPtr) { +s32 coin_step(s16 *collisionFlagsPtr) { *collisionFlagsPtr = object_step(); obj_check_floor_death(*collisionFlagsPtr, sObjFloor); if ((*collisionFlagsPtr & 0x1) != 0 && (*collisionFlagsPtr & 0x8) == 0) /* bit 0, bit 3 */ { - PlaySound2(SOUND_GENERAL_COIN_DROP); + cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP); return 1; } return 0; } -void MovingCoinFlickerLoop(void) { +void moving_coin_flicker(void) { s16 collisionFlags; - CoinStep(&collisionFlags); + coin_step(&collisionFlags); obj_flicker_and_disappear(o, 0); } -void CoinCollected(void) { +void coin_collected(void) { spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles); o->activeFlags = 0; } @@ -57,26 +57,26 @@ void bhv_moving_yellow_coin_init(void) { o->oFriction = 1.0f; o->oBuoyancy = 1.5f; - set_object_hitbox(o, &sMovingYellowCoinHitbox); + obj_set_hitbox(o, &sMovingYellowCoinHitbox); } void bhv_moving_yellow_coin_loop(void) { s16 collisionFlags; switch (o->oAction) { case MOV_YCOIN_ACT_IDLE: - CoinStep(&collisionFlags); + coin_step(&collisionFlags); if (o->oTimer < 10) - obj_become_intangible(); + cur_obj_become_intangible(); else - obj_become_tangible(); + cur_obj_become_tangible(); if (o->oTimer >= 301) o->oAction = 1; break; case MOV_YCOIN_ACT_BLINKING: - MovingCoinFlickerLoop(); + moving_coin_flicker(); break; case MOV_YCOIN_ACT_LAVA_DEATH: @@ -90,7 +90,7 @@ void bhv_moving_yellow_coin_loop(void) { if ((o->oInteractStatus & INT_STATUS_INTERACTED) != 0) /* bit 15 */ { - CoinCollected(); + coin_collected(); o->oInteractStatus = 0; } } @@ -100,7 +100,7 @@ void bhv_moving_blue_coin_init(void) { o->oFriction = 1.0f; o->oBuoyancy = 1.5f; - set_object_hitbox(o, &sMovingBlueCoinHitbox); + obj_set_hitbox(o, &sMovingBlueCoinHitbox); } void bhv_moving_blue_coin_loop(void) { @@ -122,7 +122,7 @@ void bhv_moving_blue_coin_loop(void) { { o->oForwardVel += 25.0f; if ((collisionFlags & 0x8) == 0) - PlaySound2(SOUND_GENERAL_COIN_DROP); /* bit 3 */ + cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP); /* bit 3 */ } else o->oForwardVel *= 0.98; @@ -135,7 +135,7 @@ void bhv_moving_blue_coin_loop(void) { if ((o->oInteractStatus & INT_STATUS_INTERACTED) != 0) /* bit 15 */ { - CoinCollected(); + coin_collected(); o->oInteractStatus = 0; } } @@ -145,16 +145,16 @@ void bhv_blue_coin_sliding_jumping_init(void) { o->oFriction = 0.98; o->oBuoyancy = 1.5; - set_object_hitbox(o, &sMovingBlueCoinHitbox); + obj_set_hitbox(o, &sMovingBlueCoinHitbox); } -void func_802E540C(void) { +void blue_coin_sliding_away_from_mario(void) { s16 collisionFlags; o->oForwardVel = 15.0; o->oMoveAngleYaw = o->oAngleToMario + 0x8000; - if (CoinStep(&collisionFlags) != 0) + if (coin_step(&collisionFlags) != 0) o->oVelY += 18.0f; if ((collisionFlags & 0x2) != 0) o->oAction = 3; /* bit 1 */ @@ -163,10 +163,10 @@ void func_802E540C(void) { o->oAction = 2; } -void func_802E54DC(void) { +void blue_coin_sliding_slow_down(void) { s16 collisionFlags; - CoinStep(&collisionFlags); + coin_step(&collisionFlags); if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500) == 1) o->oAction = 1; @@ -187,22 +187,22 @@ void bhv_blue_coin_sliding_loop(void) { break; case 1: - func_802E540C(); + blue_coin_sliding_away_from_mario(); break; case 2: - func_802E54DC(); + blue_coin_sliding_slow_down(); set_object_visibility(o, 3000); break; case 3: - CoinStep(&collisionFlags); + coin_step(&collisionFlags); if (o->oTimer >= 61) o->oAction = 4; break; case 4: - MovingCoinFlickerLoop(); + moving_coin_flicker(); break; case 100: @@ -216,7 +216,7 @@ void bhv_blue_coin_sliding_loop(void) { if ((o->oInteractStatus & INT_STATUS_INTERACTED) != 0) /* bit 15 */ { - CoinCollected(); + coin_collected(); o->oInteractStatus = 0; } } @@ -227,41 +227,41 @@ void bhv_blue_coin_jumping_loop(void) { switch (o->oAction) { case 0: if (o->oTimer == 0) { - obj_become_intangible(); + cur_obj_become_intangible(); o->oVelY = 50.0; } object_step(); if (o->oTimer == 15) { - obj_become_tangible(); + cur_obj_become_tangible(); o->oAction = 1; } break; case 1: - func_802E540C(); + blue_coin_sliding_away_from_mario(); break; case 2: - func_802E54DC(); + blue_coin_sliding_slow_down(); set_object_visibility(o, 3000); break; case 3: - CoinStep(&collisionFlags); + coin_step(&collisionFlags); if (o->oTimer >= 61) o->oAction = 4; break; case 4: - MovingCoinFlickerLoop(); + moving_coin_flicker(); break; } if ((o->oInteractStatus & INT_STATUS_INTERACTED) != 0) /* bit 15 */ { - CoinCollected(); + coin_collected(); o->oInteractStatus = 0; } } diff --git a/src/game/behaviors/mr_blizzard.inc.c b/src/game/behaviors/mr_blizzard.inc.c index 826a6bd6..d10bbe16 100644 --- a/src/game/behaviors/mr_blizzard.inc.c +++ b/src/game/behaviors/mr_blizzard.inc.c @@ -48,7 +48,7 @@ void func_80306ED4(s8 count, s8 offsetY, s8 forwardVelBase, s8 velYBase, s8 size D_80331A00.forwardVelBase = forwardVelBase; D_80331A00.velYBase = velYBase; D_80331A00.sizeBase = sizeBase; - obj_spawn_particles(&D_80331A00); + cur_obj_spawn_particles(&D_80331A00); #else s8 tempSizeBase = sizeBase; s8 tempVelYBase = velYBase; @@ -62,7 +62,7 @@ void func_80306ED4(s8 count, s8 offsetY, s8 forwardVelBase, s8 velYBase, s8 size D_80331A00.forwardVelBase = tempForwardVelBase; D_80331A00.velYBase = tempVelYBase; D_80331A00.sizeBase = tempSizeBase; - obj_spawn_particles(&D_80331A00); + cur_obj_spawn_particles(&D_80331A00); } while (0); #endif } @@ -88,9 +88,9 @@ static void func_8030702C(void) { if (o->oMrBlizzardUnkF8 == NULL && func_802F92EC(0, 5)) { o->oMrBlizzardUnkF8 = spawn_object_relative(0, -70, (s32)(o->oMrBlizzardUnk10C + 153.0f), 0, o, MODEL_WHITE_PARTICLE, bhvMrBlizzardSnowball); - } else if (obj_check_anim_frame(10)) { + } else if (cur_obj_check_anim_frame(10)) { o->prevObj = o->oMrBlizzardUnkF8; - } else if (func_8029F788()) { + } else if (cur_obj_check_if_near_animation_end()) { if (o->oMrBlizzardUnk10C < 0.0f) { o->oAction = 1; } else { @@ -101,16 +101,16 @@ static void func_8030702C(void) { static void func_80307144(void) { if (o->oDistanceToMario < 1000.0f) { - PlaySound2(SOUND_OBJ_SNOW_SAND2); + cur_obj_play_sound_2(SOUND_OBJ_SNOW_SAND2); o->oAction = 2; o->oMoveAngleYaw = o->oAngleToMario; o->oMrBlizzardUnkFC = 42.0f; func_80306ED4(8, -10, 15, 20, 10); - obj_unhide(); - obj_become_tangible(); + cur_obj_unhide(); + cur_obj_become_tangible(); } else { - obj_hide(); + cur_obj_hide(); } } @@ -136,7 +136,7 @@ static void func_80307370(void) { f32 val00; if (o->oMoveFlags & 0x00000003) { - obj_rotate_yaw_toward(o->oAngleToMario, 0x600); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x600); val06 = o->oAngleToMario - o->oMoveAngleYaw; if (val06 != 0) { @@ -165,7 +165,7 @@ static void func_80307370(void) { if (absi(o->oFaceAngleRoll) > 0x3000) { o->oAction = 6; o->prevObj = o->oMrBlizzardUnkF8 = NULL; - obj_become_intangible(); + cur_obj_become_intangible(); } } else if (o->oDistanceToMario > 1500.0f) { o->oAction = 5; @@ -182,7 +182,7 @@ static void func_80307650(void) { if (clamp_f32(&o->oMrBlizzardUnk104, -0x4000, 0x4000)) { if (o->oMrBlizzardUnk108 != 0.0f) { - PlaySound2(SOUND_OBJ_SNOW_SAND1); + cur_obj_play_sound_2(SOUND_OBJ_SNOW_SAND1); if (o->oAnimState) { save_file_clear_flags(SAVE_FLAG_CAP_ON_MR_BLIZZARD); @@ -210,19 +210,19 @@ static void func_80307650(void) { if (o->oTimer >= 30) { if (o->oTimer == 30) { - PlaySound2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); + cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); } if (o->oMrBlizzardUnkF4 != 0.0f) { if ((o->oMrBlizzardUnkF4 -= 0.03f) <= 0.0f) { o->oMrBlizzardUnkF4 = 0.0f; if (!(o->oBehParams & 0x0000FF00)) { - spawn_object_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); + obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); set_object_respawn_info_bits(o, 1); } } } else if (o->oDistanceToMario > 1000.0f) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); o->oAction = 0; o->oMrBlizzardUnkF4 = 1.0f; @@ -235,9 +235,9 @@ static void func_80307650(void) { static void func_80307990(void) { if (func_802F92EC(1, 7)) { - PlaySound2(SOUND_OBJ2_SCUTTLEBUG_ALERT); + cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT); o->prevObj = o->oMrBlizzardUnkF8 = NULL; - } else if (func_8029F788()) { + } else if (cur_obj_check_if_near_animation_end()) { o->oAction = 0; } } @@ -253,16 +253,16 @@ static void func_80307A0C(void) { if (approach_f32_ptr(&o->oMrBlizzardUnk10C, -200.0f, 4.0f)) { o->oAction = 0; - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); } } static void func_80307AD4(void) { if (o->oMrBlizzardUnk100 != 0) { - obj_rotate_yaw_toward(o->oMrBlizzardUnk1AC, 3400); + cur_obj_rotate_yaw_toward(o->oMrBlizzardUnk1AC, 3400); if (--o->oMrBlizzardUnk100 == 0) { - PlaySound2(SOUND_OBJ_MR_BLIZZARD_ALERT); + cur_obj_play_sound_2(SOUND_OBJ_MR_BLIZZARD_ALERT); if (o->oMrBlizzardUnk110 > 700) { o->oMrBlizzardUnk1AC += 0x8000; @@ -276,9 +276,9 @@ static void func_80307AD4(void) { } } } else if (o->oMoveFlags & 0x00000003) { - PlaySound2(SOUND_OBJ_SNOW_SAND1); + cur_obj_play_sound_2(SOUND_OBJ_SNOW_SAND1); if (o->oMrBlizzardUnk110 != 0) { - o->oMrBlizzardUnk110 = (s32) obj_lateral_dist_to_home(); + o->oMrBlizzardUnk110 = (s32) cur_obj_lateral_dist_to_home(); } else { o->oMrBlizzardUnk110 = 700; } @@ -289,7 +289,7 @@ static void func_80307AD4(void) { } void bhv_mr_blizzard_update(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case 0: @@ -322,13 +322,13 @@ void bhv_mr_blizzard_update(void) { o->oGraphYOffset = o->oMrBlizzardUnk10C + absf(20.0f * sins(o->oFaceAngleRoll)) - 40.0f * (1.0f - o->oMrBlizzardUnkF4); - obj_scale(o->oMrBlizzardUnkF4); - obj_move_standard(78); + cur_obj_scale(o->oMrBlizzardUnkF4); + cur_obj_move_standard(78); obj_check_attacks(&sMrBlizzardHitbox, o->oAction); } static void func_80307E24(void) { - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (o->parentObj->prevObj == o) { o->oAction = 1; o->oParentRelativePosX = 190.0f; @@ -357,16 +357,16 @@ static void func_80307EB0(void) { } static void func_80307FD4(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); obj_check_attacks(&sMrBlizzardSnowballHitbox, -1); if (o->oAction == -1 || o->oMoveFlags & 0x0000000B) { func_80306ED4(6, 0, 5, 10, 3); create_sound_spawner(SOUND_GENERAL_MOVING_IN_SAND); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } - obj_move_standard(78); + cur_obj_move_standard(78); } void bhv_mr_blizzard_snowball(void) { diff --git a/src/game/behaviors/mr_i.inc.c b/src/game/behaviors/mr_i.inc.c index b21db605..05299c84 100644 --- a/src/game/behaviors/mr_i.inc.c +++ b/src/game/behaviors/mr_i.inc.c @@ -8,51 +8,51 @@ void bhv_piranha_particle_loop(void) { o->oForwardVel = 20.0f + 20.0f * RandomFloat(); o->oMoveAngleYaw = RandomU16(); } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } -void ActionMrIParticle0(void) { - obj_scale(3.0f); +void mr_i_piranha_particle_act_0(void) { + cur_obj_scale(3.0f); o->oForwardVel = 20.0f; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (0x8000 & o->oInteractStatus) o->oAction = 1; else if ((o->oTimer >= 101) || (0x200 & o->oMoveFlags) || (8 & (s16) o->activeFlags)) { - mark_object_for_deletion(o); - func_802A3004(); + obj_mark_for_deletion(o); + spawn_mist_particles(); } } -void ActionMrIParticle1(void) { +void mr_i_piranha_particle_act_1(void) { s32 i; - mark_object_for_deletion(o); + obj_mark_for_deletion(o); for (i = 0; i < 10; i++) spawn_object(o, MODEL_PURPLE_MARBLE, bhvPurpleParticle); } -void (*sMrIParticleActions[])(void) = { ActionMrIParticle0, ActionMrIParticle1 }; +void (*sMrIParticleActions[])(void) = { mr_i_piranha_particle_act_0, mr_i_piranha_particle_act_1 }; void bhv_mr_i_particle_loop(void) { - obj_call_action_function(sMrIParticleActions); + cur_obj_call_action_function(sMrIParticleActions); } -void func_802A525C(void) { +void spawn_mr_i_particle(void) { struct Object *particle; f32 sp18 = o->header.gfx.scale[1]; particle = spawn_object(o, MODEL_PURPLE_MARBLE, bhvMrIParticle); particle->oPosY += 50.0f * sp18; particle->oPosX += sins(o->oMoveAngleYaw) * 90.0f * sp18; particle->oPosZ += coss(o->oMoveAngleYaw) * 90.0f * sp18; - PlaySound2(SOUND_OBJ_MRI_SHOOT); + cur_obj_play_sound_2(SOUND_OBJ_MRI_SHOOT); } void bhv_mr_i_body_loop(void) { - copy_object_pos_and_angle(o, o->parentObj); + obj_copy_pos_and_angle(o, o->parentObj); if (!(8 & o->activeFlags)) { - copy_object_scale(o, o->parentObj); - set_object_parent_relative_pos(o, 0, 0, o->header.gfx.scale[1] * 100.0f); - build_object_transform_from_pos_and_angle(o, 44, 15); - translate_object_local(o, 6, 44); + obj_copy_scale(o, o->parentObj); + obj_set_parent_relative_pos(o, 0, 0, o->header.gfx.scale[1] * 100.0f); + obj_build_transform_from_pos_and_angle(o, 44, 15); + obj_translate_local(o, 6, 44); o->oFaceAnglePitch = o->oMoveAnglePitch; o->oGraphYOffset = o->header.gfx.scale[1] * 100.f; } @@ -64,10 +64,10 @@ void bhv_mr_i_body_loop(void) { o->parentObj->oMrIUnk110 = 0; } if (!o->parentObj->activeFlags) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void ActionMrI3(void) { +void mr_i_act_3(void) { s16 sp36; s16 sp34; f32 sp30; @@ -88,41 +88,41 @@ void ActionMrI3(void) { sp36 = o->oMoveAngleYaw; o->oMoveAngleYaw += sp34 * coss(0x4000 * sp2C); if (sp36 < 0 && o->oMoveAngleYaw >= 0) - PlaySound2(SOUND_OBJ2_MRI_SPINNING); + cur_obj_play_sound_2(SOUND_OBJ2_MRI_SPINNING); o->oMoveAnglePitch = (1.0 - coss(0x4000 * sp2C)) * -0x4000; - obj_shake_y(4.0f); + cur_obj_shake_y(4.0f); } else if (o->oTimer < 96) { if (o->oTimer == 64) - PlaySound2(SOUND_OBJ_MRI_DEATH); + cur_obj_play_sound_2(SOUND_OBJ_MRI_DEATH); sp30 = (f32)(o->oTimer - 63) / 32; o->oMoveAngleYaw += sp34 * coss(0x4000 * sp2C); o->oMoveAnglePitch = (1.0 - coss(0x4000 * sp2C)) * -0x4000; - obj_shake_y((s32)((1.0f - sp30) * 4)); // trucating the f32? + cur_obj_shake_y((s32)((1.0f - sp30) * 4)); // trucating the f32? sp20 = coss(0x4000 * sp30) * 0.4 + 0.6; - obj_scale(sp20 * sp1C); + cur_obj_scale(sp20 * sp1C); } else if (o->oTimer < 104) { // do nothing } else if (o->oTimer < 168) { if (o->oTimer == 104) { - obj_become_intangible(); - func_802A3004(); + cur_obj_become_intangible(); + spawn_mist_particles(); o->oMrISize = sp1C * 0.6; if (o->oBehParams2ndByte) { o->oPosY += 100.0f; - create_star(1370, 2000.0f, -320.0f); - mark_object_for_deletion(o); + spawn_default_star(1370, 2000.0f, -320.0f); + obj_mark_for_deletion(o); } else - obj_spawn_loot_blue_coin(); + cur_obj_spawn_loot_blue_coin(); } o->oMrISize -= 0.2 * sp1C; if (o->oMrISize < 0) o->oMrISize = 0; - obj_scale(o->oMrISize); + cur_obj_scale(o->oMrISize); } else - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void ActionMrI2() { +void mr_i_act_2() { s16 sp1E; s16 sp1C; sp1E = o->oMoveAngleYaw; @@ -167,7 +167,7 @@ void ActionMrI2() { if (o->oMrIUnk104 == o->oMrIUnk108) o->oMrIUnk110 = 1; if (o->oMrIUnk104 == o->oMrIUnk108 + 20) { - func_802A525C(); + spawn_mr_i_particle(); o->oMrIUnk104 = 0; o->oMrIUnk108 = (s32)(RandomFloat() * 50.0f + 50.0f); } @@ -180,15 +180,15 @@ void ActionMrI2() { o->oAction = 1; } -void ActionMrI1(void) { +void mr_i_act_1(void) { s16 sp1E; s16 sp1C; s16 sp1A; - sp1E = angle_to_object(o, gMarioObject); + sp1E = obj_angle_to_object(o, gMarioObject); sp1C = abs_angle_diff(o->oMoveAngleYaw, sp1E); sp1A = abs_angle_diff(o->oMoveAngleYaw, gMarioObject->oFaceAngleYaw); if (o->oTimer == 0) { - obj_become_tangible(); + cur_obj_become_tangible(); o->oMoveAnglePitch = 0; o->oMrIUnk104 = 30; o->oMrIUnk108 = RandomFloat() * 20.0f; @@ -211,26 +211,26 @@ void ActionMrI1(void) { if (o->oMrIUnk108 + 80 < o->oMrIUnk104) { o->oMrIUnk104 = 0; o->oMrIUnk108 = RandomFloat() * 80.0f; - func_802A525C(); + spawn_mr_i_particle(); } } -void ActionMrI0(void) { +void mr_i_act_0(void) { #ifndef VERSION_JP - set_object_angle(o, 0, 0, 0); + obj_set_angle(o, 0, 0, 0); #else o->oMoveAnglePitch = 0; o->oMoveAngleYaw = 0; o->oMoveAngleRoll = 0; #endif - obj_scale(o->oBehParams2ndByte + 1); + cur_obj_scale(o->oBehParams2ndByte + 1); if (o->oTimer == 0) - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); if (o->oDistanceToMario < 1500.0f) o->oAction = 1; } -void (*sMrIActions[])(void) = { ActionMrI0, ActionMrI1, ActionMrI2, ActionMrI3 }; +void (*sMrIActions[])(void) = { mr_i_act_0, mr_i_act_1, mr_i_act_2, mr_i_act_3 }; struct ObjectHitbox sMrIHitbox = { /* interactType: */ INTERACT_DAMAGE, @@ -245,8 +245,8 @@ struct ObjectHitbox sMrIHitbox = { }; void bhv_mr_i_loop(void) { - set_object_hitbox(o, &sMrIHitbox); - obj_call_action_function(sMrIActions); + obj_set_hitbox(o, &sMrIHitbox); + cur_obj_call_action_function(sMrIActions); if (o->oAction != 3) if (o->oDistanceToMario > 3000.0f || o->activeFlags & 8) o->oAction = 0; diff --git a/src/game/behaviors/mushroom_1up.inc.c b/src/game/behaviors/mushroom_1up.inc.c index 1d1d5530..66ae68d4 100644 --- a/src/game/behaviors/mushroom_1up.inc.c +++ b/src/game/behaviors/mushroom_1up.inc.c @@ -3,7 +3,7 @@ void bhv_1up_interact(void) { UNUSED s32 sp1C; - if (are_objects_collided(o, gMarioObject) == 1) { + if (obj_check_if_collided_with_object(o, gMarioObject) == 1) { play_sound(SOUND_GENERAL_COLLECT_1UP, gDefaultSoundArgs); gMarioState->numLives++; o->activeFlags = 0; @@ -28,7 +28,7 @@ void bhv_1up_init(void) { } } -void func_802F2D40(void) { +void one_up_loop_in_air(void) { if (o->oTimer < 5) { o->oVelY = 40.0f; } else { @@ -39,7 +39,7 @@ void func_802F2D40(void) { } } -void func_802F2E18(void) { +void pole_1up_move_towards_mario(void) { f32 sp34 = gMarioObject->header.gfx.pos[0] - o->oPosX; f32 sp30 = gMarioObject->header.gfx.pos[1] + 120.0f - o->oPosY; f32 sp2C = gMarioObject->header.gfx.pos[2] - o->oPosZ; @@ -52,7 +52,7 @@ void func_802F2E18(void) { bhv_1up_interact(); } -void func_802F2F8C(s16 sp1A) { +void one_up_move_away_from_mario(s16 sp1A) { o->oForwardVel = 8.0f; o->oMoveAngleYaw = o->oAngleToMario + 0x8000; bhv_1up_interact(); @@ -74,10 +74,10 @@ void bhv_1up_walking_loop(void) { if (o->oTimer == 0) play_sound(SOUND_GENERAL2_1UP_APPEAR, gDefaultSoundArgs); - func_802F2D40(); + one_up_loop_in_air(); if (o->oTimer == 37) { - obj_become_tangible(); + cur_obj_become_tangible(); o->oAction = 1; o->oForwardVel = 2.0f; } @@ -111,10 +111,10 @@ void bhv_1up_running_away_loop(void) { if (o->oTimer == 0) play_sound(SOUND_GENERAL2_1UP_APPEAR, gDefaultSoundArgs); - func_802F2D40(); + one_up_loop_in_air(); if (o->oTimer == 37) { - obj_become_tangible(); + cur_obj_become_tangible(); o->oAction = 1; o->oForwardVel = 8.0f; } @@ -122,7 +122,7 @@ void bhv_1up_running_away_loop(void) { case 1: spawn_object(o, MODEL_NONE, bhvSparkleSpawn); - func_802F2F8C(sp26); + one_up_move_away_from_mario(sp26); break; case 2: @@ -134,7 +134,7 @@ void bhv_1up_running_away_loop(void) { set_object_visibility(o, 3000); } -void func_802F3328(void) { +void sliding_1up_move(void) { s16 sp1E; sp1E = object_step(); @@ -161,7 +161,7 @@ void bhv_1up_sliding_loop(void) { break; case 1: - func_802F3328(); + sliding_1up_move(); break; case 2: @@ -192,7 +192,7 @@ void bhv_1up_jump_on_approach_loop(void) { case 1: sp26 = object_step(); - func_802F2F8C(sp26); + one_up_move_away_from_mario(sp26); spawn_object(o, MODEL_NONE, bhvSparkleSpawn); break; @@ -221,7 +221,7 @@ void bhv_1up_hidden_loop(void) { case 1: sp26 = object_step(); - func_802F2F8C(sp26); + one_up_move_away_from_mario(sp26); spawn_object(o, MODEL_NONE, bhvSparkleSpawn); break; @@ -236,10 +236,10 @@ void bhv_1up_hidden_loop(void) { if (o->oTimer >= 18) spawn_object(o, MODEL_NONE, bhvSparkleSpawn); - func_802F2D40(); + one_up_loop_in_air(); if (o->oTimer == 37) { - obj_become_tangible(); + cur_obj_become_tangible(); o->oAction = 1; o->oForwardVel = 8.0f; } @@ -249,8 +249,8 @@ void bhv_1up_hidden_loop(void) { void bhv_1up_hidden_trigger_loop(void) { struct Object *sp1C; - if (are_objects_collided(o, gMarioObject) == 1) { - sp1C = obj_nearest_object_with_behavior(bhvHidden1up); + if (obj_check_if_collided_with_object(o, gMarioObject) == 1) { + sp1C = cur_obj_nearest_object_with_behavior(bhvHidden1up); if (sp1C != NULL) sp1C->o1UpHiddenUnkF4++; @@ -272,7 +272,7 @@ void bhv_1up_hidden_in_pole_loop(void) { break; case 1: - func_802F2E18(); + pole_1up_move_towards_mario(); sp26 = object_step(); break; @@ -281,10 +281,10 @@ void bhv_1up_hidden_in_pole_loop(void) { if (o->oTimer >= 18) spawn_object(o, MODEL_NONE, bhvSparkleSpawn); - func_802F2D40(); + one_up_loop_in_air(); if (o->oTimer == 37) { - obj_become_tangible(); + cur_obj_become_tangible(); o->oAction = 1; o->oForwardVel = 10.0f; } @@ -295,8 +295,8 @@ void bhv_1up_hidden_in_pole_loop(void) { void bhv_1up_hidden_in_pole_trigger_loop(void) { struct Object *sp1C; - if (are_objects_collided(o, gMarioObject) == 1) { - sp1C = obj_nearest_object_with_behavior(bhvHidden1upInPole); + if (obj_check_if_collided_with_object(o, gMarioObject) == 1) { + sp1C = cur_obj_nearest_object_with_behavior(bhvHidden1upInPole); if (sp1C != NULL) { sp1C->o1UpHiddenUnkF4++; ; diff --git a/src/game/behaviors/piranha_bubbles.inc.c b/src/game/behaviors/piranha_bubbles.inc.c index 530858fb..94313d1e 100644 --- a/src/game/behaviors/piranha_bubbles.inc.c +++ b/src/game/behaviors/piranha_bubbles.inc.c @@ -16,7 +16,7 @@ void bhv_piranha_plant_waking_bubbles_loop(void) { o->oForwardVel = RandomFloat() * 10.0f + 5.0f; o->oMoveAngleYaw = RandomU16(); } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } /** @@ -37,11 +37,11 @@ void bhv_piranha_plant_bubble_loop(void) { f32 doneShrinkingFrame; // the first frame after shrinking is done f32 beginGrowingFrame; // the frame just before growing begins - obj_set_pos_relative(parent, 0, 72.0f, 180.0f); + cur_obj_set_pos_relative(parent, 0, 72.0f, 180.0f); switch (o->oAction) { case PIRANHA_PLANT_BUBBLE_ACT_IDLE: - obj_disable_rendering(); + cur_obj_disable_rendering(); scale = 0; if (parent->oAction == PIRANHA_PLANT_ACT_SLEEPING) { @@ -51,7 +51,7 @@ void bhv_piranha_plant_bubble_loop(void) { case PIRANHA_PLANT_BUBBLE_ACT_GROW_SHRINK_LOOP: if (parent->oDistanceToMario < parent->oDrawingDistance) { - obj_enable_rendering(); + cur_obj_enable_rendering(); if (parent->oAction == PIRANHA_PLANT_ACT_SLEEPING) { /** @@ -84,12 +84,12 @@ void bhv_piranha_plant_bubble_loop(void) { o->oAction++; // move to PIRANHA_PLANT_BUBBLE_ACT_BURST } } else { - obj_disable_rendering(); + cur_obj_disable_rendering(); } break; case PIRANHA_PLANT_BUBBLE_ACT_BURST: - obj_disable_rendering(); + cur_obj_disable_rendering(); scale = 0; // Spawn 15 small bubbles to make it look like this bubble burst. @@ -101,5 +101,5 @@ void bhv_piranha_plant_bubble_loop(void) { scale = 1.0f; // this has no effect; it is set to 0 in the idle state break; } - obj_scale(scale); + cur_obj_scale(scale); } diff --git a/src/game/behaviors/piranha_plant.inc.c b/src/game/behaviors/piranha_plant.inc.c index 4fe0f18f..e8abe089 100644 --- a/src/game/behaviors/piranha_plant.inc.c +++ b/src/game/behaviors/piranha_plant.inc.c @@ -10,8 +10,8 @@ * directly to the sleeping state. */ void piranha_plant_act_idle(void) { - obj_become_intangible(); - set_obj_animation_and_sound_state(8); + cur_obj_become_intangible(); + cur_obj_init_animation_with_sound(8); #if BUGFIX_PIRANHA_PLANT_STATE_RESET /** @@ -19,7 +19,7 @@ void piranha_plant_act_idle(void) { * with a scale below 1, which would cause it to appear shrunken. See * documentation for, and calls to, piranha_plant_reset_when_far(). */ - obj_scale(1); + cur_obj_scale(1); #endif if (o->oDistanceToMario < 1200.0f) { @@ -41,7 +41,7 @@ s32 piranha_plant_check_interactions(void) { if (o->oInteractStatus & INT_STATUS_INTERACTED) { func_80321080(50); if (o->oInteractStatus & INT_STATUS_WAS_ATTACKED) { - PlaySound2(SOUND_OBJ2_PIRANHA_PLANT_DYING); + cur_obj_play_sound_2(SOUND_OBJ2_PIRANHA_PLANT_DYING); // Spawn 20 intangible purple particles that quickly dissipate. for (i = 0; i < 20; i++) { @@ -67,13 +67,13 @@ s32 piranha_plant_check_interactions(void) { * to piranha_plant_check_interactions(). */ void piranha_plant_act_sleeping(void) { - obj_become_tangible(); + cur_obj_become_tangible(); o->oInteractType = INTERACT_BOUNCE_TOP; - set_obj_animation_and_sound_state(8); + cur_obj_init_animation_with_sound(8); - obj_set_hitbox_radius_and_height(250.0f, 200.0f); - obj_set_hurtbox_radius_and_height(150.0f, 100.0f); + cur_obj_set_hitbox_radius_and_height(250.0f, 200.0f); + cur_obj_set_hurtbox_radius_and_height(150.0f, 100.0f); #if BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE /** @@ -150,10 +150,10 @@ void piranha_plant_reset_when_far(void) { * state. */ void piranha_plant_attacked(void) { - obj_become_intangible(); - set_obj_animation_and_sound_state(2); + cur_obj_become_intangible(); + cur_obj_init_animation_with_sound(2); o->oInteractStatus = 0; - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) o->oAction = PIRANHA_PLANT_ACT_SHRINK_AND_DIE; #if BUGFIX_PIRANHA_PLANT_STATE_RESET piranha_plant_reset_when_far(); // see this function's comment @@ -166,7 +166,7 @@ void piranha_plant_attacked(void) { */ void piranha_plant_act_shrink_and_die(void) { if (o->oTimer == 0) { - PlaySound2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); + cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); o->oPiranhaPlantScale = 1.0f; } @@ -181,11 +181,11 @@ void piranha_plant_act_shrink_and_die(void) { o->oPiranhaPlantScale = o->oPiranhaPlantScale - 0.04; } else { o->oPiranhaPlantScale = 0.0f; - obj_spawn_loot_blue_coin(); + cur_obj_spawn_loot_blue_coin(); o->oAction = PIRANHA_PLANT_ACT_WAIT_TO_RESPAWN; } - obj_scale(o->oPiranhaPlantScale); + cur_obj_scale(o->oPiranhaPlantScale); #if BUGFIX_PIRANHA_PLANT_STATE_RESET piranha_plant_reset_when_far(); // see this function's comment @@ -206,7 +206,7 @@ void piranha_plant_act_wait_to_respawn(void) { * grown, set it to the idle state. */ void piranha_plant_act_respawn(void) { - set_obj_animation_and_sound_state(8); + cur_obj_init_animation_with_sound(8); if (o->oTimer == 0) { o->oPiranhaPlantScale = 0.3f; } @@ -224,7 +224,7 @@ void piranha_plant_act_respawn(void) { o->oPiranhaPlantScale = 1.0f; o->oAction = PIRANHA_PLANT_ACT_IDLE; } - obj_scale(o->oPiranhaPlantScale); + cur_obj_scale(o->oPiranhaPlantScale); } /** @@ -242,25 +242,25 @@ static s8 sPiranhaPlantBiteSoundFrames[] = { 12, 28, 50, 64, -1 }; void piranha_plant_act_biting(void) { s32 frame = o->header.gfx.unk38.animFrame; - obj_become_tangible(); + cur_obj_become_tangible(); o->oInteractType = INTERACT_DAMAGE; - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); - obj_set_hitbox_radius_and_height(150.0f, 100.0f); - obj_set_hurtbox_radius_and_height(150.0f, 100.0f); + cur_obj_set_hitbox_radius_and_height(150.0f, 100.0f); + cur_obj_set_hurtbox_radius_and_height(150.0f, 100.0f); // Play a bite sound effect on certain frames. - if (item_in_array(frame, sPiranhaPlantBiteSoundFrames)) { - PlaySound2(SOUND_OBJ2_PIRANHA_PLANT_BITE); + if (is_item_in_array(frame, sPiranhaPlantBiteSoundFrames)) { + cur_obj_play_sound_2(SOUND_OBJ2_PIRANHA_PLANT_BITE); } // Move to face the player. o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x400); if (o->oDistanceToMario > 500.0f) - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) o->oAction = PIRANHA_PLANT_ACT_STOPPED_BITING; // If the player is wearing the Metal Cap and interacts with the Piranha @@ -290,10 +290,10 @@ s32 mario_moving_fast_enough_to_make_piranha_plant_bite(void) { * Plant start biting again. Otherwise, make it go back to sleep. */ void piranha_plant_act_stopped_biting(void) { - obj_become_intangible(); - set_obj_animation_and_sound_state(6); + cur_obj_become_intangible(); + cur_obj_init_animation_with_sound(6); - if (func_8029F788()) + if (cur_obj_check_if_near_animation_end()) o->oAction = PIRANHA_PLANT_ACT_SLEEPING; /** @@ -327,14 +327,14 @@ void (*TablePiranhaPlantActions[])(void) = { * Main loop for bhvPiranhaPlant. */ void bhv_piranha_plant_loop(void) { - obj_call_action_function(TablePiranhaPlantActions); + cur_obj_call_action_function(TablePiranhaPlantActions); // In WF, hide all Piranha Plants once high enough up. if (gCurrLevelNum == LEVEL_WF) { if (gMarioObject->oPosY > 3400.0f) - obj_hide(); + cur_obj_hide(); else - obj_unhide(); + cur_obj_unhide(); } o->oInteractStatus = 0; } diff --git a/src/game/behaviors/platform_on_track.inc.c b/src/game/behaviors/platform_on_track.inc.c index 0d9c1de3..2d549bd4 100644 --- a/src/game/behaviors/platform_on_track.inc.c +++ b/src/game/behaviors/platform_on_track.inc.c @@ -40,7 +40,7 @@ static void platform_on_track_reset(void) { static void platform_on_track_mario_not_on_platform(void) { if (!((u16)(o->oBehParams >> 16) & PLATFORM_ON_TRACK_BP_DONT_DISAPPEAR)) { // Once oTimer reaches 150, blink 40 times - if (obj_wait_then_blink(150, 40)) { + if (cur_obj_wait_then_blink(150, 40)) { platform_on_track_reset(); o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE; } @@ -129,9 +129,9 @@ static void platform_on_track_act_move_along_track(void) { s16 initialAngle; if (!o->oPlatformOnTrackIsNotSkiLift) { - PlaySound(SOUND_ENV_ELEVATOR3); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR3); } else if (!o->oPlatformOnTrackIsNotHMC) { - PlaySound(SOUND_ENV_ELEVATOR1); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1); } // Fall after reaching the last waypoint if desired @@ -143,7 +143,7 @@ static void platform_on_track_act_move_along_track(void) { if (o->oPlatformOnTrackPrevWaypointFlags != 0 && !o->oPlatformOnTrackIsNotSkiLift) { if (o->oPlatformOnTrackPrevWaypointFlags == WAYPOINT_FLAGS_END || o->oPlatformOnTrackPrevWaypointFlags == WAYPOINT_FLAGS_PLATFORM_ON_TRACK_PAUSE) { - PlaySound2(SOUND_GENERAL_UNKNOWN4_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN4_LOWPRIO); o->oForwardVel = 0.0f; if (o->oPlatformOnTrackPrevWaypointFlags == WAYPOINT_FLAGS_END) { @@ -228,7 +228,7 @@ static void platform_on_track_act_pause_briefly(void) { * and eventually blinking and disappearing. */ static void platform_on_track_act_fall(void) { - obj_move_using_vel_and_gravity(); + cur_obj_move_using_vel_and_gravity(); if (gMarioObject->platform != o) { platform_on_track_mario_not_on_platform(); @@ -306,6 +306,6 @@ void bhv_track_ball_update(void) { s16 relativeIndex = (s16) o->oBehParams2ndByte - (s16) o->parentObj->oPlatformOnTrackBaseBallIndex - 1; if (relativeIndex < 1 || relativeIndex > 5) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } diff --git a/src/game/behaviors/pokey.inc.c b/src/game/behaviors/pokey.inc.c index beb284e2..df5d11f5 100644 --- a/src/game/behaviors/pokey.inc.c +++ b/src/game/behaviors/pokey.inc.c @@ -47,9 +47,9 @@ void bhv_pokey_body_part_update(void) { if (obj_update_standard_actions(3.0f)) { if (o->parentObj->oAction == POKEY_ACT_UNLOAD_PARTS) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); obj_update_blinking(&o->oPokeyBodyPartBlinkTimer, 30, 60, 4); // If the body part above us is dead, then decrease body part index @@ -78,7 +78,7 @@ void bhv_pokey_body_part_update(void) { else if (o->parentObj->oPokeyBottomBodyPartSize < 1.0f && o->oBehParams2ndByte + 1 == o->parentObj->oPokeyNumAliveBodyParts) { approach_f32_ptr(&o->parentObj->oPokeyBottomBodyPartSize, 1.0f, 0.1f); - obj_scale(o->parentObj->oPokeyBottomBodyPartSize * 3.0f); + cur_obj_scale(o->parentObj->oPokeyBottomBodyPartSize * 3.0f); } //! Pausing causes jumps in offset angle @@ -120,7 +120,7 @@ void bhv_pokey_body_part_update(void) { o->parentObj->oPokeyAliveBodyPartFlags = o->parentObj->oPokeyAliveBodyPartFlags & ((1 << o->oBehParams2ndByte) ^ ~0); } else if (o->parentObj->oPokeyHeadWasKilled) { - obj_become_intangible(); + cur_obj_become_intangible(); if (--o->oPokeyBodyPartDeathDelayAfterHeadKilled < 0) { o->parentObj->oPokeyNumAliveBodyParts -= 1; @@ -133,7 +133,7 @@ void bhv_pokey_body_part_update(void) { o->oPokeyBodyPartDeathDelayAfterHeadKilled = (o->oBehParams2ndByte << 2) + 20; } - obj_move_standard(-78); + cur_obj_move_standard(-78); } } else { o->oAnimState = 1; @@ -160,7 +160,7 @@ static void pokey_act_uninitialized(void) { bodyPart = spawn_object_relative(i, 0, -i * 120 + 480, 0, o, partModel, bhvPokeyBodyPart); if (bodyPart != NULL) { - scale_object(bodyPart, 3.0f); + obj_scale(bodyPart, 3.0f); } partModel = MODEL_POKEY_BODY_PART; @@ -184,13 +184,13 @@ static void pokey_act_wander(void) { struct Object *bodyPart; if (o->oPokeyNumAliveBodyParts == 0) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else if (o->oDistanceToMario > 2500.0f) { o->oAction = POKEY_ACT_UNLOAD_PARTS; o->oForwardVel = 0.0f; } else { treat_far_home_as_mario(1000.0f); - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->oPokeyHeadWasKilled) { o->oForwardVel = 0.0f; @@ -213,7 +213,7 @@ static void pokey_act_wander(void) { o->oPokeyNumAliveBodyParts += 1; o->oPokeyBottomBodyPartSize = 0.0f; - scale_object(bodyPart, 0.0f); + obj_scale(bodyPart, 0.0f); } o->oTimer = 0; @@ -266,11 +266,11 @@ static void pokey_act_wander(void) { } } - obj_rotate_yaw_toward(o->oPokeyTargetYaw, 0x200); + cur_obj_rotate_yaw_toward(o->oPokeyTargetYaw, 0x200); } } - obj_move_standard(-78); + cur_obj_move_standard(-78); } } @@ -281,7 +281,7 @@ static void pokey_act_wander(void) { */ static void pokey_act_unload_parts(void) { o->oAction = POKEY_ACT_UNINITIALIZED; - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); } /** diff --git a/src/game/behaviors/pole.inc.c b/src/game/behaviors/pole.inc.c index c8712435..d727751c 100644 --- a/src/game/behaviors/pole.inc.c +++ b/src/game/behaviors/pole.inc.c @@ -21,7 +21,7 @@ void bhv_pole_init(void) { } /** - * Main loop for bhvGiantPole. It is equivalent to BehClimbDetectLoop() except + * Main loop for bhvGiantPole. It is equivalent to bhv_pole_base_loop() except * for the fact that it spawns a yellow sphere at the top of the pole on the * first frame. */ @@ -31,5 +31,5 @@ void bhv_giant_pole_loop(void) { topBall = spawn_object(o, MODEL_YELLOW_SPHERE, bhvYellowBall); topBall->oPosY += o->hitboxHeight + 50.0f; } - BehClimbDetectLoop(); + bhv_pole_base_loop(); } diff --git a/src/game/behaviors/pole_base.inc.c b/src/game/behaviors/pole_base.inc.c index b0492a9b..3ae63fef 100644 --- a/src/game/behaviors/pole_base.inc.c +++ b/src/game/behaviors/pole_base.inc.c @@ -1,9 +1,9 @@ // pole_base.inc.c -void BehClimbDetectLoop(void) { +void bhv_pole_base_loop(void) { if (o->oPosY - 10.0f < gMarioObject->oPosY && gMarioObject->oPosY < o->oPosY + o->hitboxHeight + 30.0f) if (o->oTimer > 10) if (!(gMarioStates->action & MARIO_PUNCHING)) - obj_push_mario_away(70.0f); + cur_obj_push_mario_away(70.0f); } diff --git a/src/game/behaviors/purple_switch.inc.c b/src/game/behaviors/purple_switch.inc.c index 0a1c4643..f1924694 100644 --- a/src/game/behaviors/purple_switch.inc.c +++ b/src/game/behaviors/purple_switch.inc.c @@ -14,8 +14,8 @@ void bhv_purple_switch_loop(void) { * switch's middle section, transition to the pressed state. */ case PURPLE_SWITCH_IDLE: - obj_set_model(MODEL_PURPLE_SWITCH); - obj_scale(1.5f); + cur_obj_set_model(MODEL_PURPLE_SWITCH); + cur_obj_scale(1.5f); if (gMarioObject->platform == o && !(gMarioStates->action & MARIO_UNKNOWN_13)) { if (lateral_dist_between_objects(o, gMarioObject) < 127.5) { o->oAction = PURPLE_SWITCH_PRESSED; @@ -27,11 +27,11 @@ void bhv_purple_switch_loop(void) { * Immediately transition to the ticking state. */ case PURPLE_SWITCH_PRESSED: - func_802A3398(2, 3, 1.5f, 0.2f); + cur_obj_scale_over_time(2, 3, 1.5f, 0.2f); if (o->oTimer == 3) { - PlaySound2(SOUND_GENERAL2_PURPLE_SWITCH); + cur_obj_play_sound_2(SOUND_GENERAL2_PURPLE_SWITCH); o->oAction = PURPLE_SWITCH_TICKING; - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_shake_screen(SHAKE_POS_SMALL); } break; /** @@ -59,7 +59,7 @@ void bhv_purple_switch_loop(void) { * idle state. */ case PURPLE_SWITCH_UNPRESSED: - func_802A3398(2, 3, 0.2f, 1.5f); + cur_obj_scale_over_time(2, 3, 0.2f, 1.5f); if (o->oTimer == 3) { o->oAction = PURPLE_SWITCH_IDLE; } @@ -70,7 +70,7 @@ void bhv_purple_switch_loop(void) { * unpressed state. */ case PURPLE_SWITCH_WAIT_FOR_MARIO_TO_GET_OFF: - if (!obj_is_mario_on_platform()) { + if (!cur_obj_is_mario_on_platform()) { o->oAction = PURPLE_SWITCH_UNPRESSED; } break; diff --git a/src/game/behaviors/pyramid_elevator.inc.c b/src/game/behaviors/pyramid_elevator.inc.c index 5be4b5a2..4754fc5d 100644 --- a/src/game/behaviors/pyramid_elevator.inc.c +++ b/src/game/behaviors/pyramid_elevator.inc.c @@ -74,8 +74,8 @@ void bhv_pyramid_elevator_loop(void) { void bhv_pyramid_elevator_trajectory_marker_ball_loop(void) { struct Object *elevator; - obj_scale(0.15f); - elevator = obj_nearest_object_with_behavior(bhvPyramidElevator); + cur_obj_scale(0.15f); + elevator = cur_obj_nearest_object_with_behavior(bhvPyramidElevator); if (elevator != NULL) { if (elevator->oAction != PYRAMID_ELEVATOR_IDLE) { diff --git a/src/game/behaviors/pyramid_top.inc.c b/src/game/behaviors/pyramid_top.inc.c index 1907124f..27314573 100644 --- a/src/game/behaviors/pyramid_top.inc.c +++ b/src/game/behaviors/pyramid_top.inc.c @@ -72,7 +72,7 @@ void bhv_pyramid_top_explode(void) { struct Object *pyramidFragment; s16 i; - func_802AA618(0, 0, 690); + spawn_mist_particles_variable(0, 0, 690); // Generate 30 pyramid fragments with random properties. for (i = 0; i < 30; i++) { @@ -101,7 +101,7 @@ void bhv_pyramid_top_loop(void) { case PYRAMID_TOP_ACT_SPINNING: if (o->oTimer == 0) { - PlaySound2(SOUND_GENERAL2_PYRAMID_TOP_SPIN); + cur_obj_play_sound_2(SOUND_GENERAL2_PYRAMID_TOP_SPIN); } bhv_pyramid_top_spinning(); @@ -124,7 +124,7 @@ void bhv_pyramid_top_fragment_init(void) { o->oFriction = 0.999f; o->oBuoyancy = 2.0f; o->oAnimState = 3; - obj_scale(o->oPyramidTopFragmentsScale); + cur_obj_scale(o->oPyramidTopFragmentsScale); } /** @@ -146,8 +146,8 @@ void bhv_pyramid_top_fragment_loop(void) { * top's total count of touched detectors, and deactivate the detector. */ void bhv_pyramid_pillar_touch_detector_loop(void) { - obj_become_tangible(); - if (are_objects_collided(o, gMarioObject) == 1) { + cur_obj_become_tangible(); + if (obj_check_if_collided_with_object(o, gMarioObject) == 1) { // Increase the pyramid top's count of pillars touched. o->parentObj->oPyramidTopPillarsTouched++; o->activeFlags = 0; diff --git a/src/game/behaviors/racing_penguin.inc.c b/src/game/behaviors/racing_penguin.inc.c index 85f4a3ab..2939642f 100644 --- a/src/game/behaviors/racing_penguin.inc.c +++ b/src/game/behaviors/racing_penguin.inc.c @@ -11,7 +11,7 @@ static struct RacingPenguinData sRacingPenguinData[] = { void bhv_racing_penguin_init(void) { if (gMarioState->numStars == 120) { - obj_scale(8.0f); + cur_obj_scale(8.0f); o->header.gfx.scale[1] = 5.0f; o->oBehParams2ndByte = 1; } @@ -19,7 +19,7 @@ void bhv_racing_penguin_init(void) { static void racing_penguin_act_wait_for_mario(void) { if (o->oTimer > o->oRacingPenguinInitTextCooldown && o->oPosY - gMarioObject->oPosY <= 0.0f - && obj_is_mario_in_range_and_ready_to_speak(400.0f, 400.0f)) { + && cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) { o->oAction = RACING_PENGUIN_ACT_SHOW_INIT_TEXT; } } @@ -30,10 +30,10 @@ static void racing_penguin_act_show_init_text(void) { response = obj_update_race_proposition_dialog(sRacingPenguinData[o->oBehParams2ndByte].text); if (response == 1) { - child = obj_nearest_object_with_behavior(bhvPenguinRaceFinishLine); + child = cur_obj_nearest_object_with_behavior(bhvPenguinRaceFinishLine); child->parentObj = o; - child = obj_nearest_object_with_behavior(bhvPenguinRaceShortcutCheck); + child = cur_obj_nearest_object_with_behavior(bhvPenguinRaceShortcutCheck); child->parentObj = o; o->oPathedStartWaypoint = o->oPathedPrevWaypoint = @@ -55,21 +55,21 @@ static void racing_penguin_act_prepare_for_race(void) { o->oForwardVel = 20.0f; } - obj_rotate_yaw_toward(0x4000, 2500); + cur_obj_rotate_yaw_toward(0x4000, 2500); } static void racing_penguin_act_race(void) { f32 targetSpeed; f32 minSpeed; - if (obj_follow_path(0) == PATH_REACHED_END) { + if (cur_obj_follow_path(0) == PATH_REACHED_END) { o->oRacingPenguinReachedBottom = TRUE; o->oAction = RACING_PENGUIN_ACT_FINISH_RACE; } else { targetSpeed = o->oPosY - gMarioObject->oPosY; minSpeed = 70.0f; - PlaySound(SOUND_AIR_ROUGH_SLIDE); + cur_obj_play_sound_1(SOUND_AIR_ROUGH_SLIDE); if (targetSpeed < 100.0f || (o->oPathedPrevWaypointFlags & WAYPOINT_MASK_00FF) >= 35) { if ((o->oPathedPrevWaypointFlags & WAYPOINT_MASK_00FF) >= 35) { @@ -85,10 +85,10 @@ static void racing_penguin_act_race(void) { clamp_f32(&targetSpeed, minSpeed, 150.0f); obj_forward_vel_approach(targetSpeed, 0.4f); - set_obj_animation_and_sound_state(1); - obj_rotate_yaw_toward(o->oPathedTargetYaw, (s32)(15.0f * o->oForwardVel)); + cur_obj_init_animation_with_sound(1); + cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, (s32)(15.0f * o->oForwardVel)); - if (func_8029F828() && (o->oMoveFlags & 0x00000003)) { + if (cur_obj_check_if_at_animation_end() && (o->oMoveFlags & 0x00000003)) { spawn_object_relative_with_scale(0, 0, -100, 0, 4.0f, o, MODEL_SMOKE, bhvWhitePuffSmoke2); } } @@ -105,7 +105,7 @@ static void racing_penguin_act_race(void) { static void racing_penguin_act_finish_race(void) { if (o->oForwardVel != 0.0f) { if (o->oTimer > 5 && (o->oMoveFlags & 0x00000200)) { - PlaySound2(SOUND_OBJ_POUNDING_LOUD); + cur_obj_play_sound_2(SOUND_OBJ_POUNDING_LOUD); set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ); o->oForwardVel = 0.0f; } @@ -118,11 +118,11 @@ static void racing_penguin_act_show_final_text(void) { s32 textResult; if (o->oRacingPenguinFinalTextbox == 0) { - if (obj_rotate_yaw_toward(0, 200)) { - set_obj_animation_and_sound_state(3); + if (cur_obj_rotate_yaw_toward(0, 200)) { + cur_obj_init_animation_with_sound(3); o->oForwardVel = 0.0f; - if (obj_is_mario_in_range_and_ready_to_speak(400.0f, 400.0f)) { + if (cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) { if (o->oRacingPenguinMarioWon) { if (o->oRacingPenguinMarioCheated) { o->oRacingPenguinFinalTextbox = DIALOG_132; @@ -135,7 +135,7 @@ static void racing_penguin_act_show_final_text(void) { } } } else { - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); #ifndef VERSION_JP play_penguin_walking_sound(1); @@ -144,22 +144,22 @@ static void racing_penguin_act_show_final_text(void) { o->oForwardVel = 4.0f; } } else if (o->oRacingPenguinFinalTextbox > 0) { - if ((textResult = obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, o->oRacingPenguinFinalTextbox)) != 0) { + if ((textResult = cur_obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, o->oRacingPenguinFinalTextbox)) != 0) { o->oRacingPenguinFinalTextbox = -1; o->oTimer = 0; } } else if (o->oRacingPenguinMarioWon) { #ifdef VERSION_JP - create_star(-7339.0f, -5700.0f, -6774.0f); + spawn_default_star(-7339.0f, -5700.0f, -6774.0f); #else - obj_spawn_star_at_y_offset(-7339.0f, -5700.0f, -6774.0f, 200.0f); + cur_obj_spawn_star_at_y_offset(-7339.0f, -5700.0f, -6774.0f, 200.0f); #endif o->oRacingPenguinMarioWon = FALSE; } } void bhv_racing_penguin_update(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case RACING_PENGUIN_ACT_WAIT_FOR_MARIO: @@ -182,9 +182,9 @@ void bhv_racing_penguin_update(void) { break; } - obj_move_standard(78); - obj_align_gfx_with_floor(); - obj_push_mario_away_from_cylinder(sRacingPenguinData[o->oBehParams2ndByte].radius, + cur_obj_move_standard(78); + cur_obj_align_gfx_with_floor(); + cur_obj_push_mario_away_from_cylinder(sRacingPenguinData[o->oBehParams2ndByte].radius, sRacingPenguinData[o->oBehParams2ndByte].height); } diff --git a/src/game/behaviors/recovery_heart.inc.c b/src/game/behaviors/recovery_heart.inc.c index d7305856..6bebfaa3 100644 --- a/src/game/behaviors/recovery_heart.inc.c +++ b/src/game/behaviors/recovery_heart.inc.c @@ -12,10 +12,10 @@ struct ObjectHitbox sRecoveryHeartHitbox = { }; void bhv_recovery_heart_loop(void) { - set_object_hitbox(o, &sRecoveryHeartHitbox); - if (are_objects_collided(o, gMarioObject)) { + obj_set_hitbox(o, &sRecoveryHeartHitbox); + if (obj_check_if_collided_with_object(o, gMarioObject)) { if (o->oSpinningHeartPlayedSound == 0) { - PlaySound2(SOUND_GENERAL_HEART_SPIN); + cur_obj_play_sound_2(SOUND_GENERAL_HEART_SPIN); o->oSpinningHeartPlayedSound += 1; } diff --git a/src/game/behaviors/red_coin.inc.c b/src/game/behaviors/red_coin.inc.c index 02f3c578..1e5c8584 100644 --- a/src/game/behaviors/red_coin.inc.c +++ b/src/game/behaviors/red_coin.inc.c @@ -30,11 +30,11 @@ void bhv_red_coin_init(void) { struct Object *hiddenRedCoinStar; // Set the red coins to have a parent of the closest red coin star. - hiddenRedCoinStar = obj_nearest_object_with_behavior(bhvHiddenRedCoinStar); + hiddenRedCoinStar = cur_obj_nearest_object_with_behavior(bhvHiddenRedCoinStar); if (hiddenRedCoinStar != NULL) o->parentObj = hiddenRedCoinStar; else { - hiddenRedCoinStar = obj_nearest_object_with_behavior(bhvBowserCourseRedCoinStar); + hiddenRedCoinStar = cur_obj_nearest_object_with_behavior(bhvBowserCourseRedCoinStar); if (hiddenRedCoinStar != NULL) { o->parentObj = hiddenRedCoinStar; } else { @@ -42,7 +42,7 @@ void bhv_red_coin_init(void) { } } - set_object_hitbox(o, &sRedCoinHitbox); + obj_set_hitbox(o, &sRedCoinHitbox); } /** @@ -74,7 +74,7 @@ void bhv_red_coin_loop(void) { #endif } - CoinCollected(); + coin_collected(); // Despawn the coin. o->oInteractStatus = 0; } diff --git a/src/game/behaviors/rolling_log.inc.c b/src/game/behaviors/rolling_log.inc.c index 4d11918c..dd88e552 100644 --- a/src/game/behaviors/rolling_log.inc.c +++ b/src/game/behaviors/rolling_log.inc.c @@ -18,7 +18,7 @@ void bhv_ttm_rolling_log_init(void) { o->oAngleVelPitch = 0; } -void func_802F238C(void) { +void rolling_log_roll_log(void) { f32 sp24; if (gMarioObject->platform == o) { @@ -63,7 +63,7 @@ void bhv_rolling_log_loop(void) { f32 prevX = o->oPosX; f32 prevZ = o->oPosZ; - func_802F238C(); + rolling_log_roll_log(); o->oForwardVel = o->oAngleVelPitch / 0x40; o->oVelX = o->oForwardVel * sins(o->oMoveAngleYaw); @@ -82,11 +82,11 @@ void bhv_rolling_log_loop(void) { o->oFaceAnglePitch += o->oAngleVelPitch; if (absf_2(o->oFaceAnglePitch & 0x1FFF) < 528.0f && o->oAngleVelPitch != 0) { - PlaySound2(SOUND_GENERAL_UNKNOWN1_2); + cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN1_2); } } -void func_802F2820(void) { +void volcano_act_1(void) { o->oRollingLogUnkF4 += 4.0f; o->oAngleVelPitch += o->oRollingLogUnkF4; o->oFaceAnglePitch -= o->oAngleVelPitch; @@ -96,12 +96,12 @@ void func_802F2820(void) { o->oAngleVelPitch = 0; o->oRollingLogUnkF4 = 0; o->oAction = 2; - PlaySound2(SOUND_GENERAL_BIG_POUND); + cur_obj_play_sound_2(SOUND_GENERAL_BIG_POUND); set_camera_shake_from_point(SHAKE_POS_LARGE, o->oPosX, o->oPosY, o->oPosZ); } } -void func_802F2924(void) { +void volcano_act_3(void) { o->oAngleVelPitch = 0x90; o->oFaceAnglePitch += o->oAngleVelPitch; if (o->oFaceAnglePitch > 0) @@ -111,17 +111,17 @@ void func_802F2924(void) { o->oAction = 0; } -void bhvLllVolcanoFallingTrap_loop(void) { +void bhv_volcano_trap_loop(void) { switch (o->oAction) { case 0: if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)) { o->oAction = 1; - PlaySound2(SOUND_GENERAL_QUIET_POUND2); + cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND2); } break; case 1: - func_802F2820(); + volcano_act_1(); break; case 2: @@ -129,13 +129,13 @@ void bhvLllVolcanoFallingTrap_loop(void) { o->oPosY = o->oHomeY + sins(o->oTimer * 0x1000) * 10.0f; } if (o->oTimer == 50) { - PlaySound2(SOUND_GENERAL_UNK45); + cur_obj_play_sound_2(SOUND_GENERAL_UNK45); o->oAction = 3; } break; case 3: - func_802F2924(); + volcano_act_3(); break; } } diff --git a/src/game/behaviors/rotating_platform.inc.c b/src/game/behaviors/rotating_platform.inc.c index 83a12d57..1ad6f73b 100644 --- a/src/game/behaviors/rotating_platform.inc.c +++ b/src/game/behaviors/rotating_platform.inc.c @@ -19,17 +19,17 @@ void bhv_wf_rotating_wooden_platform_loop(void) { o->oAngleVelYaw = 0x100; if (o->oTimer > 126) o->oAction = 0; - PlaySound(SOUND_ENV_ELEVATOR2); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2); } - obj_rotate_face_angle_using_vel(); + cur_obj_rotate_face_angle_using_vel(); } void bhv_rotating_platform_loop(void) { s8 sp1F = o->oBehParams >> 24; if (o->oTimer == 0) { - set_object_collision_data(o, sWFRotatingPlatformData[o->oBehParams2ndByte].collisionData); + obj_set_collision_data(o, sWFRotatingPlatformData[o->oBehParams2ndByte].collisionData); o->oCollisionDistance = sWFRotatingPlatformData[o->oBehParams2ndByte].collisionDistance; - obj_scale(sWFRotatingPlatformData[o->oBehParams2ndByte].scale * 0.01f); + cur_obj_scale(sWFRotatingPlatformData[o->oBehParams2ndByte].scale * 0.01f); } o->oAngleVelYaw = sp1F << 4; o->oFaceAngleYaw += o->oAngleVelYaw; diff --git a/src/game/behaviors/scuttlebug.inc.c b/src/game/behaviors/scuttlebug.inc.c index 198f0045..31de84a5 100644 --- a/src/game/behaviors/scuttlebug.inc.c +++ b/src/game/behaviors/scuttlebug.inc.c @@ -12,7 +12,7 @@ struct ObjectHitbox sScuttlebugHitbox = { /* hurtboxHeight: */ 60, }; -s32 func_802C5A64(s32 *a0) { +s32 update_angle_from_move_flags(s32 *a0) { if (o->oMoveFlags & 0x200) { *a0 = o->oWallAngle; return 1; @@ -26,9 +26,9 @@ s32 func_802C5A64(s32 *a0) { void bhv_scuttlebug_loop(void) { UNUSED s32 unused; f32 sp18; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->oSubAction != 0 - && obj_set_hitbox_and_die_if_attacked(&sScuttlebugHitbox, SOUND_OBJ_DYING_ENEMY1, + && cur_obj_set_hitbox_and_die_if_attacked(&sScuttlebugHitbox, SOUND_OBJ_DYING_ENEMY1, o->oScuttlebugUnkF4)) o->oSubAction = 3; if (o->oSubAction != 1) @@ -36,7 +36,7 @@ void bhv_scuttlebug_loop(void) { switch (o->oSubAction) { case 0: if (o->oMoveFlags & 1) - PlaySound2(SOUND_OBJ_GOOMBA_ALERT); + cur_obj_play_sound_2(SOUND_OBJ_GOOMBA_ALERT); if (o->oMoveFlags & 3) { o->oHomeX = o->oPosX; o->oHomeY = o->oPosY; @@ -46,16 +46,16 @@ void bhv_scuttlebug_loop(void) { break; case 1: o->oForwardVel = 5.0f; - if (obj_lateral_dist_from_mario_to_home() > 1000.0f) - o->oAngleToMario = obj_angle_to_home(); + if (cur_obj_lateral_dist_from_mario_to_home() > 1000.0f) + o->oAngleToMario = cur_obj_angle_to_home(); else { if (o->oScuttlebugUnkF8 == 0) { o->oScuttlebugUnkFC = 0; - o->oAngleToMario = angle_to_object(o, gMarioObject); + o->oAngleToMario = obj_angle_to_object(o, gMarioObject); if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) < 0x800) { o->oScuttlebugUnkF8 = 1; o->oVelY = 20.0f; - PlaySound2(SOUND_OBJ2_SCUTTLEBUG_ALERT); + cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT); } } else if (o->oScuttlebugUnkF8 == 1) { o->oForwardVel = 15.0f; @@ -64,23 +64,23 @@ void bhv_scuttlebug_loop(void) { o->oScuttlebugUnkF8 = 0; } } - if (func_802C5A64(&o->oAngleToMario)) + if (update_angle_from_move_flags(&o->oAngleToMario)) o->oSubAction = 2; - obj_rotate_yaw_toward(o->oAngleToMario, 0x200); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200); break; case 2: o->oForwardVel = 5.0f; if ((s16) o->oMoveAngleYaw == (s16) o->oAngleToMario) o->oSubAction = 1; if (o->oPosY - o->oHomeY < -200.0f) - mark_object_for_deletion(o); - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + obj_mark_for_deletion(o); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); break; case 3: o->oFlags &= ~8; o->oForwardVel = -10.0f; o->oVelY = 30.0f; - PlaySound2(SOUND_OBJ2_SCUTTLEBUG_ALERT); + cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT); o->oSubAction++; break; case 4: @@ -104,23 +104,23 @@ void bhv_scuttlebug_loop(void) { sp18 = 1.0f; else sp18 = 3.0f; - func_8029ED98(0, sp18); + cur_obj_init_animation_with_accel_and_sound(0, sp18); if (o->oMoveFlags & 3) - func_802BE2E8(1, 23, SOUND_OBJ2_SCUTTLEBUG_WALK); + set_obj_anim_with_accel_and_sound(1, 23, SOUND_OBJ2_SCUTTLEBUG_WALK); if (o->parentObj != o) { if (obj_is_hidden(o)) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (o->activeFlags == 0) o->parentObj->oScuttlebugSpawnerUnk88 = 1; } - obj_move_standard(-50); + cur_obj_move_standard(-50); } void bhv_scuttlebug_spawn_loop(void) { struct Object *scuttlebug; if (o->oAction == 0) { if (o->oTimer > 30 && 500.0f < o->oDistanceToMario && o->oDistanceToMario < 1500.0f) { - PlaySound2(SOUND_OBJ2_SCUTTLEBUG_ALERT); + cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT); scuttlebug = spawn_object(o, MODEL_SCUTTLEBUG, bhvScuttlebug); scuttlebug->oScuttlebugUnkF4 = o->oScuttlebugSpawnerUnkF4; scuttlebug->oForwardVel = 30.0f; diff --git a/src/game/behaviors/seesaw_platform.inc.c b/src/game/behaviors/seesaw_platform.inc.c index fcece7cc..71cbba06 100644 --- a/src/game/behaviors/seesaw_platform.inc.c +++ b/src/game/behaviors/seesaw_platform.inc.c @@ -33,7 +33,7 @@ void bhv_seesaw_platform_update(void) { o->oFaceAnglePitch += (s32) o->oSeesawPlatformPitchVel; if (absf(o->oSeesawPlatformPitchVel) > 10.0f) { - PlaySound(SOUND_ENV_BOAT_ROCKING1); + cur_obj_play_sound_1(SOUND_ENV_BOAT_ROCKING1); } if (gMarioObject->platform == o) { diff --git a/src/game/behaviors/shock_wave.inc.c b/src/game/behaviors/shock_wave.inc.c index 70a492e9..e40c7eff 100644 --- a/src/game/behaviors/shock_wave.inc.c +++ b/src/game/behaviors/shock_wave.inc.c @@ -6,13 +6,13 @@ void bhv_bowser_shock_wave_loop(void) { f32 sp2C, sp28, sp24, sp20; s16 sp1E = 70; o->oBowserShockWaveUnkF4 = o->oTimer * 10; - obj_scale(o->oBowserShockWaveUnkF4); + cur_obj_scale(o->oBowserShockWaveUnkF4); if (gGlobalTimer % 3) o->oOpacity -= 1; if (o->oTimer > sp1E) o->oOpacity -= 5; if (o->oOpacity <= 0) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (o->oTimer < sp1E && mario_is_in_air_action() == 0) { sp2C = o->oBowserShockWaveUnkF4 * D_8032F420[0]; sp28 = o->oBowserShockWaveUnkF4 * D_8032F420[1]; diff --git a/src/game/behaviors/skeeter.inc.c b/src/game/behaviors/skeeter.inc.c index 7a0cdb71..b0a02296 100644 --- a/src/game/behaviors/skeeter.inc.c +++ b/src/game/behaviors/skeeter.inc.c @@ -27,20 +27,20 @@ static void skeeter_spawn_waves(void) { for (i = 0; i < 4; i++) { spawn_object_relative_with_scale(0, D_80331C38[i].unk00, 0, D_80331C38[i].unk02, 0.8f, o, - MODEL_WATER_WAVES_SURF, bhvSkeeterWave); + MODEL_IDLE_WATER_WAVE, bhvSkeeterWave); } } static void skeeter_act_idle(void) { if (o->oMoveFlags & 0x00000003) { - set_obj_animation_and_sound_state(3); + cur_obj_init_animation_with_sound(3); o->oForwardVel = 0.0f; - if (o->oTimer > o->oSkeeterWaitTime && func_8029F788()) { + if (o->oTimer > o->oSkeeterWaitTime && cur_obj_check_if_near_animation_end()) { o->oAction = SKEETER_ACT_WALK; } } else { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); if (o->oMoveFlags & 0x00000010) { skeeter_spawn_waves(); @@ -49,8 +49,8 @@ static void skeeter_act_idle(void) { 5, 50, 200)) { if (o->oSkeeterWaitTime != 0) { o->oSkeeterWaitTime -= 1; - } else if (func_8029F788()) { - PlaySound2(SOUND_OBJ_WALKING_WATER); + } else if (cur_obj_check_if_near_animation_end()) { + cur_obj_play_sound_2(SOUND_OBJ_WALKING_WATER); o->oAction = SKEETER_ACT_LUNGE; o->oForwardVel = 80.0f; o->oSkeeterUnk1AC = 0; @@ -65,15 +65,15 @@ static void skeeter_act_lunge(void) { o->oAction = SKEETER_ACT_IDLE; } else { skeeter_spawn_waves(); - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); if (o->oMoveFlags & 0x00000200) { - o->oMoveAngleYaw = obj_reflect_move_angle_off_wall(); + o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); o->oForwardVel *= 0.3f; o->oFlags &= ~0x00000008; } - if (obj_forward_vel_approach(0.0f, 0.8f) && func_8029F828()) { + if (obj_forward_vel_approach(0.0f, 0.8f) && cur_obj_check_if_at_animation_end()) { o->oMoveAngleYaw = o->oFaceAngleYaw; if (o->oDistanceToMario >= 25000.0f) { @@ -98,7 +98,7 @@ static void skeeter_act_walk(void) { obj_forward_vel_approach(o->oSkeeterUnkFC, 0.4f); sp24 = 0.12f * o->oForwardVel; - func_8029ED98(2, sp24); + cur_obj_init_animation_with_accel_and_sound(2, sp24); func_802F9378(3, 13, SOUND_OBJ_SKEETER_WALK); if (o->oSkeeterUnkF8 != 0) { @@ -117,7 +117,7 @@ static void skeeter_act_walk(void) { o->oSkeeterUnkFC = 10.0f; if (o->oSkeeterWaitTime != 0) { o->oSkeeterWaitTime -= 1; - } else if (func_8029F788() != 0) { + } else if (cur_obj_check_if_near_animation_end() != 0) { if (RandomU16() & 0x0003) { o->oSkeeterTargetAngle = obj_random_fixed_turn(0x2000); o->oSkeeterWaitTime = random_linear_offset(100, 100); @@ -130,7 +130,7 @@ static void skeeter_act_walk(void) { } } - obj_rotate_yaw_toward(o->oSkeeterTargetAngle, 0x400); + cur_obj_rotate_yaw_toward(o->oSkeeterTargetAngle, 0x400); } } @@ -138,7 +138,7 @@ void bhv_skeeter_update(void) { o->oDeathSound = SOUND_OBJ_SNUFIT_SKEETER_DEATH; treat_far_home_as_mario(1000.0f); - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case SKEETER_ACT_IDLE: @@ -153,14 +153,14 @@ void bhv_skeeter_update(void) { } obj_check_attacks(&sSkeeterHitbox, o->oAction); - obj_move_standard(-78); + cur_obj_move_standard(-78); } void bhv_skeeter_wave_update(void) { if (approach_f32_ptr(&o->header.gfx.scale[0], 0.0f, 0.3f)) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } - obj_scale(o->header.gfx.scale[0]); + cur_obj_scale(o->header.gfx.scale[0]); o->oAnimState = gGlobalTimer / 6; } diff --git a/src/game/behaviors/sl_snowman_wind.inc.c b/src/game/behaviors/sl_snowman_wind.inc.c new file mode 100644 index 00000000..7d84258b --- /dev/null +++ b/src/game/behaviors/sl_snowman_wind.inc.c @@ -0,0 +1,45 @@ +// sl_snowman_wind.c.inc + +void bhv_sl_snowman_wind_loop(void) { + UNUSED s32 unusedVar = 0; + s16 marioAngleFromWindSource; + Vec3f tempPos; + + if (o->oTimer == 0) + o->oSLSnowmanWindOriginalYaw = o->oMoveAngleYaw; + + // Waiting for Mario to approach. + if (o->oSubAction == SL_SNOWMAN_WIND_ACT_IDLE) { + o->oDistanceToMario = 0; + + // Check if Mario is within 1000 units of the center of the bridge, and ready to speak. + vec3f_copy_2(tempPos, &o->oPosX); + obj_set_pos(o, 1100, 3328, 1164); // Position is in the middle of the ice bridge + if (cur_obj_can_mario_activate_textbox(1000.0f, 30.0f, 0x7FFF)) + o->oSubAction++; + vec3f_copy_2(&o->oPosX, tempPos); + + // Mario has come close, begin dialog. + } else if (o->oSubAction == SL_SNOWMAN_WIND_ACT_TALKING) { + if (cur_obj_update_dialog(2, 2, DIALOG_153, 0)) + o->oSubAction++; + + // Blowing, spawn wind particles (SL_SNOWMAN_WIND_ACT_BLOWING) + } else if (o->oDistanceToMario < 1500.0f && absf(gMarioObject->oPosY - o->oHomeY) < 500.0f) { + // Point towards Mario, but only within 0x1500 angle units of the original angle. + if ((marioAngleFromWindSource = o->oAngleToMario - o->oSLSnowmanWindOriginalYaw) > 0) { + if (marioAngleFromWindSource < 0x1500) + o->oMoveAngleYaw = o->oAngleToMario; + else + o->oMoveAngleYaw = o->oSLSnowmanWindOriginalYaw + 0x1500; + } else { + if (marioAngleFromWindSource > -0x1500) + o->oMoveAngleYaw = o->oAngleToMario; + else + o->oMoveAngleYaw = o->oSLSnowmanWindOriginalYaw - 0x1500; + } + // Spawn wind and play wind sound + cur_obj_spawn_strong_wind_particles(12, 3.0f, 0, 0, 0); + cur_obj_play_sound_1(SOUND_AIR_BLOW_WIND); + } +} diff --git a/src/game/behaviors/sl_walking_penguin.inc.c b/src/game/behaviors/sl_walking_penguin.inc.c new file mode 100644 index 00000000..f5b60a8a --- /dev/null +++ b/src/game/behaviors/sl_walking_penguin.inc.c @@ -0,0 +1,115 @@ +// sl_walking_penguin.c.inc + +struct SLWalkingPenguinStep { + s32 stepLength; + s32 anim; + f32 speed; + f32 animSpeed; +}; + +// The penguin follows a preset list of movements while walking forward. +struct SLWalkingPenguinStep sSLWalkingPenguinErraticSteps[] = { + { 60, PENGUIN_ANIM_WALK, 6.0f, 1.0f }, // Walk forwards for 2 seconds + { 30, PENGUIN_ANIM_IDLE, 0.0f, 1.0f }, // Stop for 1 second + { 30, PENGUIN_ANIM_WALK, 12.0f, 2.0f }, // Walk forwards quickly for 1 second + { 30, PENGUIN_ANIM_IDLE, 0.0f, 1.0f }, // Stop for 1 second + { 30, PENGUIN_ANIM_WALK, -6.0f, 1.0f }, // Walk backwards for 1 second + { 30, PENGUIN_ANIM_IDLE, 0.0f, 1.0f }, // Stop for 1 second + { -1, 0, 0.0f, 0.0f } }; // Repeat + + +static s32 sl_walking_penguin_turn(void) { + // Stay still and use walking animation for the turn. + o->oForwardVel = 0.0f; + cur_obj_init_animation_with_accel_and_sound(PENGUIN_ANIM_WALK, 1.0f); + + // Turn around. + o->oAngleVelYaw = 0x400; + o->oMoveAngleYaw += o->oAngleVelYaw; + + if (o->oTimer == 31) + return TRUE; // Finished turning + else + return FALSE; +} + +void bhv_sl_walking_penguin_loop(void) { + f32 adjustedXPos, adjustedZPos; + f32 perpendicularOffset = 100.0f; + + o->oAngleVelYaw = 0; + cur_obj_update_floor_and_walls(); + + switch (o->oAction) { + // Walk erratically across the ice bridge using preset steps. + case SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS: + if (o->oTimer == 0) { + // Initiate variables + o->oSLWalkingPenguinCurStep = 0; + o->oSLWalkingPenguinCurStepTimer = 0; + } + + if (o->oSLWalkingPenguinCurStepTimer < sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].stepLength) + o->oSLWalkingPenguinCurStepTimer++; + else { + // Move to next step + o->oSLWalkingPenguinCurStepTimer = 0; + o->oSLWalkingPenguinCurStep++; + if (sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].stepLength < 0) + // Reached the end of the list, go back to the start + o->oSLWalkingPenguinCurStep = 0; + } + + if (o->oPosX < 300.0f) + o->oAction++; // If reached the end of the bridge, turn around and head back. + else { + // Move and animate the penguin + o->oForwardVel = sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].speed; + + cur_obj_init_animation_with_accel_and_sound( + sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].anim, + sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].animSpeed + ); + } + break; + + // At the end, turn around and prepare to head back across the bridge. + case SL_WALKING_PENGUIN_ACT_TURNING_BACK: + if (sl_walking_penguin_turn()) + o->oAction++; // Finished turning + break; + + // Walk back across the bridge at a constant speed. + case SL_WALKING_PENGUIN_ACT_RETURNING: + // Move and animate the penguin + o->oForwardVel = 12.0f; + cur_obj_init_animation_with_accel_and_sound(PENGUIN_ANIM_WALK, 2.0f); + + if (o->oPosX > 1700.0f) + o->oAction++; // If reached the start of the bridge, turn around. + break; + + // At the start, turn around and prepare to walk erratically across the bridge. + case SL_WALKING_PENGUIN_ACT_TURNING_FORWARDS: + if (sl_walking_penguin_turn()) + o->oAction = SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS; // Finished turning + break; + } + + cur_obj_move_standard(-78); + if (!cur_obj_hide_if_mario_far_away_y(1000.0f)) + play_penguin_walking_sound(PENGUIN_WALK_BIG); + + // Adjust the position to get a point better lined up with the visual model, for stopping the wind. + // The new point is 60 units behind the penguin and 100 units perpedicularly, away from the snowman. + + adjustedXPos = o->oPosX + sins(0xDBB0) * 60.0f; // 0xDBB0 = -51 degrees, the angle the penguin is facing + adjustedZPos = o->oPosZ + coss(0xDBB0) * 60.0f; + adjustedXPos += perpendicularOffset * sins(0x1BB0); // 0x1BB0 = 39 degrees, perpendicular to the penguin + adjustedZPos += perpendicularOffset * coss(0x1BB0); + o->oSLWalkingPenguinWindCollisionXPos = adjustedXPos; + o->oSLWalkingPenguinWindCollisionZPos = adjustedZPos; + + print_debug_bottom_up("x %d", o->oPosX); + print_debug_bottom_up("z %d", o->oPosZ); +} diff --git a/src/game/behaviors/snow_mound.inc.c b/src/game/behaviors/snow_mound.inc.c index ff6faf48..1e9218d7 100644 --- a/src/game/behaviors/snow_mound.inc.c +++ b/src/game/behaviors/snow_mound.inc.c @@ -8,7 +8,7 @@ void bhv_sliding_snow_mound_loop(void) { if (o->oTimer >= 118) o->oAction = 1; - PlaySound(SOUND_ENV_SINK_QUICKSAND); + cur_obj_play_sound_1(SOUND_ENV_SINK_QUICKSAND); break; case 1: diff --git a/src/game/behaviors/snowman.inc.c b/src/game/behaviors/snowman.inc.c index 01008b78..33857d0c 100644 --- a/src/game/behaviors/snowman.inc.c +++ b/src/game/behaviors/snowman.inc.c @@ -27,22 +27,22 @@ void bhv_snowmans_bottom_init(void) { o->oForwardVel = 0; o->oSnowmansBottomUnkF4 = 0.4f; - sp34 = obj_nearest_object_with_behavior(bhvSnowmansHead); + sp34 = cur_obj_nearest_object_with_behavior(bhvSnowmansHead); if (sp34 != NULL) { o->parentObj = sp34; } spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvSnowmansBodyCheckpoint, -402, 461, -2898, 0, 0, 0); } -void func_802EFB2C(void) { - set_object_hitbox(o, &sRollingSphereHitbox); +void set_rolling_sphere_hitbox(void) { + obj_set_hitbox(o, &sRollingSphereHitbox); if ((o->oInteractStatus & INT_STATUS_INTERACTED) != 0) { o->oInteractStatus = 0; } } -void func_802EFB84(f32 f12) { +void adjust_rolling_face_pitch(f32 f12) { o->oFaceAnglePitch += (s16)(o->oForwardVel * (100.0f / f12)); o->oSnowmansBottomUnkF4 += o->oForwardVel * 1e-4; @@ -50,14 +50,14 @@ void func_802EFB84(f32 f12) { o->oSnowmansBottomUnkF4 = 1.0f; } -void func_802EFC44(void) { +void snowmans_bottom_act_1(void) { UNUSED s16 sp26; s32 sp20; UNUSED s16 sp1E; o->oPathedStartWaypoint = segmented_to_virtual(&ccm_seg7_trajectory_snowman); sp26 = object_step_without_floor_orient(); - sp20 = obj_follow_path(sp20); + sp20 = cur_obj_follow_path(sp20); o->oSnowmansBottomUnkF8 = o->oPathedTargetYaw; o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oSnowmansBottomUnkF8, 0x400); @@ -75,7 +75,7 @@ void func_802EFC44(void) { } } -void func_802EFDA0(void) { +void snowmans_bottom_act_2(void) { UNUSED s16 sp26; sp26 = object_step_without_floor_orient(); @@ -84,7 +84,7 @@ void func_802EFDA0(void) { o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oSnowmansBottomUnkF8, 0x400); if (is_point_close_to_object(o, -4230.0f, -1344.0f, 1813.0f, 300)) { - func_802AA618(0, 0, 70.0f); + spawn_mist_particles_variable(0, 0, 70.0f); o->oMoveAngleYaw = atan2s(1813.0f - o->oPosZ, -4230.0f - o->oPosX); o->oVelY = 80.0f; o->oForwardVel = 15.0f; @@ -92,7 +92,7 @@ void func_802EFDA0(void) { o->parentObj->oAction = 2; o->parentObj->oVelY = 100.0f; - PlaySound2(SOUND_OBJ_SNOWMAN_BOUNCE); + cur_obj_play_sound_2(SOUND_OBJ_SNOWMAN_BOUNCE); } if (o->oTimer == 200) { @@ -101,17 +101,17 @@ void func_802EFDA0(void) { } } -void func_802EFF58(void) { +void snowmans_bottom_act_3(void) { UNUSED s16 sp1E; sp1E = object_step_without_floor_orient(); if ((sp1E & 0x09) == 0x09) { o->oAction = 4; - obj_become_intangible(); + cur_obj_become_intangible(); } if ((sp1E & 0x01) != 0) { - func_802AA618(0, 0, 70.0f); + spawn_mist_particles_variable(0, 0, 70.0f); o->oPosX = -4230.0f; o->oPosZ = 1813.0f; o->oForwardVel = 0.0f; @@ -135,29 +135,29 @@ void bhv_snowmans_bottom_loop(void) { break; case 1: - func_802EFC44(); - func_802EFB84(o->oSnowmansBottomUnkF4); - PlaySound(SOUND_ENV_UNKNOWN2); + snowmans_bottom_act_1(); + adjust_rolling_face_pitch(o->oSnowmansBottomUnkF4); + cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2); break; case 2: - func_802EFDA0(); - func_802EFB84(o->oSnowmansBottomUnkF4); - PlaySound(SOUND_ENV_UNKNOWN2); + snowmans_bottom_act_2(); + adjust_rolling_face_pitch(o->oSnowmansBottomUnkF4); + cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2); break; case 3: - func_802EFF58(); + snowmans_bottom_act_3(); break; case 4: - obj_push_mario_away_from_cylinder(210.0f, 550); + cur_obj_push_mario_away_from_cylinder(210.0f, 550); break; } - func_802EFB2C(); + set_rolling_sphere_hitbox(); set_object_visibility(o, 8000); - obj_scale(o->oSnowmansBottomUnkF4); + cur_obj_scale(o->oSnowmansBottomUnkF4); o->oGraphYOffset = o->oSnowmansBottomUnkF4 * 180.0f; } @@ -168,7 +168,7 @@ void bhv_snowmans_head_init(void) { sp37 = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1); sp36 = (o->oBehParams >> 24) & 0xFF; - obj_scale(0.7f); + cur_obj_scale(0.7f); o->oGravity = 5.0f; o->oFriction = 0.999f; @@ -208,21 +208,21 @@ void bhv_snowmans_head_loop(void) { if (o->oPosY < -994.0f) { o->oPosY = -994.0f; o->oAction = 4; - PlaySound2(SOUND_OBJ_SNOWMAN_EXPLODE); + cur_obj_play_sound_2(SOUND_OBJ_SNOWMAN_EXPLODE); play_puzzle_jingle(); } break; case 4: if (trigger_obj_dialog_when_facing(&o->oSnowmansHeadUnkF4, DIALOG_111, 700.0f, 2)) { - func_802A3004(); - create_star(-4700.0f, -1024.0f, 1890.0f); + spawn_mist_particles(); + spawn_default_star(-4700.0f, -1024.0f, 1890.0f); o->oAction = 1; } break; } - obj_push_mario_away_from_cylinder(180.0f, 150.0f); + cur_obj_push_mario_away_from_cylinder(180.0f, 150.0f); } void bhv_snowmans_body_checkpoint_loop(void) { diff --git a/src/game/behaviors/snowman_wind.inc.c b/src/game/behaviors/snowman_wind.inc.c deleted file mode 100644 index fb3d1093..00000000 --- a/src/game/behaviors/snowman_wind.inc.c +++ /dev/null @@ -1,35 +0,0 @@ -// snowman_wind.c.inc - -void bhv_snowman_wind_blowing_loop(void) { - UNUSED s32 sp34; - s16 sp32; - Vec3f pos; - sp34 = 0; - if (o->oTimer == 0) - o->oSnowmanWindBlowingUnkF4 = o->oMoveAngleYaw; - if (o->oSubAction == 0) { - o->oDistanceToMario = 0; - func_802B8F7C(pos, &o->oPosX); - set_object_pos(o, 1100, 3328, 1164); - if (func_802A3FF8(1000.0f, 30.0f, 0x7FFF)) - o->oSubAction++; - func_802B8F7C(&o->oPosX, pos); - } else if (o->oSubAction == 1) { - if (obj_update_dialog(2, 2, DIALOG_153, 0)) - o->oSubAction++; - } else if (o->oDistanceToMario < 1500.0f && absf(gMarioObject->oPosY - o->oHomeY) < 500.0f) { - if ((sp32 = o->oAngleToMario - o->oSnowmanWindBlowingUnkF4) > 0) { - if (sp32 < 0x1500) - o->oMoveAngleYaw = o->oAngleToMario; - else - o->oMoveAngleYaw = o->oSnowmanWindBlowingUnkF4 + 0x1500; - } else { - if (sp32 >= -0x14ff) - o->oMoveAngleYaw = o->oAngleToMario; - else - o->oMoveAngleYaw = o->oSnowmanWindBlowingUnkF4 - 0x1500; - } - func_802C76E0(12, 3.0f, 0, 0, 0); - PlaySound(SOUND_AIR_BLOW_WIND); - } -} diff --git a/src/game/behaviors/snufit.inc.c b/src/game/behaviors/snufit.inc.c index af7c55c3..f3a0c9ef 100644 --- a/src/game/behaviors/snufit.inc.c +++ b/src/game/behaviors/snufit.inc.c @@ -1,4 +1,9 @@ -// snufit.inc.c +/** + * Behavior file for bhvSnufit and bhvSnufitBalls. + * Snufits are present in HMC and CotMC, and are the fly guy + * like enemies that shoot bullets. The balls are the little pellets + * the snufit shoots at Mario. + */ struct ObjectHitbox sSnufitHitbox = { /* interactType: */ INTERACT_HIT_FROM_BELOW, @@ -24,71 +29,100 @@ struct ObjectHitbox sSnufitBulletHitbox = { /* hurtboxHeight: */ 50, }; -Gfx *Geo18_8030D93C(s32 arg0, struct GraphNode *node, UNUSED void *arg2) { - struct Object *sp4; - struct GraphNodeTranslationRotation *sp0; +/** + * This geo function shifts snufit's mask when it shrinks down, + * since the parts move independently. + */ +Gfx *geo_snufit_move_mask(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { + struct Object *obj; + struct GraphNodeTranslationRotation *transNode; - if (arg0 == 1) { - sp4 = (struct Object *) gCurGraphNodeObject; - sp0 = (struct GraphNodeTranslationRotation *) node->next; + if (callContext == GEO_CONTEXT_RENDER) { + obj = (struct Object *) gCurGraphNodeObject; + transNode = (struct GraphNodeTranslationRotation *) node->next; - sp0->translation[0] = sp4->oSnufitUnk1AC; - sp0->translation[1] = sp4->oSnufitUnk1AE; - sp0->translation[2] = sp4->oSnufitUnk1B0; + transNode->translation[0] = obj->oSnufitXOffset; + transNode->translation[1] = obj->oSnufitYOffset; + transNode->translation[2] = obj->oSnufitZOffset; } return NULL; } -Gfx *Geo18_8030D9AC(s32 arg0, struct GraphNode *node, UNUSED void *arg2) { - struct Object *sp4; - struct GraphNodeScale *sp0; +/** + * This function scales the body of snufit, which needs done seperately from its mask. + */ +Gfx *geo_snufit_scale_body(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) { + struct Object *obj; + struct GraphNodeScale *scaleNode; - if (arg0 == 1) { - sp4 = (struct Object *) gCurGraphNodeObject; - sp0 = (struct GraphNodeScale *) node->next; + if (callContext == GEO_CONTEXT_RENDER) { + obj = (struct Object *) gCurGraphNodeObject; + scaleNode = (struct GraphNodeScale *) node->next; - sp0->scale = sp4->oSnufitUnk1B2 / 1000.0f; + scaleNode->scale = obj->oSnufitBodyScale / 1000.0f; } return NULL; } -void snufit_act_0(void) { - s32 sp1C; +/** + * Snufit's idle action. It rotates in a circle until Mario is near, + * then prepares to shoot after a period. + */ +void snufit_act_idle(void) { + s32 marioDist; - sp1C = (s32)(o->oDistanceToMario / 10.0f); - if (o->oTimer > sp1C && o->oDistanceToMario < 800.0f) { - o->oSnufitUnk104 = approach_s16_symmetric(o->oSnufitUnk104, 0, 1500); - o->oSnufitUnk108 = approach_s16_symmetric(o->oSnufitUnk108, 600, 15); + // This line would could cause a crash in certain PU situations, + // if the game would not have already crashed. + marioDist = (s32)(o->oDistanceToMario / 10.0f); + if (o->oTimer > marioDist && o->oDistanceToMario < 800.0f) { + + // Controls an alternating scaling factor in a cos. + o->oSnufitBodyScalePeriod + = approach_s16_symmetric(o->oSnufitBodyScalePeriod, 0, 1500); + o->oSnufitBodyBaseScale + = approach_s16_symmetric(o->oSnufitBodyBaseScale, 600, 15); - if ((s16) o->oSnufitUnk104 == 0 && o->oSnufitUnk108 == 600) { - o->oAction = 1; - o->oSnufitUnk10C = 0; + if ((s16) o->oSnufitBodyScalePeriod == 0 && o->oSnufitBodyBaseScale == 600) { + o->oAction = SNUFIT_ACT_SHOOT; + o->oSnufitBullets = 0; } } else { - o->oSnufitUnk100 += 400; + o->oSnufitCircularPeriod += 400; } } -void snufit_act_1(void) { - o->oSnufitUnk104 = approach_s16_symmetric(o->oSnufitUnk104, -0x8000, 3000); - o->oSnufitUnk108 = approach_s16_symmetric(o->oSnufitUnk108, 0xA7, 20); +/** + * Controls the literal shooting action, spawning three bhvSnufitBalls. + */ +void snufit_act_shoot(void) { + o->oSnufitBodyScalePeriod + = approach_s16_symmetric(o->oSnufitBodyScalePeriod, -0x8000, 3000); + o->oSnufitBodyBaseScale + = approach_s16_symmetric(o->oSnufitBodyBaseScale, 167, 20); - if ((u16) o->oSnufitUnk104 == 0x8000 && o->oSnufitUnk108 == 0xA7) { - o->oAction = 0; - } else if (o->oSnufitUnk10C < 3 && o->oTimer >= 3) { - o->oSnufitUnk10C += 1; - PlaySound2(SOUND_OBJ_SNUFIT_SHOOT); + if ((u16) o->oSnufitBodyScalePeriod == 0x8000 && o->oSnufitBodyBaseScale == 167) { + o->oAction = SNUFIT_ACT_IDLE; + } else if (o->oSnufitBullets < 3 && o->oTimer >= 3) { + o->oSnufitBullets += 1; + cur_obj_play_sound_2(SOUND_OBJ_SNUFIT_SHOOT); spawn_object_relative(0, 0, -20, 40, o, MODEL_BOWLING_BALL, bhvSnufitBalls); - o->oSnufitUnkF4 = -30; + o->oSnufitRecoil = -30; o->oTimer = 0; } } +/** + * Primary loop behavior for snufit. Controls some generic movement + * and the action brain of the object. + */ void bhv_snufit_loop(void) { - if (!(o->activeFlags & 0x0008)) { + // Only update if Mario is in the current room. + if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) { o->oDeathSound = SOUND_OBJ_SNUFIT_SKEETER_DEATH; + + // Face Mario if he is within range. if (o->oDistanceToMario < 800.0f) { obj_turn_pitch_toward_mario(120.0f, 2000); @@ -98,7 +132,7 @@ void bhv_snufit_loop(void) { o->oMoveAnglePitch = -0x2000; } - obj_rotate_yaw_toward(o->oAngleToMario, 2000); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 2000); } else { obj_move_pitch_approach(0, 0x200); o->oMoveAngleYaw += 200; @@ -107,57 +141,75 @@ void bhv_snufit_loop(void) { o->oFaceAnglePitch = o->oMoveAnglePitch; switch (o->oAction) { - case 0: - snufit_act_0(); + case SNUFIT_ACT_IDLE: + snufit_act_idle(); break; - case 1: - snufit_act_1(); + case SNUFIT_ACT_SHOOT: + snufit_act_shoot(); break; } - o->oPosX = o->oHomeX + 100.0f * coss(o->oSnufitUnk100); + // Snufit orbits in a circular motion depending on an internal timer + // and vertically off the global timer. The vertical position can be + // manipulated using pauses since it uses the global timer. + o->oPosX = o->oHomeX + 100.0f * coss(o->oSnufitCircularPeriod); o->oPosY = o->oHomeY + 8.0f * coss(4000 * gGlobalTimer); - o->oPosZ = o->oHomeZ + 100.0f * sins(o->oSnufitUnk100); + o->oPosZ = o->oHomeZ + 100.0f * sins(o->oSnufitCircularPeriod); - o->oSnufitUnk1AE = -0x20; - o->oSnufitUnk1B0 = o->oSnufitUnkF4 + 180; - o->oSnufitUnk1B2 = (s16)(o->oSnufitUnk108 + 666 + o->oSnufitUnk108 * coss(o->oSnufitUnk104)); + o->oSnufitYOffset = -0x20; + o->oSnufitZOffset = o->oSnufitRecoil + 180; + o->oSnufitBodyScale + = (s16)(o->oSnufitBodyBaseScale + 666 + + o->oSnufitBodyBaseScale * coss(o->oSnufitBodyScalePeriod)); - if (o->oSnufitUnk1B2 > 1000) { - o->oSnufitUnkF8 = (o->oSnufitUnk1B2 - 1000) / 1000.0f + 1.0f; - o->oSnufitUnk1B2 = 1000; + if (o->oSnufitBodyScale > 1000) { + o->oSnufitScale = (o->oSnufitBodyScale - 1000) / 1000.0f + 1.0f; + o->oSnufitBodyScale = 1000; } else { - o->oSnufitUnkF8 = 1.0f; + o->oSnufitScale = 1.0f; } - obj_scale(o->oSnufitUnkF8); + cur_obj_scale(o->oSnufitScale); obj_check_attacks(&sSnufitHitbox, o->oAction); } } +/** + * Snufit bullets live to run into stuff and die when they do. + */ void bhv_snufit_balls_loop(void) { - if ((o->activeFlags & 0x0008) || (o->oTimer != 0 && o->oDistanceToMario > 1500.0f)) { - mark_object_for_deletion(o); + // If far from Mario or in a different room, despawn. + if ((o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM) + || (o->oTimer != 0 && o->oDistanceToMario > 1500.0f)) { + obj_mark_for_deletion(o); } + // Gravity =/= 0 after it has hit Mario while metal. if (o->oGravity == 0.0f) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); obj_compute_vel_from_move_pitch(40.0f); if (obj_check_attacks(&sSnufitBulletHitbox, 1)) { + // We hit Mario while he is metal! + // Bounce off, and fall until the first check is true. o->oMoveAngleYaw += 0x8000; o->oForwardVel *= 0.05f; o->oVelY = 30.0f; o->oGravity = -4.0f; - obj_become_intangible(); - } else if (o->oAction == 1 || (o->oMoveFlags & 0x00000203)) { + cur_obj_become_intangible(); + } else if (o->oAction == 1 + || (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_HIT_WALL))) { + // The Snufit shot Mario and has fulfilled its lonely existance. + //! The above check could theoretically be avoided by finding a geometric + //! situation that does not trigger those flags (Water?). If found, + //! this would be a route to hang the game via too many snufit bullets. o->oDeathSound = -1; obj_die_if_health_non_positive(); } - obj_move_standard(78); + cur_obj_move_standard(78); } else { - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } } diff --git a/src/game/behaviors/sound_birds.inc.c b/src/game/behaviors/sound_birds.inc.c index 96cd8d8f..db7ea534 100644 --- a/src/game/behaviors/sound_birds.inc.c +++ b/src/game/behaviors/sound_birds.inc.c @@ -6,15 +6,15 @@ void bhv_birds_sound_loop(void) { switch (o->oBehParams2ndByte) { case 0: - PlaySound(SOUND_OBJ2_BIRD_CHIRP1); + cur_obj_play_sound_1(SOUND_OBJ2_BIRD_CHIRP1); break; case 1: - PlaySound(SOUND_GENERAL2_BIRD_CHIRP2); + cur_obj_play_sound_1(SOUND_GENERAL2_BIRD_CHIRP2); break; case 2: - PlaySound(SOUND_OBJ_BIRD_CHIRP3); + cur_obj_play_sound_1(SOUND_OBJ_BIRD_CHIRP3); break; } } diff --git a/src/game/behaviors/sound_sand.inc.c b/src/game/behaviors/sound_sand.inc.c index 33b52c29..95535b68 100644 --- a/src/game/behaviors/sound_sand.inc.c +++ b/src/game/behaviors/sound_sand.inc.c @@ -4,5 +4,5 @@ void bhv_sand_sound_loop(void) { if (gCamera->mode == CAMERA_MODE_BEHIND_MARIO) return; - PlaySound(SOUND_ENV_MOVINGSAND); + cur_obj_play_sound_1(SOUND_ENV_MOVINGSAND); } diff --git a/src/game/behaviors/sound_volcano.inc.c b/src/game/behaviors/sound_volcano.inc.c index aa21d5a8..a96964da 100644 --- a/src/game/behaviors/sound_volcano.inc.c +++ b/src/game/behaviors/sound_volcano.inc.c @@ -1,5 +1,5 @@ // sound_volcano.inc.c void bhv_volcano_sound_loop(void) { - PlaySound(SOUND_ENV_DRONING1); + cur_obj_play_sound_1(SOUND_ENV_DRONING1); } diff --git a/src/game/behaviors/sound_waterfall.inc.c b/src/game/behaviors/sound_waterfall.inc.c index 89bc08d6..5763ac8b 100644 --- a/src/game/behaviors/sound_waterfall.inc.c +++ b/src/game/behaviors/sound_waterfall.inc.c @@ -1,5 +1,5 @@ // sound_waterfall.inc.c void bhv_waterfall_sound_loop(void) { - PlaySound(SOUND_ENV_WATERFALL2); + cur_obj_play_sound_1(SOUND_ENV_WATERFALL2); } diff --git a/src/game/behaviors/sparkle_spawn.inc.c b/src/game/behaviors/sparkle_spawn.inc.c index 8005a3a9..b5f2a418 100644 --- a/src/game/behaviors/sparkle_spawn.inc.c +++ b/src/game/behaviors/sparkle_spawn.inc.c @@ -8,10 +8,10 @@ void bhv_sparkle_spawn_loop(void) { struct Object *sparkle = try_to_spawn_object(0, 1.0f, o, MODEL_SPARKLES_ANIMATION, bhvSparkle); if (sparkle != NULL) { - translate_object_xyz_random(sparkle, 90.0f); - scale_object_random(sparkle, 1.0f, 0.0f); + obj_translate_xyz_random(sparkle, 90.0f); + obj_scale_random(sparkle, 1.0f, 0.0f); } if (o->oTimer > 1) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } diff --git a/src/game/behaviors/sparkle_spawn_star.inc.c b/src/game/behaviors/sparkle_spawn_star.inc.c index bbde5b18..c444cbba 100644 --- a/src/game/behaviors/sparkle_spawn_star.inc.c +++ b/src/game/behaviors/sparkle_spawn_star.inc.c @@ -17,20 +17,20 @@ void bhv_spawned_star_init(void) { if (!(o->oInteractionSubtype & INT_SUBTYPE_NO_EXIT)) o->oBehParams = o->parentObj->oBehParams; sp24 = (o->oBehParams >> 24) & 0xFF; - if (func_802A377C(sp24) & save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1)) - obj_set_model(MODEL_TRANSPARENT_STAR); - PlaySound2(SOUND_GENERAL2_STAR_APPEARS); + if (bit_shift_left(sp24) & save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1)) + cur_obj_set_model(MODEL_TRANSPARENT_STAR); + cur_obj_play_sound_2(SOUND_GENERAL2_STAR_APPEARS); } -void func_802AA788(void) { - set_object_hitbox(o, &sSparkleSpawnStarHitbox); +void set_sparkle_spawn_star_hitbox(void) { + obj_set_hitbox(o, &sSparkleSpawnStarHitbox); if (o->oInteractStatus & INT_STATUS_INTERACTED) { mark_obj_for_deletion(o); o->oInteractStatus = 0; } } -void func_802AA7EC(void) { +void set_home_to_mario(void) { f32 sp1C; f32 sp18; o->oHomeX = gMarioObject->oPosX; @@ -43,12 +43,12 @@ void func_802AA7EC(void) { o->oForwardVel = sqrtf(sp1C * sp1C + sp18 * sp18) / 23.0f; } -void func_802AA8E4(void) { +void set_y_home_to_pos(void) { o->oForwardVel = 0; o->oHomeY = o->oPosY; } -void func_802AA918(void) { +void slow_star_rotation(void) { if (o->oAngleVelYaw > 0x400) o->oAngleVelYaw -= 0x40; } @@ -61,15 +61,15 @@ void bhv_spawned_star_loop(void) { o->activeFlags |= 0x20; o->oAngleVelYaw = 0x800; if (o->oBehParams2ndByte == 0) - func_802AA7EC(); + set_home_to_mario(); else - func_802AA8E4(); - o->oMoveAngleYaw = obj_angle_to_home(); + set_y_home_to_pos(); + o->oMoveAngleYaw = cur_obj_angle_to_home(); o->oVelY = 50.0f; o->oGravity = -4.0f; - func_802A3004(); + spawn_mist_particles(); } - PlaySound(SOUND_ENV_STAR); + cur_obj_play_sound_1(SOUND_ENV_STAR); spawn_object(o, MODEL_NONE, bhvSparkleSpawn); if (o->oVelY < 0 && o->oPosY < o->oHomeY) { o->oAction++; @@ -102,10 +102,10 @@ void bhv_spawned_star_loop(void) { o->oAction++; } } else { - func_802AA788(); - func_802AA918(); + set_sparkle_spawn_star_hitbox(); + slow_star_rotation(); } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); o->oFaceAngleYaw += o->oAngleVelYaw; o->oInteractStatus = 0; } @@ -114,5 +114,5 @@ void bhv_spawn_star_no_level_exit(u32 sp20) { struct Object *sp1C = spawn_object(o, MODEL_STAR, bhvSpawnedStarNoLevelExit); sp1C->oBehParams = sp20 << 24; sp1C->oInteractionSubtype = INT_SUBTYPE_NO_EXIT; - set_object_angle(sp1C, 0, 0, 0); + obj_set_angle(sp1C, 0, 0, 0); } diff --git a/src/game/behaviors/spawn_star.inc.c b/src/game/behaviors/spawn_star.inc.c index 3054f3f7..80095af9 100644 --- a/src/game/behaviors/spawn_star.inc.c +++ b/src/game/behaviors/spawn_star.inc.c @@ -1,4 +1,4 @@ -// spawn_star.c.inc +// spawn_default_star.c.inc static struct ObjectHitbox sCollectStarHitbox = { /* interactType: */ INTERACT_STAR_OR_KEY, @@ -24,7 +24,7 @@ void bhv_collect_star_init(void) { o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR]; } - set_object_hitbox(o, &sCollectStarHitbox); + obj_set_hitbox(o, &sCollectStarHitbox); } void bhv_collect_star_loop(void) { @@ -49,7 +49,7 @@ void bhv_star_spawn_init(void) { set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS); o->activeFlags |= 0x20; - obj_become_intangible(); + cur_obj_become_intangible(); } void bhv_star_spawn_loop(void) { @@ -66,7 +66,7 @@ void bhv_star_spawn_loop(void) { o->oPosY = o->oStarSpawnUnkFC + sins((o->oTimer * 0x8000) / 30) * 400.0f; o->oFaceAngleYaw += 0x1000; spawn_object(o, MODEL_NONE, bhvSparkleSpawn); - PlaySound(SOUND_ENV_STAR); + cur_obj_play_sound_1(SOUND_ENV_STAR); if (o->oTimer == 30) { o->oAction = 2; o->oForwardVel = 0; @@ -83,11 +83,11 @@ void bhv_star_spawn_loop(void) { spawn_object(o, MODEL_NONE, bhvSparkleSpawn); obj_move_xyz_using_fvel_and_yaw(o); o->oFaceAngleYaw = o->oFaceAngleYaw - o->oTimer * 0x10 + 0x1000; - PlaySound(SOUND_ENV_STAR); + cur_obj_play_sound_1(SOUND_ENV_STAR); if (o->oPosY < o->oHomeY) { - PlaySound2(SOUND_GENERAL_STAR_APPEARS); - obj_become_tangible(); + cur_obj_play_sound_2(SOUND_GENERAL_STAR_APPEARS); + cur_obj_become_tangible(); o->oPosY = o->oHomeY; o->oAction = 3; } @@ -109,7 +109,7 @@ void bhv_star_spawn_loop(void) { } } -struct Object *func_802F1A50(struct Object *sp30, f32 sp34, f32 sp38, f32 sp3C) { +struct Object *spawn_star(struct Object *sp30, f32 sp34, f32 sp38, f32 sp3C) { sp30 = spawn_object_abs_with_rot(o, 0, MODEL_STAR, bhvStarSpawnCoordinates, o->oPosX, o->oPosY, o->oPosZ, 0, 0, 0); sp30->oBehParams = o->oBehParams; @@ -121,21 +121,21 @@ struct Object *func_802F1A50(struct Object *sp30, f32 sp34, f32 sp38, f32 sp3C) return sp30; } -void create_star(f32 sp20, f32 sp24, f32 sp28) { +void spawn_default_star(f32 sp20, f32 sp24, f32 sp28) { struct Object *sp1C; - sp1C = func_802F1A50(sp1C, sp20, sp24, sp28); + sp1C = spawn_star(sp1C, sp20, sp24, sp28); sp1C->oBehParams2ndByte = 0; } -void func_802F1B84(f32 sp20, f32 sp24, f32 sp28) { +void spawn_red_coin_cutscene_star(f32 sp20, f32 sp24, f32 sp28) { struct Object *sp1C; - sp1C = func_802F1A50(sp1C, sp20, sp24, sp28); + sp1C = spawn_star(sp1C, sp20, sp24, sp28); sp1C->oBehParams2ndByte = 1; } -void func_802F1BD4(f32 sp20, f32 sp24, f32 sp28) { +void spawn_no_exit_star(f32 sp20, f32 sp24, f32 sp28) { struct Object *sp1C; - sp1C = func_802F1A50(sp1C, sp20, sp24, sp28); + sp1C = spawn_star(sp1C, sp20, sp24, sp28); sp1C->oBehParams2ndByte = 1; sp1C->oInteractionSubtype |= INT_SUBTYPE_NO_EXIT; } @@ -168,8 +168,8 @@ void bhv_hidden_red_coin_star_loop(void) { case 1: if (o->oTimer > 2) { - func_802F1B84(o->oPosX, o->oPosY, o->oPosZ); - func_802A3004(); + spawn_red_coin_cutscene_star(o->oPosX, o->oPosY, o->oPosZ); + spawn_mist_particles(); o->activeFlags = 0; } break; diff --git a/src/game/behaviors/spawn_star_exit.inc.c b/src/game/behaviors/spawn_star_exit.inc.c index 1c8aa1ab..8c5515a3 100644 --- a/src/game/behaviors/spawn_star_exit.inc.c +++ b/src/game/behaviors/spawn_star_exit.inc.c @@ -5,7 +5,7 @@ void bhv_ccm_touched_star_spawn_loop(void) { o->oPosY += 100.0f; o->oPosX = 2780.0f; o->oPosZ = 4666.0f; - create_star(2500.0f, -4350.0f, 5750.0f); - mark_object_for_deletion(o); + spawn_default_star(2500.0f, -4350.0f, 5750.0f); + obj_mark_for_deletion(o); } } diff --git a/src/game/behaviors/spindel.inc.c b/src/game/behaviors/spindel.inc.c index 6fc65676..6cbe3ced 100644 --- a/src/game/behaviors/spindel.inc.c +++ b/src/game/behaviors/spindel.inc.c @@ -64,7 +64,7 @@ void bhv_spindel_loop(void) { o->oMoveAnglePitch += o->oAngleVelPitch; if (absf_2(o->oMoveAnglePitch & 0x1fff) < 800.0f && o->oAngleVelPitch != 0) { - PlaySound2(SOUND_GENERAL2_SPINDEL_ROLL); + cur_obj_play_sound_2(SOUND_GENERAL2_SPINDEL_ROLL); } sp1C = sins(o->oMoveAnglePitch * 4) * 23.0; diff --git a/src/game/behaviors/spindrift.inc.c b/src/game/behaviors/spindrift.inc.c index 8db40973..ad6a798f 100644 --- a/src/game/behaviors/spindrift.inc.c +++ b/src/game/behaviors/spindrift.inc.c @@ -14,17 +14,17 @@ struct ObjectHitbox sSpindriftHitbox = { void bhv_spindrift_loop(void) { o->activeFlags |= 0x400; - if (obj_set_hitbox_and_die_if_attacked(&sSpindriftHitbox, SOUND_OBJ_DYING_ENEMY1, 0)) - obj_change_action(1); - obj_update_floor_and_walls(); + if (cur_obj_set_hitbox_and_die_if_attacked(&sSpindriftHitbox, SOUND_OBJ_DYING_ENEMY1, 0)) + cur_obj_change_action(1); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case 0: - func_802A9050(&o->oForwardVel, 4.0f, 1.0f); - if (obj_lateral_dist_from_mario_to_home() > 1000.0f) - o->oAngleToMario = obj_angle_to_home(); + approach_forward_vel(&o->oForwardVel, 4.0f, 1.0f); + if (cur_obj_lateral_dist_from_mario_to_home() > 1000.0f) + o->oAngleToMario = cur_obj_angle_to_home(); else if (o->oDistanceToMario > 300.0f) - o->oAngleToMario = angle_to_object(o, gMarioObject); - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + o->oAngleToMario = obj_angle_to_object(o, gMarioObject); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); break; case 1: o->oFlags &= ~8; @@ -36,5 +36,5 @@ void bhv_spindrift_loop(void) { } break; } - obj_move_standard(-60); + cur_obj_move_standard(-60); } diff --git a/src/game/behaviors/spiny.inc.c b/src/game/behaviors/spiny.inc.c index 8813d91f..b11ee2e5 100644 --- a/src/game/behaviors/spiny.inc.c +++ b/src/game/behaviors/spiny.inc.c @@ -47,7 +47,7 @@ static s32 spiny_check_active(void) { // It can also be used on a bob-omb respawner to change its model // to a butterfly or fish. o->parentObj->oEnemyLakituNumSpinies -= 1; - mark_object_for_deletion(o); + obj_mark_for_deletion(o); return FALSE; } } @@ -60,10 +60,10 @@ static s32 spiny_check_active(void) { */ static void spiny_act_walk(void) { if (spiny_check_active()) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); o->oGraphYOffset = -17.0f; - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) { // After touching the ground for the first time, stop. From now on, @@ -92,15 +92,15 @@ static void spiny_act_walk(void) { } } - obj_rotate_yaw_toward(o->oSpinyTargetYaw, 0x80); + cur_obj_rotate_yaw_toward(o->oSpinyTargetYaw, 0x80); } } else if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { // Bounce off walls while falling - o->oMoveAngleYaw = obj_reflect_move_angle_off_wall(); + o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); } - obj_move_standard(-78); + cur_obj_move_standard(-78); if (obj_handle_attacks(&sSpinyHitbox, SPINY_ACT_ATTACKED_MARIO, sSpinyWalkAttackHandlers)) { // When attacked by mario, lessen the knockback @@ -124,7 +124,7 @@ static void spiny_act_walk(void) { */ static void spiny_act_held_by_lakitu(void) { o->oGraphYOffset = 15.0f; - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); o->oParentRelativePosX = -50.0f; o->oParentRelativePosY = 35.0f; @@ -148,26 +148,26 @@ static void spiny_act_held_by_lakitu(void) { */ static void spiny_act_thrown_by_lakitu(void) { if (spiny_check_active()) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); o->oGraphYOffset = 15.0f; o->oFaceAnglePitch -= 0x2000; - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); if (o->oMoveFlags & OBJ_MOVE_LANDED) { - PlaySound2(SOUND_OBJ_SPINY_UNK59); - obj_set_model(MODEL_SPINY); - func_8029EE20(o, spiny_seg5_anims_05016EAC, 0); + cur_obj_play_sound_2(SOUND_OBJ_SPINY_UNK59); + cur_obj_set_model(MODEL_SPINY); + obj_init_animation_with_sound(o, spiny_seg5_anims_05016EAC, 0); o->oGraphYOffset = -17.0f; o->oFaceAnglePitch = 0; o->oAction = SPINY_ACT_WALK; } else if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { - o->oMoveAngleYaw = obj_reflect_move_angle_off_wall(); + o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); } - obj_move_standard(-78); + cur_obj_move_standard(-78); if (obj_check_attacks(&sSpinyHitbox, o->oAction)) { if (o->parentObj != o) { diff --git a/src/game/behaviors/square_platform_cycle.inc.c b/src/game/behaviors/square_platform_cycle.inc.c index 7a5fc6dc..24eacb02 100644 --- a/src/game/behaviors/square_platform_cycle.inc.c +++ b/src/game/behaviors/square_platform_cycle.inc.c @@ -1,6 +1,6 @@ // square_platform_cycle.c.inc -s32 func_802B02FC(u16 yaw, s32 a) { +s32 square_plat_set_yaw_until_timer(u16 yaw, s32 a) { o->oMoveAngleYaw = yaw; if (a < o->oTimer) return 1; @@ -15,24 +15,24 @@ void bhv_squarish_path_moving_loop(void) { o->oAction = (o->oBehParams2ndByte & 3) + 1; break; case 1: - if (func_802B02FC(0, 60)) + if (square_plat_set_yaw_until_timer(0, 60)) o->oAction++; break; case 2: - if (func_802B02FC(0x4000, 60)) + if (square_plat_set_yaw_until_timer(0x4000, 60)) o->oAction++; break; case 3: - if (func_802B02FC(0x8000, 60)) + if (square_plat_set_yaw_until_timer(0x8000, 60)) o->oAction++; break; case 4: - if (func_802B02FC(0xc000, 60)) + if (square_plat_set_yaw_until_timer(0xc000, 60)) o->oAction = 1; break; default: break; } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); load_object_collision_model(); } diff --git a/src/game/behaviors/star_door.inc.c b/src/game/behaviors/star_door.inc.c index e7fcaf79..95e5c506 100644 --- a/src/game/behaviors/star_door.inc.c +++ b/src/game/behaviors/star_door.inc.c @@ -1,6 +1,6 @@ // star_door.c.inc -void func_802A4DB0(void) { +void star_door_update_pos(void) { o->oVelX = (o->oUnkBC) * coss(o->oMoveAngleYaw); o->oVelZ = (o->oUnkBC) * -sins(o->oMoveAngleYaw); o->oPosX += o->oVelX; @@ -10,10 +10,10 @@ void func_802A4DB0(void) { void bhv_star_door_loop(void) { UNUSED u8 pad[4]; struct Object *sp18; - sp18 = obj_nearest_object_with_behavior(bhvStarDoor); + sp18 = cur_obj_nearest_object_with_behavior(bhvStarDoor); switch (o->oAction) { case 0: - obj_become_tangible(); + cur_obj_become_tangible(); if (0x30000 & o->oInteractStatus) o->oAction = 1; if (sp18 != NULL && sp18->oAction != 0) @@ -21,10 +21,10 @@ void bhv_star_door_loop(void) { break; case 1: if (o->oTimer == 0 && (s16)(o->oMoveAngleYaw) >= 0) - PlaySound2(SOUND_GENERAL_STAR_DOOR_OPEN); - obj_become_intangible(); + cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_OPEN); + cur_obj_become_intangible(); o->oUnkBC = -8.0f; - func_802A4DB0(); + star_door_update_pos(); if (o->oTimer >= 16) o->oAction++; break; @@ -34,9 +34,9 @@ void bhv_star_door_loop(void) { break; case 3: if (o->oTimer == 0 && (s16)(o->oMoveAngleYaw) >= 0) - PlaySound2(SOUND_GENERAL_STAR_DOOR_CLOSE); + cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_CLOSE); o->oUnkBC = 8.0f; - func_802A4DB0(); + star_door_update_pos(); if (o->oTimer >= 16) o->oAction++; break; diff --git a/src/game/behaviors/static_checkered_platform.inc.c b/src/game/behaviors/static_checkered_platform.inc.c index 0980ae87..0537489b 100644 --- a/src/game/behaviors/static_checkered_platform.inc.c +++ b/src/game/behaviors/static_checkered_platform.inc.c @@ -2,7 +2,7 @@ void bhv_static_checkered_platform_loop(void) { if (gDebugInfo[5][0] == 1) { - set_object_angle(o, 0, 0, 0); + obj_set_angle(o, 0, 0, 0); o->oAngleVelPitch = 0; o->oAngleVelYaw = 0; o->oAngleVelRoll = 0; diff --git a/src/game/behaviors/strong_wind_particle.inc.c b/src/game/behaviors/strong_wind_particle.inc.c new file mode 100644 index 00000000..50cd04be --- /dev/null +++ b/src/game/behaviors/strong_wind_particle.inc.c @@ -0,0 +1,65 @@ +// strong_wind_particle.c.inc + +struct ObjectHitbox sStrongWindParticleHitbox = { + /* interactType: */ INTERACT_STRONG_WIND, + /* downOffset: */ 0, + /* damageOrCoinValue: */ 0, + /* health: */ 0, + /* numLootCoins: */ 0, + /* radius: */ 20, + /* height: */ 70, + /* hurtboxRadius: */ 20, + /* hurtboxHeight: */ 70, +}; + +void bhv_strong_wind_particle_loop(void) { + struct Object *penguinObj; + f32 distanceFromPenguin; + f32 penguinXDist, penguinZDist; + + obj_set_hitbox(o, &sStrongWindParticleHitbox); + + if (o->oTimer == 0) { + o->oStrongWindParticlePenguinObj = cur_obj_nearest_object_with_behavior(bhvSLWalkingPenguin); + obj_translate_xyz_random(o, 100.0f); + + o->oForwardVel = coss(o->oMoveAnglePitch) * 100.0f; + o->oVelY = sins(o->oMoveAnglePitch) * -100.0f; + + o->oMoveAngleYaw += random_f32_around_zero(o->oBehParams2ndByte * 500); // Wind spread + o->oOpacity = 100; + } + + cur_obj_move_using_fvel_and_gravity(); + if (o->oTimer > 15) // Deactivate after 15 frames + obj_mark_for_deletion(o); + + // If collided with the SL walking penguin, deactivate. + penguinObj = o->oStrongWindParticlePenguinObj; + if (penguinObj != NULL) { + penguinXDist = penguinObj->oSLWalkingPenguinWindCollisionXPos - o->oPosX; + penguinZDist = penguinObj->oSLWalkingPenguinWindCollisionZPos - o->oPosZ; + distanceFromPenguin = sqrtf(penguinXDist * penguinXDist + penguinZDist * penguinZDist); + if (distanceFromPenguin < 300.0f) { + obj_mark_for_deletion(o); + cur_obj_become_intangible(); + } + } +} + +// Spawn particles that blow Mario away and knock his cap off from the current object. +// Used for the Snowman in SL and Fwoosh. +void cur_obj_spawn_strong_wind_particles(s32 windSpread, f32 scale, f32 relPosX, f32 relPosY, f32 relPosZ) { + // Alternate between tiny particles and regular particles each frame. + if ((gGlobalTimer & 1) != 0) { + // Because the tiny particles are unimportant objects, invisible wind particles are spawned to provide collision. + // There was absolutely no reason to make the smaller particles unimportant, though... + spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, 0.5f, o, MODEL_WHITE_PARTICLE_DL, bhvTinyStrongWindParticle); + spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, scale, o, MODEL_NONE, bhvStrongWindParticle); + } else + spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, scale, o, MODEL_MIST, bhvStrongWindParticle); + // There is also no need to spawn additional invisible wind particles here. + // If the devs were worried about object overload when making small particles unimportant, why spawn these? + // It isn't to ensure collision, as even 1 particle every 2 frames is enough to ensure this reliably. + spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, scale, o, MODEL_NONE, bhvStrongWindParticle); +} diff --git a/src/game/behaviors/sushi.inc.c b/src/game/behaviors/sushi.inc.c index f5122766..52282c64 100644 --- a/src/game/behaviors/sushi.inc.c +++ b/src/game/behaviors/sushi.inc.c @@ -12,8 +12,8 @@ void bhv_sushi_shark_loop(void) { o->oSushiSharkUnkF4 += 0x80; if (gMarioObject->oPosY - sp1C > -500.0f) if (o->oPosY - sp1C > -200.0f) - spawn_object_with_scale(o, MODEL_WATER_WAVES, bhvWaterType, 4.0f); + spawn_object_with_scale(o, MODEL_WAVE_TRAIL, bhvObjectWaveTrail, 4.0f); if ((o->oTimer & 0xF) == 0) - PlaySound2(SOUND_OBJ_SUSHI_SHARK_WATER_SOUND); + cur_obj_play_sound_2(SOUND_OBJ_SUSHI_SHARK_WATER_SOUND); o->oInteractStatus = 0; } diff --git a/src/game/behaviors/switch_hidden_objects.inc.c b/src/game/behaviors/switch_hidden_objects.inc.c index bd352fdf..e159700f 100644 --- a/src/game/behaviors/switch_hidden_objects.inc.c +++ b/src/game/behaviors/switch_hidden_objects.inc.c @@ -12,7 +12,7 @@ struct ObjectHitbox sBreakableBoxHitbox = { /* hurtboxHeight: */ 200, }; -void func_802B0E74(void) { +void breakable_box_init(void) { o->oHiddenObjectUnkF4 = NULL; o->oAnimState = 1; switch (o->oBehParams2ndByte) { @@ -26,42 +26,42 @@ void func_802B0E74(void) { o->oNumLootCoins = 5; break; case 3: - obj_scale(1.5f); + cur_obj_scale(1.5f); break; } } -void func_802B0F54(void) { +void hidden_breakable_box_actions(void) { struct Object *sp1C; - set_object_hitbox(o, &sBreakableBoxHitbox); - obj_set_model(MODEL_BREAKABLE_BOX_SMALL); + obj_set_hitbox(o, &sBreakableBoxHitbox); + cur_obj_set_model(MODEL_BREAKABLE_BOX_SMALL); if (o->oAction == 0) { - obj_disable_rendering(); - obj_become_intangible(); + cur_obj_disable_rendering(); + cur_obj_become_intangible(); if (o->oTimer == 0) - func_802B0E74(); + breakable_box_init(); if (o->oHiddenObjectUnkF4 == NULL) - o->oHiddenObjectUnkF4 = obj_nearest_object_with_behavior(bhvFloorSwitchHiddenObjects); + o->oHiddenObjectUnkF4 = cur_obj_nearest_object_with_behavior(bhvFloorSwitchHiddenObjects); if ((sp1C = o->oHiddenObjectUnkF4) != NULL) if (sp1C->oAction == 2) { o->oAction++; - obj_enable_rendering(); - obj_unhide(); + cur_obj_enable_rendering(); + cur_obj_unhide(); } } else if (o->oAction == 1) { - obj_become_tangible(); - if (obj_wait_then_blink(360, 20)) + cur_obj_become_tangible(); + if (cur_obj_wait_then_blink(360, 20)) o->oAction = 0; - if (obj_was_attacked_or_ground_pounded()) { - func_802A3004(); + if (cur_obj_was_attacked_or_ground_pounded()) { + spawn_mist_particles(); spawn_triangle_break_particles(30, 138, 3.0f, 4); o->oAction++; - PlaySound2(SOUND_GENERAL_BREAK_BOX); + cur_obj_play_sound_2(SOUND_GENERAL_BREAK_BOX); } load_object_collision_model(); } else { - obj_become_intangible(); - obj_disable_rendering(); + cur_obj_become_intangible(); + cur_obj_disable_rendering(); o->oInteractStatus = 0; if ((sp1C = o->oHiddenObjectUnkF4) != NULL) if (sp1C->oAction == 0) @@ -69,23 +69,23 @@ void func_802B0F54(void) { } } -void func_802B1138(void) { +void hidden_unbreakable_box_actions(void) { struct Object *sp1C; - set_object_collision_data(o, wdw_seg7_collision_07018528); + obj_set_collision_data(o, wdw_seg7_collision_07018528); if (o->oAction == 0) { - obj_disable_rendering(); - obj_become_intangible(); + cur_obj_disable_rendering(); + cur_obj_become_intangible(); if (o->oHiddenObjectUnkF4 == NULL) - o->oHiddenObjectUnkF4 = obj_nearest_object_with_behavior(bhvFloorSwitchHiddenObjects); + o->oHiddenObjectUnkF4 = cur_obj_nearest_object_with_behavior(bhvFloorSwitchHiddenObjects); if ((sp1C = o->oHiddenObjectUnkF4) != NULL) if (sp1C->oAction == 2) { o->oAction++; - obj_enable_rendering(); - obj_unhide(); + cur_obj_enable_rendering(); + cur_obj_unhide(); } } else { - obj_become_tangible(); - if (obj_wait_then_blink(360, 20)) + cur_obj_become_tangible(); + if (cur_obj_wait_then_blink(360, 20)) o->oAction = 0; load_object_collision_model(); } @@ -93,7 +93,7 @@ void func_802B1138(void) { void bhv_hidden_object_loop(void) { if (o->oBehParams2ndByte == 0) - func_802B0F54(); // Confused, that function has code depending on the action + hidden_breakable_box_actions(); // Confused, that function has code depending on the action else - func_802B1138(); + hidden_unbreakable_box_actions(); } diff --git a/src/game/behaviors/swoop.inc.c b/src/game/behaviors/swoop.inc.c index d5d7f1cd..8e628cf4 100644 --- a/src/game/behaviors/swoop.inc.c +++ b/src/game/behaviors/swoop.inc.c @@ -24,11 +24,11 @@ static struct ObjectHitbox sSwoopHitbox = { * toward him and enter the move action. */ static void swoop_act_idle(void) { - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); if (approach_f32_ptr(&o->header.gfx.scale[0], 1.0f, 0.05f) && o->oDistanceToMario < 1500.0f) { - if (obj_rotate_yaw_toward(o->oAngleToMario, 800)) { - PlaySound2(SOUND_OBJ2_SWOOP); + if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 800)) { + cur_obj_play_sound_2(SOUND_OBJ2_SWOOP); o->oAction = SWOOP_ACT_MOVE; o->oVelY = -12.0f; } @@ -42,9 +42,9 @@ static void swoop_act_idle(void) { * him. Return to home once mario is far away. */ static void swoop_act_move(void) { - func_8029ED98(0, 2.0f); - if (func_8029F788()) { - PlaySound2(SOUND_OBJ_UNKNOWN6); + cur_obj_init_animation_with_accel_and_sound(0, 2.0f); + if (cur_obj_check_if_near_animation_end()) { + cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN6); } if (o->oForwardVel == 0.0f) { @@ -53,10 +53,10 @@ static void swoop_act_move(void) { o->oForwardVel = 10.0f; o->oVelY = -10.0f; } - } else if (obj_mario_far_away()) { + } else if (cur_obj_mario_far_away()) { // If mario far away, reset o->oAction = SWOOP_ACT_IDLE; - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); o->header.gfx.scale[0] = o->oForwardVel = o->oVelY = 0.0f; o->oFaceAngleRoll = 0; } else { @@ -75,7 +75,7 @@ static void swoop_act_move(void) { } } else if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { // Bounce off a wall and don't bounce again for 30 frames. - o->oSwoopTargetYaw = obj_reflect_move_angle_off_wall(); + o->oSwoopTargetYaw = cur_obj_reflect_move_angle_off_wall(); o->oSwoopBonkCountdown = 30; } @@ -86,7 +86,7 @@ static void swoop_act_move(void) { obj_move_pitch_approach(o->oSwoopTargetPitch, 140); // Jitter yaw a bit - obj_rotate_yaw_toward(o->oSwoopTargetYaw + (s32)(3000 * coss(4000 * gGlobalTimer)), 1200); + cur_obj_rotate_yaw_toward(o->oSwoopTargetYaw + (s32)(3000 * coss(4000 * gGlobalTimer)), 1200); obj_roll_to_match_yaw_turn(o->oSwoopTargetYaw, 0x3000, 500); // Jitter roll a bit @@ -103,7 +103,7 @@ void bhv_swoop_update(void) { if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) { o->oDeathSound = SOUND_OBJ_SWOOP_DEATH; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case SWOOP_ACT_IDLE: @@ -114,8 +114,8 @@ void bhv_swoop_update(void) { break; } - obj_scale(o->header.gfx.scale[0]); - obj_move_standard(78); + cur_obj_scale(o->header.gfx.scale[0]); + cur_obj_move_standard(78); obj_check_attacks(&sSwoopHitbox, o->oAction); } diff --git a/src/game/behaviors/thi_top.inc.c b/src/game/behaviors/thi_top.inc.c index ea381f2b..13b847b1 100644 --- a/src/game/behaviors/thi_top.inc.c +++ b/src/game/behaviors/thi_top.inc.c @@ -10,7 +10,7 @@ void bhv_thi_huge_island_top_loop(void) { if (gTHIWaterDrained & 1) { if (o->oTimer == 0) gEnvironmentRegions[18] = 3000; - obj_hide(); + cur_obj_hide(); } else load_object_collision_model(); } @@ -21,15 +21,15 @@ void bhv_thi_tiny_island_top_loop(void) { if (o->oDistanceToMario < 500.0f) if (gMarioStates->action == ACT_GROUND_POUND_LAND) { o->oAction++; - obj_spawn_particles(&D_8032F134); + cur_obj_spawn_particles(&D_8032F134); spawn_triangle_break_particles(20, 138, 0.3f, 3); - PlaySound2(SOUND_GENERAL_ACTIVATE_CAP_SWITCH); - obj_hide(); + cur_obj_play_sound_2(SOUND_GENERAL_ACTIVATE_CAP_SWITCH); + cur_obj_hide(); } } else { if (o->oTimer < 50) { gEnvironmentRegions[18]--; - PlaySound(SOUND_ENV_WATER_DRAIN); + cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN); } else { gTHIWaterDrained |= 1; play_puzzle_jingle(); @@ -39,6 +39,6 @@ void bhv_thi_tiny_island_top_loop(void) { } else { if (o->oTimer == 0) gEnvironmentRegions[18] = 700; - obj_hide(); + cur_obj_hide(); } } diff --git a/src/game/behaviors/thwomp.inc.c b/src/game/behaviors/thwomp.inc.c index 27b58848..69d0541f 100644 --- a/src/game/behaviors/thwomp.inc.c +++ b/src/game/behaviors/thwomp.inc.c @@ -1,13 +1,13 @@ // thwomp.c.inc -void ActionGrindelThwomp4(void) { +void grindel_thwomp_act_4(void) { if (o->oTimer == 0) o->oThwompUnkF4 = RandomFloat() * 10.0f + 20.0f; if (o->oTimer > o->oThwompUnkF4) o->oAction = 0; } -void ActionGrindelThwomp2(void) { +void grindel_thwomp_act_2(void) { o->oVelY += -4.0f; o->oPosY += o->oVelY; if (o->oPosY < o->oHomeY) { @@ -17,24 +17,24 @@ void ActionGrindelThwomp2(void) { } } -void ActionGrindelThwomp3(void) { +void grindel_thwomp_act_3(void) { if (o->oTimer == 0) if (o->oDistanceToMario < 1500.0f) { - ShakeScreen(SHAKE_POS_SMALL); - PlaySound2(SOUND_OBJ_THWOMP); + cur_obj_shake_screen(SHAKE_POS_SMALL); + cur_obj_play_sound_2(SOUND_OBJ_THWOMP); } if (o->oTimer > 9) o->oAction = 4; } -void ActionGrindelThwomp1(void) { +void grindel_thwomp_act_1(void) { if (o->oTimer == 0) o->oThwompUnkF4 = RandomFloat() * 30.0f + 10.0f; if (o->oTimer > o->oThwompUnkF4) o->oAction = 2; } -void ActionGrindelThwomp0(void) { +void grindel_thwomp_act_0(void) { if (o->oBehParams2ndByte + 40 < o->oTimer) { o->oAction = 1; o->oPosY += 5.0f; @@ -42,10 +42,10 @@ void ActionGrindelThwomp0(void) { o->oPosY += 10.0f; } -void (*sGrindelThwompActions[])(void) = { ActionGrindelThwomp0, ActionGrindelThwomp1, - ActionGrindelThwomp2, ActionGrindelThwomp3, - ActionGrindelThwomp4 }; +void (*sGrindelThwompActions[])(void) = { grindel_thwomp_act_0, grindel_thwomp_act_1, + grindel_thwomp_act_2, grindel_thwomp_act_3, + grindel_thwomp_act_4 }; void bhv_grindel_thwomp_loop(void) { - obj_call_action_function(sGrindelThwompActions); + cur_obj_call_action_function(sGrindelThwompActions); } diff --git a/src/game/behaviors/tower_door.inc.c b/src/game/behaviors/tower_door.inc.c index 926560d1..70bdf31c 100644 --- a/src/game/behaviors/tower_door.inc.c +++ b/src/game/behaviors/tower_door.inc.c @@ -3,8 +3,8 @@ void bhv_tower_door_loop(void) { if (o->oTimer == 0) o->oMoveAngleYaw -= 0x4000; - if (func_802A9A0C(0)) { - func_802A3C98(80.0f, 0); + if (check_mario_attacking(0)) { + obj_explode_and_spawn_coins(80.0f, 0); create_sound_spawner(SOUND_GENERAL_WALL_EXPLOSION); } } diff --git a/src/game/behaviors/tower_platform.inc.c b/src/game/behaviors/tower_platform.inc.c index a74c1b5f..45a4b8a5 100644 --- a/src/game/behaviors/tower_platform.inc.c +++ b/src/game/behaviors/tower_platform.inc.c @@ -2,7 +2,7 @@ void bhv_wf_solid_tower_platform_loop(void) { if (o->parentObj->oAction == 3) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_wf_elevator_tower_platform_loop(void) { @@ -12,7 +12,7 @@ void bhv_wf_elevator_tower_platform_loop(void) { o->oAction++; break; case 1: - PlaySound(SOUND_ENV_ELEVATOR1); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1); if (o->oTimer > 140) o->oAction++; else @@ -23,7 +23,7 @@ void bhv_wf_elevator_tower_platform_loop(void) { o->oAction++; break; case 3: - PlaySound(SOUND_ENV_ELEVATOR1); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1); if (o->oTimer > 140) o->oAction = 0; else @@ -31,7 +31,7 @@ void bhv_wf_elevator_tower_platform_loop(void) { break; } if (o->parentObj->oAction == 3) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_wf_sliding_tower_platform_loop(void) { @@ -48,14 +48,14 @@ void bhv_wf_sliding_tower_platform_loop(void) { o->oForwardVel = o->oPlatformUnk10C; break; } - obj_compute_vel_xz(); + cur_obj_compute_vel_xz(); o->oPosX += o->oVelX; o->oPosZ += o->oVelZ; if (o->parentObj->oAction == 3) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void func_802AF9A4(s16 a, const BehaviorScript *beh) { +void spawn_and_init_wf_platforms(s16 a, const BehaviorScript *beh) { s16 yaw; struct Object *platform = spawn_object(o, a, beh); yaw = o->oPlatformSpawnerUnkF4 * o->oPlatformSpawnerUnkFC + o->oPlatformSpawnerUnkF8; @@ -68,7 +68,7 @@ void func_802AF9A4(s16 a, const BehaviorScript *beh) { o->oPlatformSpawnerUnkF4++; } -void func_802AFAFC(void) { +void spawn_wf_platform_group(void) { UNUSED s32 unused = 8; o->oPlatformSpawnerUnkF4 = 0; o->oPlatformSpawnerUnkF8 = 0; @@ -76,14 +76,14 @@ void func_802AFAFC(void) { o->oPlatformSpawnerUnk100 = 704.0f; o->oPlatformSpawnerUnk104 = 380.0f; o->oPlatformSpawnerUnk108 = 3.0f; - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSlidingTowerPlatform); - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSlidingTowerPlatform); - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSlidingTowerPlatform); - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); - func_802AF9A4(MODEL_WF_TOWER_SQUARE_PLATORM_ELEVATOR, bhvWfElevatorTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSlidingTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSlidingTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSlidingTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWfSolidTowerPlatform); + spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM_ELEVATOR, bhvWfElevatorTowerPlatform); } void bhv_tower_platform_group_loop(void) { @@ -95,7 +95,7 @@ void bhv_tower_platform_group_loop(void) { o->oAction++; break; case 1: - func_802AFAFC(); + spawn_wf_platform_group(); o->oAction++; break; case 2: diff --git a/src/game/behaviors/tox_box.inc.c b/src/game/behaviors/tox_box.inc.c index da28ded4..c083944d 100644 --- a/src/game/behaviors/tox_box.inc.c +++ b/src/game/behaviors/tox_box.inc.c @@ -8,12 +8,12 @@ s8 D_8032F948[] = { 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 2, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 7, 1, 2, 6, 1, 6, 1, 5, 1, 2, 4, 1, 7, 1, -1 }; s8 *D_8032F96C[] = { D_8032F8F0, D_8032F924, D_8032F948 }; -void func_802BCF78(void) { +void tox_box_shake_screen(void) { if (o->oDistanceToMario < 3000.0f) - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_shake_screen(SHAKE_POS_SMALL); } -void func_802BCFC4(f32 a0, f32 a1, s16 a2, s16 a3) // 0x18 0x1c 0x22 0x26 +void tox_box_move(f32 a0, f32 a1, s16 a2, s16 a3) // 0x18 0x1c 0x22 0x26 { o->oPosY = 99.41124 * sins((f32)(o->oTimer + 1) / 8 * 0x8000) + o->oHomeY + 3.0f; o->oForwardVel = a0; @@ -22,58 +22,58 @@ void func_802BCFC4(f32 a0, f32 a1, s16 a2, s16 a3) // 0x18 0x1c 0x22 0x26 if ((s16) o->oFaceAnglePitch < 0) a3 = -a3; o->oFaceAngleRoll += a3; - func_802A2A38(); + cur_obj_set_pos_via_transform(); if (o->oTimer == 7) { - o->oAction = func_802A32E0(); + o->oAction = cur_obj_progress_direction_table(); #ifndef VERSION_JP - PlaySound2(SOUND_GENERAL_UNK46); + cur_obj_play_sound_2(SOUND_GENERAL_UNK46); #else - PlaySound2(SOUND_GENERAL_UNK46_LOWPRIO); + cur_obj_play_sound_2(SOUND_GENERAL_UNK46_LOWPRIO); #endif } } -void ActionToxBox4(void) { - func_802BCFC4(64.0f, 0.0f, 0x800, 0); +void tox_box_act_4(void) { + tox_box_move(64.0f, 0.0f, 0x800, 0); } -void ActionToxBox5(void) { - func_802BCFC4(-64.0f, 0.0f, -0x800, 0); +void tox_box_act_5(void) { + tox_box_move(-64.0f, 0.0f, -0x800, 0); } -void ActionToxBox6(void) { - func_802BCFC4(0.0f, -64.0f, 0, 0x800); +void tox_box_act_6(void) { + tox_box_move(0.0f, -64.0f, 0, 0x800); } -void ActionToxBox7(void) { - func_802BCFC4(0.0f, 64.0f, 0, -0x800); +void tox_box_act_7(void) { + tox_box_move(0.0f, 64.0f, 0, -0x800); } -void ActionToxBox1(void) { +void tox_box_act_1(void) { o->oForwardVel = 0.0f; if (o->oTimer == 0) - func_802BCF78(); + tox_box_shake_screen(); o->oPosY = o->oHomeY + 3.0f; if (o->oTimer == 20) - o->oAction = func_802A32E0(); + o->oAction = cur_obj_progress_direction_table(); } -void ActionToxBox2(void) { +void tox_box_act_2(void) { if (o->oTimer == 20) - o->oAction = func_802A32E0(); + o->oAction = cur_obj_progress_direction_table(); } -void ActionToxBox3(void) { +void tox_box_act_3(void) { if (o->oTimer == 20) - o->oAction = func_802A32E0(); + o->oAction = cur_obj_progress_direction_table(); } -void ActionToxBox0(void) { +void tox_box_act_0(void) { s8 *sp1C = D_8032F96C[o->oBehParams2ndByte]; - o->oAction = func_802A32A4(sp1C); + o->oAction = cur_obj_set_direction_table(sp1C); } -void (*sToxBoxActions[])(void) = { ActionToxBox0, ActionToxBox1, ActionToxBox2, ActionToxBox3, - ActionToxBox4, ActionToxBox5, ActionToxBox6, ActionToxBox7 }; +void (*sToxBoxActions[])(void) = { tox_box_act_0, tox_box_act_1, tox_box_act_2, tox_box_act_3, + tox_box_act_4, tox_box_act_5, tox_box_act_6, tox_box_act_7 }; void bhv_tox_box_loop(void) { - obj_call_action_function(sToxBoxActions); + cur_obj_call_action_function(sToxBoxActions); load_object_collision_model(); } diff --git a/src/game/behaviors/treasure_chest.inc.c b/src/game/behaviors/treasure_chest.inc.c index cc54cdc8..94f30629 100644 --- a/src/game/behaviors/treasure_chest.inc.c +++ b/src/game/behaviors/treasure_chest.inc.c @@ -59,7 +59,7 @@ void bhv_treasure_chest_top_loop(void) { void bhv_treasure_chest_bottom_init(void) { spawn_object_relative(0, 0, 102, -77, o, MODEL_TREASURE_CHEST_LID, bhvTreasureChestTop); - set_object_hitbox(o, &sTreasureChestBottomHitbox); + obj_set_hitbox(o, &sTreasureChestBottomHitbox); } void bhv_treasure_chest_bottom_loop(void) { @@ -76,7 +76,7 @@ void bhv_treasure_chest_bottom_loop(void) { o->parentObj->oTreasureChestUnkF4 = 1; o->parentObj->oTreasureChestUnkF8 = 1; o->oAction = 2; - obj_become_tangible(); + cur_obj_become_tangible(); play_sound(SOUND_MENU_CAMERA_BUZZ, gDefaultSoundArgs); } } @@ -90,18 +90,18 @@ void bhv_treasure_chest_bottom_loop(void) { break; case 2: - obj_become_intangible(); + cur_obj_become_intangible(); if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500)) { o->parentObj->oTreasureChestUnkF8 = 0; o->oAction = 0; } } - obj_push_mario_away_from_cylinder(150.0f, 150.0f); + cur_obj_push_mario_away_from_cylinder(150.0f, 150.0f); o->oInteractStatus = 0; } -void func_802F6E8C(s8 sp3B, s32 sp3C, s32 sp40, s32 sp44, s16 sp4A) { +void spawn_treasure_chest(s8 sp3B, s32 sp3C, s32 sp40, s32 sp44, s16 sp4A) { struct Object *sp34; sp34 = spawn_object_abs_with_rot(o, 0, MODEL_TREASURE_CHEST_BASE, bhvTreasureChestBottom, sp3C, sp40, sp44, 0, sp4A, 0); @@ -109,10 +109,10 @@ void func_802F6E8C(s8 sp3B, s32 sp3C, s32 sp40, s32 sp44, s16 sp4A) { } void bhv_treasure_chest_ship_init(void) { - func_802F6E8C(1, 400, -350, -2700, 0); - func_802F6E8C(2, 650, -350, -940, -0x6001); - func_802F6E8C(3, -550, -350, -770, 0x5FFF); - func_802F6E8C(4, 100, -350, -1700, 0); + spawn_treasure_chest(1, 400, -350, -2700, 0); + spawn_treasure_chest(2, 650, -350, -940, -0x6001); + spawn_treasure_chest(3, -550, -350, -770, 0x5FFF); + spawn_treasure_chest(4, 100, -350, -1700, 0); o->oTreasureChestUnkF4 = 1; o->oTreasureChestUnkFC = 0; } @@ -142,10 +142,10 @@ void bhv_treasure_chest_ship_loop(void) { } void bhv_treasure_chest_jrb_init(void) { - func_802F6E8C(1, -1700, -2812, -1150, 0x7FFF); - func_802F6E8C(2, -1150, -2812, -1550, 0x7FFF); - func_802F6E8C(3, -2400, -2812, -1800, 0x7FFF); - func_802F6E8C(4, -1800, -2812, -2100, 0x7FFF); + spawn_treasure_chest(1, -1700, -2812, -1150, 0x7FFF); + spawn_treasure_chest(2, -1150, -2812, -1550, 0x7FFF); + spawn_treasure_chest(3, -2400, -2812, -1800, 0x7FFF); + spawn_treasure_chest(4, -1800, -2812, -2100, 0x7FFF); o->oTreasureChestUnkF4 = 1; o->oTreasureChestUnkFC = 1; } @@ -161,8 +161,8 @@ void bhv_treasure_chest_jrb_loop(void) { case 1: if (o->oTimer == 60) { - func_802A3004(); - create_star(-1800.0f, -2500.0f, -1700.0f); + spawn_mist_particles(); + spawn_default_star(-1800.0f, -2500.0f, -1700.0f); o->oAction = 2; } break; @@ -173,10 +173,10 @@ void bhv_treasure_chest_jrb_loop(void) { } void bhv_treasure_chest_init(void) { - func_802F6E8C(1, -4500, -5119, 1300, -0x6001); - func_802F6E8C(2, -1800, -5119, 1050, 0x1FFF); - func_802F6E8C(3, -4500, -5119, -1100, 9102); - func_802F6E8C(4, -2400, -4607, 125, 16019); + spawn_treasure_chest(1, -4500, -5119, 1300, -0x6001); + spawn_treasure_chest(2, -1800, -5119, 1050, 0x1FFF); + spawn_treasure_chest(3, -4500, -5119, -1100, 9102); + spawn_treasure_chest(4, -2400, -4607, 125, 16019); o->oTreasureChestUnkF4 = 1; o->oTreasureChestUnkFC = 0; @@ -193,8 +193,8 @@ void bhv_treasure_chest_loop(void) { case 1: if (o->oTimer == 60) { - func_802A3004(); - create_star(-1900.0f, -4000.0f, -1400.0f); + spawn_mist_particles(); + spawn_default_star(-1900.0f, -4000.0f, -1400.0f); o->oAction = 2; } break; diff --git a/src/game/behaviors/tree_particles.inc.c b/src/game/behaviors/tree_particles.inc.c index 4d46c22f..64771e0a 100644 --- a/src/game/behaviors/tree_particles.inc.c +++ b/src/game/behaviors/tree_particles.inc.c @@ -1,7 +1,7 @@ // tree_particles.c.inc void bhv_tree_snow_or_leaf_loop(void) { - obj_update_floor_height(); + cur_obj_update_floor_height(); if (o->oTimer == 0) { o->oAngleVelPitch = (RandomFloat() - 0.5) * 0x1000; o->oAngleVelRoll = (RandomFloat() - 0.5) * 0x1000; @@ -9,13 +9,13 @@ void bhv_tree_snow_or_leaf_loop(void) { o->oTreeSnowOrLeafUnkFC = RandomFloat() * 0x400 + 0x600; } if (o->oPosY < o->oFloorHeight) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (o->oFloorHeight < -11000.0f) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (o->oTimer > 100) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (gPrevFrameObjectCount > 212) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); o->oFaceAnglePitch += o->oAngleVelPitch; o->oFaceAngleRoll += o->oAngleVelRoll; o->oVelY += -3.0f; @@ -46,7 +46,7 @@ void bhv_snow_leaf_particle_spawn_init(void) { if (RandomFloat() < 0.5) { obj = spawn_object(o, MODEL_WHITE_PARTICLE_DL, bhvTreeSnow); scale = RandomFloat(); - scale_object_xyz(obj, scale, scale, scale); + obj_scale_xyz(obj, scale, scale, scale); obj->oMoveAngleYaw = RandomU16(); obj->oForwardVel = RandomFloat() * 5.0f; obj->oVelY = RandomFloat() * 15.0f; @@ -55,7 +55,7 @@ void bhv_snow_leaf_particle_spawn_init(void) { if (RandomFloat() < 0.3) { obj = spawn_object(o, MODEL_LEAVES, bhvTreeLeaf); scale = RandomFloat() * 3.0f; - scale_object_xyz(obj, scale, scale, scale); + obj_scale_xyz(obj, scale, scale, scale); obj->oMoveAngleYaw = RandomU16(); obj->oForwardVel = RandomFloat() * 5.0f + 5.0f; obj->oVelY = RandomFloat() * 15.0f; diff --git a/src/game/behaviors/triplet_butterfly.inc.c b/src/game/behaviors/triplet_butterfly.inc.c index 01f8dbe7..15e3f2f4 100644 --- a/src/game/behaviors/triplet_butterfly.inc.c +++ b/src/game/behaviors/triplet_butterfly.inc.c @@ -49,17 +49,17 @@ static void triplet_butterfly_act_init(void) { o->oMoveAngleYaw = (s32)(o->oTripletButterflyBaseYaw + random_linear_offset(0, 0x5555)); o->oTripletButterflySpeed = random_linear_offset(15, 15); - obj_unhide(); + cur_obj_unhide(); } } static void triplet_butterfly_act_wander(void) { if (o->oDistanceToMario > 1500.0f) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { approach_f32_ptr(&o->oTripletButterflySpeed, 8.0f, 0.5f); if (o->oTimer < 60) { - o->oTripletButterflyTargetYaw = obj_angle_to_home(); + o->oTripletButterflyTargetYaw = cur_obj_angle_to_home(); } else { o->oTripletButterflyTargetYaw = (s32) o->oTripletButterflyBaseYaw; @@ -81,7 +81,7 @@ static void triplet_butterfly_act_wander(void) { } obj_move_pitch_approach(o->oTripletButterflyTargetPitch, 400); - obj_rotate_yaw_toward(o->oTripletButterflyTargetYaw, random_linear_offset(400, 800)); + cur_obj_rotate_yaw_toward(o->oTripletButterflyTargetYaw, random_linear_offset(400, 800)); } } @@ -90,7 +90,7 @@ static void triplet_butterfly_act_activate(void) { if (o->oTripletButterflyModel == 0) { spawn_object_relative_with_scale(0, 0, -40, 0, 1.5f, o, MODEL_SMOKE, bhvWhitePuffSmoke2); o->oTripletButterflyModel = sTripletButterflyActivationData[o->oTripletButterflyType].model; - obj_set_model(o->oTripletButterflyModel); + cur_obj_set_model(o->oTripletButterflyModel); obj_set_billboard(o); o->oTripletButterflyScale = 0.0f; o->oHomeY = o->oPosY; @@ -99,7 +99,7 @@ static void triplet_butterfly_act_activate(void) { if (o->oTripletButterflyType != TRIPLET_BUTTERFLY_TYPE_EXPLODES) { spawn_object(o, o->oTripletButterflyModel, sTripletButterflyActivationData[o->oTripletButterflyType].behavior); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { o->oAction = TRIPLET_BUTTERFLY_ACT_EXPLODE; o->oWallHitboxRadius = 100.0f; @@ -123,7 +123,7 @@ static void triplet_butterfly_act_explode(void) { if (o->oAction == -1 || (o->oMoveFlags & 0x00000200) || o->oTimer >= 158) { o->oPosY += o->oGraphYOffset; spawn_object(o, MODEL_EXPLOSION, bhvExplosion); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { if (o->oTimer > 120) { scaleIncrease = 0.04f * coss(o->oTripletButterflyScalePhase); @@ -138,13 +138,13 @@ static void triplet_butterfly_act_explode(void) { } approach_f32_ptr(&o->oTripletButterflySpeed, 20.0f, 1.0f); - obj_rotate_yaw_toward(o->oAngleToMario, 800); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 800); obj_turn_pitch_toward_mario(-100.0f, 800); } } void bhv_triplet_butterfly_update(void) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case TRIPLET_BUTTERFLY_ACT_INIT: @@ -161,7 +161,7 @@ void bhv_triplet_butterfly_update(void) { break; } - obj_scale(o->oTripletButterflyScale); + cur_obj_scale(o->oTripletButterflyScale); obj_compute_vel_from_move_pitch(o->oTripletButterflySpeed); - obj_move_standard(78); + cur_obj_move_standard(78); } diff --git a/src/game/behaviors/ttc_elevator.inc.c b/src/game/behaviors/ttc_elevator.inc.c index 7c2afbd2..10d578df 100644 --- a/src/game/behaviors/ttc_elevator.inc.c +++ b/src/game/behaviors/ttc_elevator.inc.c @@ -43,7 +43,7 @@ void bhv_ttc_elevator_update(void) { } // This is basically equivalent to posY += velY - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); // Flip directions if the elevator tries to run away if (clamp_f32(&o->oPosY, o->oHomeY, o->oTTCElevatorPeakY)) { diff --git a/src/game/behaviors/ttc_pendulum.inc.c b/src/game/behaviors/ttc_pendulum.inc.c index 0f94d00a..9b870cae 100644 --- a/src/game/behaviors/ttc_pendulum.inc.c +++ b/src/game/behaviors/ttc_pendulum.inc.c @@ -36,7 +36,7 @@ void bhv_ttc_pendulum_update(void) { // Play sound if (o->oTTCPendulumSoundTimer != 0) { if (--o->oTTCPendulumSoundTimer == 0) { - PlaySound2(SOUND_GENERAL_PENDULUM_SWING); + cur_obj_play_sound_2(SOUND_GENERAL_PENDULUM_SWING); } } diff --git a/src/game/behaviors/ttc_pit_block.inc.c b/src/game/behaviors/ttc_pit_block.inc.c index fc8ec16b..d81dc227 100644 --- a/src/game/behaviors/ttc_pit_block.inc.c +++ b/src/game/behaviors/ttc_pit_block.inc.c @@ -53,7 +53,7 @@ void bhv_ttc_pit_block_init(void) { void bhv_ttc_pit_block_update(void) { if (o->oTimer > o->oTTCPitBlockWaitTime) { // Forward vel and gravity are zero, so this just does posY += velY - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (clamp_f32(&o->oPosY, o->oHomeY, o->oTTCPitBlockPeakY)) { o->oTTCPitBlockDir = o->oTTCPitBlockDir ^ 0x1; diff --git a/src/game/behaviors/ttc_rotating_solid.inc.c b/src/game/behaviors/ttc_rotating_solid.inc.c index dce34adb..1f9e8ada 100644 --- a/src/game/behaviors/ttc_rotating_solid.inc.c +++ b/src/game/behaviors/ttc_rotating_solid.inc.c @@ -43,7 +43,7 @@ void bhv_ttc_rotating_solid_update(void) { if (o->oTTCRotatingSolidSoundTimer != 0) { // 3. Play a sound after 6 frames if (--o->oTTCRotatingSolidSoundTimer == 0) { - PlaySound2(SOUND_GENERAL2_ROTATING_BLOCK_ALERT); + cur_obj_play_sound_2(SOUND_GENERAL2_ROTATING_BLOCK_ALERT); } } else if (o->oTTCRotatingSolidVelY > 0.0f && o->oPosY >= o->oHomeY) { // 4. Rotate @@ -55,7 +55,7 @@ void bhv_ttc_rotating_solid_update(void) { o->oAngleVelRoll = o->oFaceAngleRoll - startRoll; if (o->oAngleVelRoll == 0) { - PlaySound2(SOUND_GENERAL2_ROTATING_BLOCK_CLICK); + cur_obj_play_sound_2(SOUND_GENERAL2_ROTATING_BLOCK_CLICK); o->oTTCRotatingSolidNumTurns = (o->oTTCRotatingSolidNumTurns + 1) % o->oTTCRotatingSolidNumSides; diff --git a/src/game/behaviors/ttc_treadmill.inc.c b/src/game/behaviors/ttc_treadmill.inc.c index 2f24d8b9..7ae82f43 100644 --- a/src/game/behaviors/ttc_treadmill.inc.c +++ b/src/game/behaviors/ttc_treadmill.inc.c @@ -36,13 +36,13 @@ void bhv_ttc_treadmill_init(void) { } /** - * Update function for bhvTTCTreadmill. It calls obj_compute_vel_xz afterward. + * Update function for bhvTTCTreadmill. It calls cur_obj_compute_vel_xz afterward. */ void bhv_ttc_treadmill_update(void) { if (sMasterTreadmill == o || sMasterTreadmill == NULL) { sMasterTreadmill = o; - PlaySound(SOUND_ENV_ELEVATOR2); + cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2); if (gTTCSpeedSetting == TTC_SPEED_RANDOM) { // Stay still for 5 frames, then accelerate toward the target speed diff --git a/src/game/behaviors/tumbling_bridge.inc.c b/src/game/behaviors/tumbling_bridge.inc.c index 18e74d36..39729553 100644 --- a/src/game/behaviors/tumbling_bridge.inc.c +++ b/src/game/behaviors/tumbling_bridge.inc.c @@ -21,10 +21,10 @@ void bhv_tumbling_bridge_platform_loop(void) { } break; case 1: - obj_update_floor_height(); + cur_obj_update_floor_height(); if (o->oTimer > 5) { o->oAction++; - PlaySound2(SOUND_GENERAL_PLATFORM); + cur_obj_play_sound_2(SOUND_GENERAL_PLATFORM); } break; case 2: @@ -33,8 +33,8 @@ void bhv_tumbling_bridge_platform_loop(void) { if (o->oAngleVelRoll > -0x400 && o->oAngleVelRoll < 0x400) o->oAngleVelRoll += o->oTumblingBridgeUnkF4; // acceleration? o->oGravity = -3.0f; - obj_rotate_face_angle_using_vel(); - obj_move_using_fvel_and_gravity(); + cur_obj_rotate_face_angle_using_vel(); + cur_obj_move_using_fvel_and_gravity(); if (o->oPosY < o->oFloorHeight - 300.0f) o->oAction++; break; @@ -42,10 +42,10 @@ void bhv_tumbling_bridge_platform_loop(void) { break; } if (o->parentObj->oAction == 3) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void ActionTumblingBridge1(void) { +void tumbling_bridge_act_1(void) { struct Object *platformObj; s32 i; s32 bridgeID = o->oBehParams2ndByte; @@ -65,7 +65,7 @@ void ActionTumblingBridge1(void) { relativePlatformZ = sTumblingBridgeParams[bridgeID].bridgeRelativeStartingXorZ + sTumblingBridgeParams[bridgeID].platformWidth * i; - if (obj_has_behavior(bhvLllTumblingBridge)) { + if (cur_obj_has_behavior(bhvLllTumblingBridge)) { if (i % 3 == 0) relativePlatformY -= 150; relativeInitialPlatformY = 450; @@ -75,38 +75,38 @@ void ActionTumblingBridge1(void) { 0, relativePlatformX, relativePlatformY + relativeInitialPlatformY, relativePlatformZ, o, sTumblingBridgeParams[bridgeID].model, bhvTumblingBridgePlatform); - set_object_collision_data(platformObj, sTumblingBridgeParams[bridgeID].segAddr); + obj_set_collision_data(platformObj, sTumblingBridgeParams[bridgeID].segAddr); } o->oAction = 2; } -void ActionTumblingBridge2(void) { - obj_hide(); - if (obj_has_behavior(bhvLllTumblingBridge)) - obj_unhide(); +void tumbling_bridge_act_2(void) { + cur_obj_hide(); + if (cur_obj_has_behavior(bhvLllTumblingBridge)) + cur_obj_unhide(); else if (o->oDistanceToMario > 1200.0f) { o->oAction = 3; - obj_unhide(); + cur_obj_unhide(); } } -void ActionTumblingBridge3(void) { - obj_unhide(); +void tumbling_bridge_act_3(void) { + cur_obj_unhide(); o->oAction = 0; } -void ActionTumblingBridge0(void) { - if (obj_has_behavior(bhvLllTumblingBridge) || o->oDistanceToMario < 1000.0f) +void tumbling_bridge_act_0(void) { + if (cur_obj_has_behavior(bhvLllTumblingBridge) || o->oDistanceToMario < 1000.0f) o->oAction = 1; } -void (*sTumblingBridgeActions[])(void) = { ActionTumblingBridge0, ActionTumblingBridge1, - ActionTumblingBridge2, ActionTumblingBridge3 }; +void (*sTumblingBridgeActions[])(void) = { tumbling_bridge_act_0, tumbling_bridge_act_1, + tumbling_bridge_act_2, tumbling_bridge_act_3 }; s16 D_8032F38C[] = { -51, 0, 0, -461, 0, 0, -512, 0, 0, -2611, 0, 0, -2360, 0, 0, 214, 0, 0, -50, 1945, 1, 0 }; void bhv_tumbling_bridge_loop(void) { - obj_call_action_function(sTumblingBridgeActions); + cur_obj_call_action_function(sTumblingBridgeActions); } diff --git a/src/game/behaviors/tuxie.inc.c b/src/game/behaviors/tuxie.inc.c index 776113e4..16ba877d 100644 --- a/src/game/behaviors/tuxie.inc.c +++ b/src/game/behaviors/tuxie.inc.c @@ -1,16 +1,5 @@ // tuxie.c.inc -s32 func_802BE2E8(s16 a0, s16 a1, s32 a2) { - f32 sp1C; - if ((sp1C = o->header.gfx.unk38.animAccel / (f32) 0x10000) == 0) - sp1C = 1.0f; - if (obj_check_anim_frame_in_range(a0, sp1C) || obj_check_anim_frame_in_range(a1, sp1C)) { - PlaySound2(a2); - return 1; - } - return 0; -} - void play_penguin_walking_sound(s32 walk) { s32 sound; if (o->oSoundStateID == 0) { @@ -18,31 +7,31 @@ void play_penguin_walking_sound(s32 walk) { sound = SOUND_OBJ_BABY_PENGUIN_WALK; else // PENGUIN_WALK_BIG sound = SOUND_OBJ_BIG_PENGUIN_WALK; - func_802BE2E8(1, 11, sound); + set_obj_anim_with_accel_and_sound(1, 11, sound); } } -void ActionTuxiesMother2(void) { +void tuxies_mother_act_2(void) { f32 sp24; UNUSED s32 unused; - struct Object *sp1C = obj_find_nearest_object_with_behavior(bhvSmallPenguin, &sp24); + struct Object *sp1C = cur_obj_find_nearest_object_with_behavior(bhvSmallPenguin, &sp24); - if (obj_find_nearby_held_actor(bhvUnused20E0, 1000.0f) != NULL) { + if (cur_obj_find_nearby_held_actor(bhvUnused20E0, 1000.0f) != NULL) { if (o->oSubAction == 0) { - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); o->oForwardVel = 10.0f; - if (800.0f < obj_lateral_dist_from_mario_to_home()) + if (800.0f < cur_obj_lateral_dist_from_mario_to_home()) o->oSubAction = 1; - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); } else { o->oForwardVel = 0.0f; - set_obj_animation_and_sound_state(3); - if (obj_lateral_dist_from_mario_to_home() < 700.0f) + cur_obj_init_animation_with_sound(3); + if (cur_obj_lateral_dist_from_mario_to_home() < 700.0f) o->oSubAction = 0; } } else { o->oForwardVel = 0.0f; - set_obj_animation_and_sound_state(3); + cur_obj_init_animation_with_sound(3); } if (sp1C != NULL && sp24 < 300.0f && sp1C->oHeldState != HELD_FREE) { o->oAction = 1; @@ -51,21 +40,21 @@ void ActionTuxiesMother2(void) { } } -void ActionTuxiesMother1(void) { +void tuxies_mother_act_1(void) { s32 sp2C; s32 sp28; s32 dialogID; switch (o->oSubAction) { case 0: - set_obj_animation_and_sound_state(3); - if (!obj_is_mario_on_platform()) { + cur_obj_init_animation_with_sound(3); + if (!cur_obj_is_mario_on_platform()) { sp2C = (o->oBehParams >> 0x10) & 0xFF; sp28 = (o->prevObj->oBehParams >> 0x10) & 0xFF; if (sp2C == sp28) dialogID = DIALOG_058; else dialogID = DIALOG_059; - if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, dialogID)) { + if (cur_obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, dialogID)) { if (dialogID == DIALOG_058) o->oSubAction = 1; else @@ -73,7 +62,7 @@ void ActionTuxiesMother1(void) { o->prevObj->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY; } } else - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); break; case 1: if (o->prevObj->oHeldState == HELD_FREE) { @@ -86,11 +75,11 @@ void ActionTuxiesMother1(void) { // which has no effect as o->prevObj->oUnknownUnk88 is always 0 // or 1, which is not affected by the bitwise AND. o->prevObj->OBJECT_FIELD_S32(o->oInteractionSubtype) &= ~INT_SUBTYPE_DROP_IMMEDIATELY; - set_object_behavior(o->prevObj, bhvUnused20E0); + obj_set_behavior(o->prevObj, bhvUnused20E0); #ifndef VERSION_JP - obj_spawn_star_at_y_offset(3167.0f, -4300.0f, 5108.0f, 200.0f); + cur_obj_spawn_star_at_y_offset(3167.0f, -4300.0f, 5108.0f, 200.0f); #else - create_star(3500.0f, -4300.0f, 4650.0f); + spawn_default_star(3500.0f, -4300.0f, 4650.0f); #endif o->oAction = 2; } @@ -99,21 +88,21 @@ void ActionTuxiesMother1(void) { if (o->prevObj->oHeldState == HELD_FREE) { //! Same bug as above o->prevObj->OBJECT_FIELD_S32(o->oInteractionSubtype) &= ~INT_SUBTYPE_DROP_IMMEDIATELY; - set_object_behavior(o->prevObj, bhvPenguinBaby); + obj_set_behavior(o->prevObj, bhvPenguinBaby); o->oAction = 2; } break; } } -void ActionTuxiesMother0(void) { +void tuxies_mother_act_0(void) { s32 sp2C; f32 sp28; struct Object *sp24; sp2C = 0; - sp24 = obj_find_nearest_object_with_behavior(bhvSmallPenguin, &sp28); - obj_scale(4.0f); - set_obj_animation_and_sound_state(3); + sp24 = cur_obj_find_nearest_object_with_behavior(bhvSmallPenguin, &sp28); + cur_obj_scale(4.0f); + cur_obj_init_animation_with_sound(3); if (sp28 < 500.0f) sp2C = 1; if (sp24 != NULL && sp28 < 300.0f && sp24->oHeldState != HELD_FREE) { @@ -123,12 +112,12 @@ void ActionTuxiesMother0(void) { } else { switch (o->oSubAction) { case 0: - if (obj_is_mario_in_range_and_ready_to_speak(300.0f, 100.0f)) + if (cur_obj_can_mario_activate_textbox_2(300.0f, 100.0f)) if (sp2C == 0) o->oSubAction++; break; case 1: - if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_057)) + if (cur_obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_057)) o->oSubAction++; break; case 2: @@ -137,86 +126,86 @@ void ActionTuxiesMother0(void) { break; } } - if (obj_check_anim_frame(1)) - PlaySound2(SOUND_OBJ_BIG_PENGUIN_YELL); + if (cur_obj_check_anim_frame(1)) + cur_obj_play_sound_2(SOUND_OBJ_BIG_PENGUIN_YELL); } -void (*sTuxiesMotherActions[])(void) = { ActionTuxiesMother0, ActionTuxiesMother1, - ActionTuxiesMother2 }; +void (*sTuxiesMotherActions[])(void) = { tuxies_mother_act_0, tuxies_mother_act_1, + tuxies_mother_act_2 }; void bhv_tuxies_mother_loop(void) { o->activeFlags |= 0x400; - obj_update_floor_and_walls(); - obj_call_action_function(sTuxiesMotherActions); - obj_move_standard(-78); + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sTuxiesMotherActions); + cur_obj_move_standard(-78); play_penguin_walking_sound(PENGUIN_WALK_BIG); o->oInteractStatus = 0; } -void func_802BEA58(void) { +void small_penguin_dive_with_mario(void) { if (mario_is_dive_sliding()) { o->oSmallPenguinUnk100 = o->oAction; o->oAction = 3; } } -void ActionSmallPenguin2(void) { +void small_penguin_act_2(void) { s32 sp1C = 0; if (o->oTimer == 0) - if (obj_dist_to_nearest_object_with_behavior(bhvTuxiesMother) < 1000.0f) + if (cur_obj_dist_to_nearest_object_with_behavior(bhvTuxiesMother) < 1000.0f) sp1C = 1; - set_obj_animation_and_sound_state(0); + cur_obj_init_animation_with_sound(0); o->oForwardVel = o->oSmallPenguinUnk104 + 3.0f; - obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, o->oSmallPenguinUnk110 + 0x600); + cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, o->oSmallPenguinUnk110 + 0x600); if (o->oDistanceToMario > o->oSmallPenguinUnk108 + 500.0f) o->oAction = 0; - func_802BEA58(); + small_penguin_dive_with_mario(); if (sp1C) o->oAction = 5; } -void ActionSmallPenguin1(void) { - set_obj_animation_and_sound_state(0); +void small_penguin_act_1(void) { + cur_obj_init_animation_with_sound(0); o->oForwardVel = o->oSmallPenguinUnk104 + 3.0f; - obj_rotate_yaw_toward(o->oAngleToMario, o->oSmallPenguinUnk110 + 0x600); + cur_obj_rotate_yaw_toward(o->oAngleToMario, o->oSmallPenguinUnk110 + 0x600); if (o->oDistanceToMario < o->oSmallPenguinUnk108 + 300.0f) o->oAction = 0; if (o->oDistanceToMario > 1100.0f) o->oAction = 0; - func_802BEA58(); + small_penguin_dive_with_mario(); } -void ActionSmallPenguin3(void) { +void small_penguin_act_3(void) { if (o->oTimer > 5) { if (o->oTimer == 6) - PlaySound2(SOUND_OBJ_BABY_PENGUIN_DIVE); - set_obj_animation_and_sound_state(1); + cur_obj_play_sound_2(SOUND_OBJ_BABY_PENGUIN_DIVE); + cur_obj_init_animation_with_sound(1); if (o->oTimer > 25) if (!mario_is_dive_sliding()) o->oAction = 4; } } -void ActionSmallPenguin4(void) { +void small_penguin_act_4(void) { if (o->oTimer > 20) { o->oForwardVel = 0.0f; - set_obj_animation_and_sound_state(2); + cur_obj_init_animation_with_sound(2); if (o->oTimer > 40) o->oAction = o->oSmallPenguinUnk100; } } -void ActionSmallPenguin0(void) { +void small_penguin_act_0(void) { s32 sp1C; sp1C = 0; - set_obj_animation_and_sound_state(3); + cur_obj_init_animation_with_sound(3); if (o->oTimer == 0) { o->oSmallPenguinUnk110 = (s32)(RandomFloat() * 0x400); o->oSmallPenguinUnk108 = RandomFloat() * 100.0f; o->oSmallPenguinUnk104 = RandomFloat(); o->oForwardVel = 0.0f; - if (obj_dist_to_nearest_object_with_behavior(bhvTuxiesMother) < 1000.0f) + if (cur_obj_dist_to_nearest_object_with_behavior(bhvTuxiesMother) < 1000.0f) sp1C = 1; } if (o->oDistanceToMario < 1000.0f && o->oSmallPenguinUnk108 + 600.0f < o->oDistanceToMario) @@ -225,56 +214,56 @@ void ActionSmallPenguin0(void) { o->oAction = 2; if (sp1C) o->oAction = 5; - if (obj_mario_far_away()) - obj_set_pos_to_home(); + if (cur_obj_mario_far_away()) + cur_obj_set_pos_to_home(); } -void ActionSmallPenguin5(void) { +void small_penguin_act_5(void) { f32 sp24; s16 sp22; - struct Object *sp1C = obj_nearest_object_with_behavior(bhvTuxiesMother); + struct Object *sp1C = cur_obj_nearest_object_with_behavior(bhvTuxiesMother); if (sp1C != NULL) { if (o->oDistanceToMario < 1000.0f) o->oForwardVel = 2.0f; else o->oForwardVel = 0.0f; sp24 = dist_between_objects(o, sp1C); - sp22 = angle_to_object(o, sp1C); + sp22 = obj_angle_to_object(o, sp1C); if (sp24 > 200.0f) - obj_rotate_yaw_toward(sp22, 0x400); + cur_obj_rotate_yaw_toward(sp22, 0x400); else - obj_rotate_yaw_toward(sp22 + 0x8000, 0x400); - set_obj_animation_and_sound_state(0); + cur_obj_rotate_yaw_toward(sp22 + 0x8000, 0x400); + cur_obj_init_animation_with_sound(0); } - func_802BEA58(); + small_penguin_dive_with_mario(); } void (*sSmallPenguinActions[])(void) = { - ActionSmallPenguin0, ActionSmallPenguin1, ActionSmallPenguin2, - ActionSmallPenguin3, ActionSmallPenguin4, ActionSmallPenguin5 + small_penguin_act_0, small_penguin_act_1, small_penguin_act_2, + small_penguin_act_3, small_penguin_act_4, small_penguin_act_5 }; -void func_802BF048(void) { +void small_penguin_free_actions(void) { if (o->oSmallPenguinUnk88 != 0) { o->oAction = 5; o->oSmallPenguinUnk88 = 0; } - obj_update_floor_and_walls(); - obj_call_action_function(sSmallPenguinActions); - obj_move_standard(-78); + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sSmallPenguinActions); + cur_obj_move_standard(-78); play_penguin_walking_sound(PENGUIN_WALK_BABY); } void bhv_small_penguin_loop(void) { switch (o->oHeldState) { case HELD_FREE: - func_802BF048(); + small_penguin_free_actions(); break; case HELD_HELD: - func_8029FA5C(0, 0); - if (obj_has_behavior(bhvPenguinBaby)) - set_object_behavior(o, bhvSmallPenguin); - copy_object_pos(o, gMarioObject); + cur_obj_unrender_and_reset_state(0, 0); + if (cur_obj_has_behavior(bhvPenguinBaby)) + obj_set_behavior(o, bhvSmallPenguin); + obj_copy_pos(o, gMarioObject); if (gGlobalTimer % 30 == 0) #ifndef VERSION_JP play_sound(SOUND_OBJ2_BABY_PENGUIN_YELL, gMarioObject->header.gfx.cameraToObject); @@ -283,10 +272,10 @@ void bhv_small_penguin_loop(void) { #endif break; case HELD_THROWN: - obj_get_thrown_or_placed(0, 0, 0); + cur_obj_get_thrown_or_placed(0, 0, 0); break; case HELD_DROPPED: - obj_get_dropped(); + cur_obj_get_dropped(); break; } } diff --git a/src/game/behaviors/tweester.inc.c b/src/game/behaviors/tweester.inc.c index a5b99be3..62e95060 100644 --- a/src/game/behaviors/tweester.inc.c +++ b/src/game/behaviors/tweester.inc.c @@ -44,9 +44,9 @@ void tweester_scale_and_move(f32 preScale) { */ void tweester_act_idle(void) { if (o->oSubAction == TWEESTER_SUB_ACT_WAIT) { - obj_become_tangible(); - obj_set_pos_to_home(); - obj_scale(0); + cur_obj_become_tangible(); + cur_obj_set_pos_to_home(); + cur_obj_scale(0); // Hard to have any idea of this purpose, only set here. o->oTweesterUnused = 0; @@ -57,7 +57,7 @@ void tweester_act_idle(void) { o->oTimer = 0; } else { - PlaySound(SOUND_ENV_WIND1); + cur_obj_play_sound_1(SOUND_ENV_WIND1); tweester_scale_and_move(o->oTimer / 60.0f); if (o->oTimer > 59) o->oAction = TWEESTER_ACT_CHASE; @@ -71,34 +71,34 @@ void tweester_act_idle(void) { void tweester_act_chase(void) { f32 activationRadius = o->oBehParams2ndByte * 100; - o->oAngleToHome = obj_angle_to_home(); - PlaySound(SOUND_ENV_WIND1); + o->oAngleToHome = cur_obj_angle_to_home(); + cur_obj_play_sound_1(SOUND_ENV_WIND1); - if (obj_lateral_dist_from_mario_to_home() < activationRadius + if (cur_obj_lateral_dist_from_mario_to_home() < activationRadius && o->oSubAction == TWEESTER_SUB_ACT_CHASE) { o->oForwardVel = 20.0f; - obj_rotate_yaw_toward(o->oAngleToMario, 0x200); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200); print_debug_top_down_objectinfo("off ", 0); if (gMarioStates->action == ACT_TWIRLING) o->oSubAction++; } else { o->oForwardVel = 20.0f; - obj_rotate_yaw_toward(o->oAngleToHome, 0x200); + cur_obj_rotate_yaw_toward(o->oAngleToHome, 0x200); - if (obj_lateral_dist_to_home() < 200.0f) + if (cur_obj_lateral_dist_to_home() < 200.0f) o->oAction = TWEESTER_ACT_HIDE; } if (o->oDistanceToMario > 3000.0f) o->oAction = TWEESTER_ACT_HIDE; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) o->oMoveAngleYaw = o->oWallAngle; - obj_move_standard(60); + cur_obj_move_standard(60); tweester_scale_and_move(1.0f); spawn_object(o, MODEL_SAND_DUST, bhvTweesterSandParticle); } @@ -113,8 +113,8 @@ void tweester_act_hide(void) { if (shrinkTimer >= 0.0f) tweester_scale_and_move(shrinkTimer / 60.0f); else { - obj_become_intangible(); - if (obj_lateral_dist_from_mario_to_home() > 2500.0f) + cur_obj_become_intangible(); + if (cur_obj_lateral_dist_from_mario_to_home() > 2500.0f) o->oAction = TWEESTER_ACT_IDLE; if (o->oTimer > 360) o->oAction = TWEESTER_ACT_IDLE; @@ -129,8 +129,8 @@ void (*sTweesterActions[])(void) = { tweester_act_idle, tweester_act_chase, twee * Loads the hitbox and calls its relevant action. */ void bhv_tweester_loop(void) { - set_object_hitbox(o, &sTweesterHitbox); - obj_call_action_function(sTweesterActions); + obj_set_hitbox(o, &sTweesterHitbox); + cur_obj_call_action_function(sTweesterActions); o->oInteractStatus = 0; } @@ -143,14 +143,14 @@ void bhv_tweester_sand_particle_loop(void) { o->oForwardVel += 15.0f; o->oPosY += 22.0f; - obj_scale(RandomFloat() + 1.0); + cur_obj_scale(RandomFloat() + 1.0); if (o->oTimer == 0) { - translate_object_xz_random(o, 100.0f); + obj_translate_xz_random(o, 100.0f); o->oFaceAnglePitch = RandomU16(); o->oFaceAngleYaw = RandomU16(); } if (o->oTimer > 15) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } diff --git a/src/game/behaviors/ukiki.inc.c b/src/game/behaviors/ukiki.inc.c index b9db0c71..189fd263 100644 --- a/src/game/behaviors/ukiki.inc.c +++ b/src/game/behaviors/ukiki.inc.c @@ -13,8 +13,8 @@ */ void handle_hat_ukiki_reset(void) { if (o->oBehParams2ndByte == UKIKI_HAT) { - if (obj_mario_far_away()) { - obj_set_pos_to_home_and_stop(); + if (cur_obj_mario_far_away()) { + cur_obj_set_pos_to_home_and_stop(); o->oAction = UKIKI_ACT_IDLE; } else if (o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER) { o->oAction = UKIKI_ACT_WAIT_TO_RESPAWN; @@ -37,9 +37,9 @@ s32 is_hat_ukiki_and_mario_has_hat(void) { } /** - * Unused copy of Geo18_8029D890. Perhaps a copy paste mistake. + * Unused copy of geo_update_projectile_pos_from_parent. Perhaps a copy paste mistake. */ -Gfx *unused_Geo18_8029D890(s32 run,UNUSED struct GraphNode *node, Mat4 mtx) { +Gfx *geo_update_projectile_pos_from_parent_copy(s32 run,UNUSED struct GraphNode *node, Mat4 mtx) { Mat4 mtx2; struct Object* obj; @@ -48,9 +48,9 @@ Gfx *unused_Geo18_8029D890(s32 run,UNUSED struct GraphNode *node, Mat4 mtx) { obj = (struct Object*)gCurGraphNodeObject; if (obj->prevObj != NULL) { - func_8029D704(mtx2, mtx, gCurGraphNodeCamera->matrixPtr); - func_8029D558(mtx2, obj->prevObj); - func_8029EA0C(obj->prevObj); + create_transformation_from_matrices(mtx2, mtx, gCurGraphNodeCamera->matrixPtr); + obj_update_pos_from_parent_transformation(mtx2, obj->prevObj); + obj_set_gfx_pos_from_pos(obj->prevObj); } } @@ -76,17 +76,17 @@ void idle_ukiki_taunt(void) { // Switch goes from 1-4. switch(o->oSubAction) { case UKIKI_SUB_ACT_TAUNT_ITCH: - set_obj_animation_and_sound_state(UKIKI_ANIM_ITCH); + cur_obj_init_animation_with_sound(UKIKI_ANIM_ITCH); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oSubAction = UKIKI_SUB_ACT_TAUNT_NONE; } break; case UKIKI_SUB_ACT_TAUNT_SCREECH: - set_obj_animation_and_sound_state(UKIKI_ANIM_SCREECH); + cur_obj_init_animation_with_sound(UKIKI_ANIM_SCREECH); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oUkikiTauntCounter++; } @@ -96,9 +96,9 @@ void idle_ukiki_taunt(void) { break; case UKIKI_SUB_ACT_TAUNT_JUMP_CLAP: - set_obj_animation_and_sound_state(UKIKI_ANIM_JUMP_CLAP); + cur_obj_init_animation_with_sound(UKIKI_ANIM_JUMP_CLAP); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oUkikiTauntCounter++; } @@ -108,9 +108,9 @@ void idle_ukiki_taunt(void) { break; case UKIKI_SUB_ACT_TAUNT_HANDSTAND: - set_obj_animation_and_sound_state(UKIKI_ANIM_HANDSTAND); + cur_obj_init_animation_with_sound(UKIKI_ANIM_HANDSTAND); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oSubAction = UKIKI_SUB_ACT_TAUNT_NONE; } break; @@ -144,16 +144,16 @@ void ukiki_act_idle(void) { if (o->oUkikiTextState == UKIKI_TEXT_STOLE_HAT) { o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + 0x8000; - if (func_802B0C54(50.0f, 150.0f)) { + if (check_if_moving_over_floor(50.0f, 150.0f)) { o->oAction = UKIKI_ACT_JUMP; } else { o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + 0x4000; - if (func_802B0C54(50.0f, 150.0f)) { + if (check_if_moving_over_floor(50.0f, 150.0f)) { o->oAction = UKIKI_ACT_JUMP; } else { o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw - 0x4000; - if (func_802B0C54(50.0f, 150.0f)) { + if (check_if_moving_over_floor(50.0f, 150.0f)) { o->oAction = UKIKI_ACT_JUMP; } } @@ -176,8 +176,8 @@ void ukiki_act_idle(void) { void ukiki_act_return_home(void) { UNUSED s32 unused; - set_obj_animation_and_sound_state(UKIKI_ANIM_RUN); - o->oMoveAngleYaw = obj_angle_to_home(); + cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN); + o->oMoveAngleYaw = cur_obj_angle_to_home(); o->oForwardVel = 10.0f; // If ukiki somehow walked home, go back to the idle action. @@ -193,8 +193,8 @@ void ukiki_act_return_home(void) { void ukiki_act_wait_to_respawn(void) { idle_ukiki_taunt(); - if (obj_mario_far_away()) { - obj_set_pos_to_home_and_stop(); + if (cur_obj_mario_far_away()) { + cur_obj_set_pos_to_home_and_stop(); o->oAction = UKIKI_ACT_IDLE; } } @@ -209,7 +209,7 @@ void ukiki_act_unused_turn(void) { idle_ukiki_taunt(); if (o->oSubAction == UKIKI_SUB_ACT_TAUNT_JUMP_CLAP) { - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); } } @@ -224,9 +224,9 @@ void ukiki_act_turn_to_mario(void) { o->oForwardVel = RandomFloat() * 3.0f + 2.0f; } - set_obj_animation_and_sound_state(UKIKI_ANIM_TURN); + cur_obj_init_animation_with_sound(UKIKI_ANIM_TURN); - facingMario = obj_rotate_yaw_toward(o->oAngleToMario, 0x800); + facingMario = cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x800); if (facingMario) { o->oAction = UKIKI_ACT_IDLE; @@ -257,12 +257,12 @@ void ukiki_act_run(void) { o->oUkikiChaseFleeRange = RandomFloat() * 100.0f + 350.0f; } - set_obj_animation_and_sound_state(UKIKI_ANIM_RUN); - obj_rotate_yaw_toward(goalYaw, 0x800); + cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN); + cur_obj_rotate_yaw_toward(goalYaw, 0x800); //! @bug (Ukikispeedia) This function sets forward speed to 0.9 * Mario's //! forward speed, which means ukiki can move at hyperspeed rates. - func_8029F684(20.0f, 0.9f); + cur_obj_set_vel_from_mario_vel(20.0f, 0.9f); if (fleeMario) { if (o->oDistanceToMario > o->oUkikiChaseFleeRange) { @@ -275,11 +275,11 @@ void ukiki_act_run(void) { if (fleeMario) { if (o->oDistanceToMario < 200.0f) { if((o->oMoveFlags & OBJ_MOVE_HIT_WALL) && - obj_is_mario_moving_fast_or_in_air(10)) { + is_mario_moving_fast_or_in_air(10)) { o->oAction = UKIKI_ACT_JUMP; o->oMoveAngleYaw = o->oWallAngle; } else if((o->oMoveFlags & OBJ_MOVE_HIT_EDGE)) { - if (obj_is_mario_moving_fast_or_in_air(10)) { + if (is_mario_moving_fast_or_in_air(10)) { o->oAction = UKIKI_ACT_JUMP; o->oMoveAngleYaw += 0x8000; } @@ -294,21 +294,21 @@ void ukiki_act_run(void) { */ void ukiki_act_jump(void) { o->oForwardVel = 10.0f; - obj_become_intangible(); + cur_obj_become_intangible(); if (o->oSubAction == 0) { if (o->oTimer == 0) { - func_8029FA1C(RandomFloat() * 10.0f + 45.0f, UKIKI_ANIM_JUMP); + cur_obj_set_y_vel_and_animation(RandomFloat() * 10.0f + 45.0f, UKIKI_ANIM_JUMP); } else if (o->oMoveFlags & OBJ_MOVE_MASK_NOT_AIR) { o->oSubAction++; o->oVelY = 0.0f; } } else { o->oForwardVel = 0.0f; - set_obj_animation_and_sound_state(UKIKI_ANIM_LAND); - obj_become_tangible(); + cur_obj_init_animation_with_sound(UKIKI_ANIM_LAND); + cur_obj_become_tangible(); - if (func_8029F788()) { + if (cur_obj_check_if_near_animation_end()) { o->oAction = UKIKI_ACT_RUN; } } @@ -342,28 +342,28 @@ void ukiki_act_go_to_cage(void) { struct Object* obj; f32 latDistToCage = 0.0f; s16 yawToCage = 0; - obj = obj_nearest_object_with_behavior(bhvUkikiCageChild); + obj = cur_obj_nearest_object_with_behavior(bhvUkikiCageChild); // Ultimately is checking the cage, as it points to the parent // of a dummy child object of the cage. if (obj != NULL) { latDistToCage = lateral_dist_between_objects(o, obj->parentObj); - yawToCage = angle_to_object(o, obj->parentObj); + yawToCage = obj_angle_to_object(o, obj->parentObj); } - obj_become_intangible(); + cur_obj_become_intangible(); o->oFlags |= OBJ_FLAG_ACTIVE_FROM_AFAR; // Switch goes from 0-7 in order. switch(o->oSubAction) { case UKIKI_SUB_ACT_CAGE_RUN_TO_CAGE: - set_obj_animation_and_sound_state(UKIKI_ANIM_RUN); + cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN); o->oPathedWaypointsS16 = sCageUkikiPath; - if (obj_follow_path(0) != PATH_REACHED_END) { + if (cur_obj_follow_path(0) != PATH_REACHED_END) { o->oForwardVel = 10.0f; - obj_rotate_yaw_toward(o->oPathedTargetYaw, 0x400); + cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, 0x400); o->oPosY = o->oFloorHeight; } else { o->oForwardVel = 0.0f; @@ -372,34 +372,34 @@ void ukiki_act_go_to_cage(void) { break; case UKIKI_SUB_ACT_CAGE_WAIT_FOR_MARIO: - set_obj_animation_and_sound_state(UKIKI_ANIM_JUMP_CLAP); - obj_rotate_yaw_toward(o->oAngleToMario, 0x400); + cur_obj_init_animation_with_sound(UKIKI_ANIM_JUMP_CLAP); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); - if (func_802A3FF8(200.0f, 30.0f, 0x7FFF)) { + if (cur_obj_can_mario_activate_textbox(200.0f, 30.0f, 0x7FFF)) { o->oSubAction++; // fallthrough } else { break; } case UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO: - set_obj_animation_and_sound_state(UKIKI_ANIM_HANDSTAND); + cur_obj_init_animation_with_sound(UKIKI_ANIM_HANDSTAND); - if (obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG, DIALOG_080)) { + if (cur_obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG, DIALOG_080)) { o->oSubAction++; } break; case UKIKI_SUB_ACT_CAGE_TURN_TO_CAGE: - set_obj_animation_and_sound_state(UKIKI_ANIM_RUN); + cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN); - if (obj_rotate_yaw_toward(yawToCage, 0x400)) { + if (cur_obj_rotate_yaw_toward(yawToCage, 0x400)) { o->oForwardVel = 10.0f; o->oSubAction++; } break; case UKIKI_SUB_ACT_CAGE_JUMP_TO_CAGE: - func_8029FA1C(55.0f, UKIKI_ANIM_JUMP); + cur_obj_set_y_vel_and_animation(55.0f, UKIKI_ANIM_JUMP); o->oForwardVel = 36.0f; o->oSubAction++; break; @@ -411,7 +411,7 @@ void ukiki_act_go_to_cage(void) { if (o->oMoveFlags & OBJ_MOVE_LANDED) { play_puzzle_jingle(); - set_obj_animation_and_sound_state(UKIKI_ANIM_JUMP_CLAP); + cur_obj_init_animation_with_sound(UKIKI_ANIM_JUMP_CLAP); o->oSubAction++; o->oUkikiCageSpinTimer = 32; obj->parentObj->oUkikiCageNextAction = UKIKI_CAGE_ACT_SPIN; @@ -431,7 +431,7 @@ void ukiki_act_go_to_cage(void) { case UKIKI_SUB_ACT_CAGE_DESPAWN: if (o->oPosY < -1300.0f) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } break; } @@ -479,8 +479,8 @@ void (*sUkikiActions[])(void) = { void ukiki_free_loop(void) { s32 steepSlopeAngleDegrees; - obj_update_floor_and_walls(); - obj_call_action_function(sUkikiActions); + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sUkikiActions); if (o->oAction == UKIKI_ACT_GO_TO_CAGE || o->oAction == UKIKI_ACT_RETURN_HOME) { steepSlopeAngleDegrees = -88; @@ -488,7 +488,7 @@ void ukiki_free_loop(void) { steepSlopeAngleDegrees = -20; } - obj_move_standard(steepSlopeAngleDegrees); + cur_obj_move_standard(steepSlopeAngleDegrees); handle_hat_ukiki_reset(); if(!(o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER)) { @@ -568,7 +568,7 @@ void hat_ukiki_held_loop(void) { break; case UKIKI_TEXT_STEAL_HAT: - if (obj_update_dialog(2, 2, DIALOG_100, 0)) { + if (cur_obj_update_dialog(2, 2, DIALOG_100, 0)) { o->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY; o->oUkikiTextState = UKIKI_TEXT_STOLE_HAT; } @@ -578,7 +578,7 @@ void hat_ukiki_held_loop(void) { break; case UKIKI_TEXT_HAS_HAT: - if (obj_update_dialog(2, 18, DIALOG_101, 0)) { + if (cur_obj_update_dialog(2, 18, DIALOG_101, 0)) { mario_retrieve_cap(); set_mario_npc_dialog(0); o->oUkikiHasHat &= ~UKIKI_HAT_ON; @@ -618,8 +618,8 @@ void bhv_ukiki_loop(void) { break; case HELD_HELD: - func_8029FA5C(UKIKI_ANIM_HELD, 0); - copy_object_pos(o, gMarioObject); + cur_obj_unrender_and_reset_state(UKIKI_ANIM_HELD, 0); + obj_copy_pos(o, gMarioObject); if (o->oBehParams2ndByte == UKIKI_HAT) { hat_ukiki_held_loop(); @@ -630,7 +630,7 @@ void bhv_ukiki_loop(void) { case HELD_THROWN: case HELD_DROPPED: - obj_get_dropped(); + cur_obj_get_dropped(); break; } diff --git a/src/game/behaviors/ukiki_cage.inc.c b/src/game/behaviors/ukiki_cage.inc.c index 1e1a7e1c..68a64e8a 100644 --- a/src/game/behaviors/ukiki_cage.inc.c +++ b/src/game/behaviors/ukiki_cage.inc.c @@ -19,14 +19,14 @@ void bhv_ukiki_cage_star_loop(void) { case UKIKI_CAGE_STAR_ACT_IN_CAGE: // Initialization to see if the star is collected (blue) or not (yellow). if (o->oTimer == 0) { - if (func_802A377C(1) + if (bit_shift_left(1) & save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1)) { - obj_set_model(MODEL_TRANSPARENT_STAR); + cur_obj_set_model(MODEL_TRANSPARENT_STAR); } } - copy_object_pos(o, o->parentObj); - copy_object_behavior_params(o, o->parentObj); + obj_copy_pos(o, o->parentObj); + obj_copy_behavior_params(o, o->parentObj); // When they cage hides itself, spawn particles and the star. if (o->parentObj->oAction == UKIKI_CAGE_ACT_HIDE) { @@ -34,10 +34,10 @@ void bhv_ukiki_cage_star_loop(void) { } break; case UKIKI_CAGE_STAR_ACT_SPAWN_STAR: - mark_object_for_deletion(o); - func_802A3004(); + obj_mark_for_deletion(o); + spawn_mist_particles(); spawn_triangle_break_particles(20, 138, 0.7, 3); - create_star(2500.0f, -1200.0f, 1300.0f); + spawn_default_star(2500.0f, -1200.0f, 1300.0f); break; } @@ -73,8 +73,8 @@ void ukiki_cage_act_spin(void) { */ void ukiki_cage_act_fall(void) { //! (PARTIAL_UPDATE) - obj_update_floor_and_walls(); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); if (o->oMoveFlags & (OBJ_MOVE_LANDED | OBJ_MOVE_ENTERED_WATER)) { o->oAction = UKIKI_CAGE_ACT_HIDE; } @@ -87,7 +87,7 @@ void ukiki_cage_act_fall(void) { * hiding the object? */ void ukiki_cage_act_hide(void) { - obj_hide(); + cur_obj_hide(); } /** @@ -102,5 +102,5 @@ void (*sUkikiCageActions[])(void) = { * Main behavior loop for the cage. Only calls the relevant action. */ void bhv_ukiki_cage_loop(void) { - obj_call_action_function(sUkikiCageActions); + cur_obj_call_action_function(sUkikiCageActions); } diff --git a/src/game/behaviors/unagi.inc.c b/src/game/behaviors/unagi.inc.c index 15eff0c8..d1023e90 100644 --- a/src/game/behaviors/unagi.inc.c +++ b/src/game/behaviors/unagi.inc.c @@ -44,42 +44,42 @@ void unagi_act_0(void) { void unagi_act_1_4(s32 arg0) { if (o->oSoundStateID == 3) { - if (obj_check_anim_frame(30)) { + if (cur_obj_check_anim_frame(30)) { o->oForwardVel = 40.0f; } } else { - if (func_8029F828()) { + if (cur_obj_check_if_at_animation_end()) { if (o->oAction != arg0 && (o->oPathedPrevWaypointFlags & 0xFF) >= 7) { - set_obj_animation_and_sound_state(3); + cur_obj_init_animation_with_sound(3); } else { - set_obj_animation_and_sound_state(2); + cur_obj_init_animation_with_sound(2); } } } - if (obj_check_anim_frame(6)) { - PlaySound2(SOUND_GENERAL_MOVING_WATER); + if (cur_obj_check_anim_frame(6)) { + cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER); } - if (obj_follow_path(0) == -1) { + if (cur_obj_follow_path(0) == -1) { o->oAction = arg0; } o->oMoveAnglePitch = o->oFaceAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, o->oPathedTargetPitch, 50); - obj_rotate_yaw_toward(o->oPathedTargetYaw, 120); + cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, 120); obj_roll_to_match_yaw_turn(o->oPathedTargetYaw, 0x2000, 100); obj_forward_vel_approach(10.0f, 0.2f); - func_802A2A38(); + cur_obj_set_pos_via_transform(); } void unagi_act_2(void) { o->oPathedPrevWaypoint = o->oPathedStartWaypoint; o->oPathedPrevWaypointFlags = 0; - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); o->oMoveAnglePitch = o->oFaceAnglePitch = 0; o->oMoveAngleYaw = o->oFaceAngleYaw = o->oUnagiUnk1B0; @@ -94,17 +94,17 @@ void unagi_act_2(void) { void unagi_act_3(void) { if (o->oUnagiUnkF4 < 0.0f) { - set_obj_animation_and_sound_state(6); + cur_obj_init_animation_with_sound(6); if ((o->oUnagiUnkF4 += 10.0f) > 0.0f) { o->oUnagiUnkF4 = 0.0f; } } else { if (o->oUnagiUnkF4 == 0.0f) { - set_obj_animation_and_sound_state(6); + cur_obj_init_animation_with_sound(6); if (o->oTimer > 60 && o->oUnagiUnk1AC < 1000.0f) { - PlaySound2(SOUND_OBJ_EEL_2); + cur_obj_play_sound_2(SOUND_OBJ_EEL_2); o->oUnagiUnkF8 = o->oUnagiUnk110 = 30.0f; } else { o->oUnagiUnk110 = 0.0f; @@ -114,15 +114,15 @@ void unagi_act_3(void) { o->oUnagiUnk110 = 0.0f; } } else if (o->oUnagiUnk110 == 0.0f) { - set_obj_animation_and_sound_state(0); - if (func_8029F828()) { + cur_obj_init_animation_with_sound(0); + if (cur_obj_check_if_at_animation_end()) { if (o->oUnagiUnk1AC < 1000.0f) { o->oAction = 4; o->oForwardVel = o->oUnagiUnkF8; - set_obj_animation_and_sound_state(1); + cur_obj_init_animation_with_sound(1); } else { o->oUnagiUnk110 = -50.0f; - set_obj_animation_and_sound_state(4); + cur_obj_init_animation_with_sound(4); } } } @@ -176,7 +176,7 @@ void bhv_unagi_subobject_loop(void) { f32 val04; if (o->parentObj->oUnagiUnk1B2 == 0) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { val04 = 300.0f * o->oBehParams2ndByte; @@ -190,7 +190,7 @@ void bhv_unagi_subobject_loop(void) { if (o->oBehParams2ndByte == -4) { if (o->parentObj->oAnimState != 0 && o->oDistanceToMario < 150.0f) { o->oBehParams = o->parentObj->oBehParams; - create_star(6833.0f, -3654.0f, 2230.0f); + spawn_default_star(6833.0f, -3654.0f, 2230.0f); o->parentObj->oAnimState = 0; } } else { diff --git a/src/game/behaviors/unused_particle_spawn.inc.c b/src/game/behaviors/unused_particle_spawn.inc.c index e66fd68e..2e22855d 100644 --- a/src/game/behaviors/unused_particle_spawn.inc.c +++ b/src/game/behaviors/unused_particle_spawn.inc.c @@ -7,15 +7,15 @@ void bhv_unused_particle_spawn_loop(void) { s32 i; - obj_update_floor_and_walls(); - obj_move_standard(78); + cur_obj_update_floor_and_walls(); + cur_obj_move_standard(78); if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } - if (are_objects_collided(o, gMarioObject)) { - mark_object_for_deletion(o); + if (obj_check_if_collided_with_object(o, gMarioObject)) { + obj_mark_for_deletion(o); for (i = 0; i < 10; i++) { spawn_object(o, MODEL_PURPLE_MARBLE, bhvPurpleParticle); diff --git a/src/game/behaviors/unused_poundable_platform.inc.c b/src/game/behaviors/unused_poundable_platform.inc.c index 0835b996..23816905 100644 --- a/src/game/behaviors/unused_poundable_platform.inc.c +++ b/src/game/behaviors/unused_poundable_platform.inc.c @@ -13,16 +13,16 @@ */ void bhv_unused_poundable_platform(void) { - obj_scale(1.02f); + cur_obj_scale(1.02f); if (o->oAction == 0) { - if (obj_is_mario_ground_pounding_platform()) { - func_802A3004(); + if (cur_obj_is_mario_ground_pounding_platform()) { + spawn_mist_particles(); spawn_triangle_break_particles(20, 56, 3.0f, 0); o->oAction++; } } else if (o->oTimer > 7) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } load_object_collision_model(); } diff --git a/src/game/behaviors/walking_penguin.inc.c b/src/game/behaviors/walking_penguin.inc.c deleted file mode 100644 index 46cd3c8e..00000000 --- a/src/game/behaviors/walking_penguin.inc.c +++ /dev/null @@ -1,73 +0,0 @@ -// walking_penguin.c.inc - -struct Struct8032FE4C D_8032FE4C[] = { { 60, 0, 6.0f, 1.0f }, { 30, 3, 0.0f, 1.0f }, - { 30, 0, 12.0f, 2.0f }, { 30, 3, 0.0f, 1.0f }, - { 30, 0, -6.0f, 1.0f }, { 30, 3, 0.0f, 1.0f }, - { -1, 0, 0.0f, 0.0f } }; - -s32 func_802C7AD0(void) { - o->oForwardVel = 0.0f; - func_8029ED98(0, 1.0f); - o->oAngleVelYaw = 0x400; - o->oMoveAngleYaw += o->oAngleVelYaw; - if (o->oTimer == 31) - return 1; - else - return 0; -} - -void bhv_walking_penguin_loop(void) { - f32 sp2C; - f32 sp28; - f32 sp24 = 100.0f; - o->oAngleVelYaw = 0; - obj_update_floor_and_walls(); - switch (o->oAction) { - case 0: - if (o->oTimer == 0) { - o->oWalkingPenguinUnk10C = 0; - o->oWalkingPenguinUnk110 = 0; - } - if (o->oWalkingPenguinUnk110 < D_8032FE4C[o->oWalkingPenguinUnk10C].unk0) - o->oWalkingPenguinUnk110++; - else { - o->oWalkingPenguinUnk110 = 0; - o->oWalkingPenguinUnk10C++; - if (D_8032FE4C[o->oWalkingPenguinUnk10C].unk0 < 0) - o->oWalkingPenguinUnk10C = 0; - } - if (o->oPosX < 300.0f) - o->oAction++; - else { - o->oForwardVel = D_8032FE4C[o->oWalkingPenguinUnk10C].unk2; - func_8029ED98(D_8032FE4C[o->oWalkingPenguinUnk10C].unk1, - D_8032FE4C[o->oWalkingPenguinUnk10C].unk3); - } - break; - case 1: - if (func_802C7AD0()) - o->oAction++; - break; - case 2: - o->oForwardVel = 12.0f; - func_8029ED98(0, 2.0f); - if (o->oPosX > 1700.0f) - o->oAction++; - break; - case 3: - if (func_802C7AD0()) - o->oAction = 0; - break; - } - obj_move_standard(-78); - if (!obj_hide_if_mario_far_away_y(1000.0f)) - play_penguin_walking_sound(1); - sp2C = o->oPosX + sins(0xDBB0) * 60.0f; - sp28 = o->oPosZ + coss(0xDBB0) * 60.0f; - sp2C += sp24 * sins(0x1BB0); - sp28 += sp24 * coss(0x1BB0); - o->oWalkingPenguinUnk100 = sp2C; - o->oWalkingPenguinUnk104 = sp28; - print_debug_bottom_up("x %d", o->oPosX); - print_debug_bottom_up("z %d", o->oPosZ); -} diff --git a/src/game/behaviors/warp.inc.c b/src/game/behaviors/warp.inc.c index 8fdca8b5..107af849 100644 --- a/src/game/behaviors/warp.inc.c +++ b/src/game/behaviors/warp.inc.c @@ -15,7 +15,7 @@ void bhv_warp_loop(void) { o->oInteractStatus = 0; } -void BehFadingWarpLoop() // identical to the above function except for o->hitboxRadius +void bhv_fading_warp_loop() // identical to the above function except for o->hitboxRadius { u16 sp6; if (o->oTimer == 0) { diff --git a/src/game/behaviors/water_bomb.inc.c b/src/game/behaviors/water_bomb.inc.c index 7674dcae..a309154e 100644 --- a/src/game/behaviors/water_bomb.inc.c +++ b/src/game/behaviors/water_bomb.inc.c @@ -105,7 +105,7 @@ void water_bomb_spawn_explode_particles(s8 offsetY, s8 forwardVelRange, s8 velYB sWaterBombExplodeParticles.offsetY = offsetY; sWaterBombExplodeParticles.forwardVelRange = forwardVelRange; sWaterBombExplodeParticles.velYBase = velYBase; - obj_spawn_particles(&sWaterBombExplodeParticles); + cur_obj_spawn_particles(&sWaterBombExplodeParticles); #else s8 tempVelYBase = velYBase; s8 tempForwardVelRange = forwardVelRange; @@ -115,7 +115,7 @@ void water_bomb_spawn_explode_particles(s8 offsetY, s8 forwardVelRange, s8 velYB sWaterBombExplodeParticles.offsetY = tempOffsetY; sWaterBombExplodeParticles.forwardVelRange = tempForwardVelRange; sWaterBombExplodeParticles.velYBase = tempVelYBase; - obj_spawn_particles(&sWaterBombExplodeParticles); + cur_obj_spawn_particles(&sWaterBombExplodeParticles); } while (0); #endif } @@ -124,7 +124,7 @@ void water_bomb_spawn_explode_particles(s8 offsetY, s8 forwardVelRange, s8 velYB * Enter the drop action with -40 y vel. */ static void water_bomb_act_init(void) { - PlaySound2(SOUND_OBJ_SOMETHING_LANDING); + cur_obj_play_sound_2(SOUND_OBJ_SOMETHING_LANDING); o->oAction = WATER_BOMB_ACT_DROP; o->oMoveFlags = 0; @@ -138,7 +138,7 @@ static void water_bomb_act_init(void) { static void water_bomb_act_drop(void) { f32 stretch; - set_object_hitbox(o, &sWaterBombHitbox); + obj_set_hitbox(o, &sWaterBombHitbox); // Explode if touched or if hit water if ((o->oInteractStatus & INT_STATUS_INTERACTED) || (o->oMoveFlags & OBJ_MOVE_ENTERED_WATER)) { @@ -151,7 +151,7 @@ static void water_bomb_act_drop(void) { o->oWaterBombOnGround = TRUE; if ((o->oWaterBombNumBounces += 1.0f) < 3.0f) { - PlaySound2(SOUND_OBJ_WATER_BOMB_BOUNCING); + cur_obj_play_sound_2(SOUND_OBJ_WATER_BOMB_BOUNCING); } else { create_sound_spawner(SOUND_OBJ_DIVING_IN_WATER); } @@ -189,7 +189,7 @@ static void water_bomb_act_drop(void) { } o->header.gfx.scale[0] = o->header.gfx.scale[2] = 1.0f - stretch; - obj_move_standard(78); + cur_obj_move_standard(78); } /** @@ -199,7 +199,7 @@ static void water_bomb_act_drop(void) { static void water_bomb_act_explode(void) { water_bomb_spawn_explode_particles(25, 60, 10); o->parentObj->oWaterBombSpawnerBombActive = FALSE; - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } /** @@ -207,13 +207,13 @@ static void water_bomb_act_explode(void) { */ static void water_bomb_act_shot_from_cannon(void) { if (o->oTimer > 100) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { if (o->oTimer < 7) { if (o->oTimer == 1) { water_bomb_spawn_explode_particles(-20, 10, 30); } - obj_spawn_particles(&sWaterBombCannonParticle); + cur_obj_spawn_particles(&sWaterBombCannonParticle); } if (o->header.gfx.scale[1] > 1.2f) { @@ -221,7 +221,7 @@ static void water_bomb_act_shot_from_cannon(void) { } o->header.gfx.scale[0] = o->header.gfx.scale[2] = 2.0f - o->header.gfx.scale[1]; - func_802A2A38(); + cur_obj_set_pos_via_transform(); } } @@ -233,7 +233,7 @@ void bhv_water_bomb_update(void) { water_bomb_act_shot_from_cannon(); } else { o->oGraphYOffset = 40.0f * o->header.gfx.scale[1]; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case WATER_BOMB_ACT_INIT: @@ -255,7 +255,7 @@ void bhv_water_bomb_update(void) { */ void bhv_water_bomb_shadow_update(void) { if (o->parentObj->oAction == WATER_BOMB_ACT_EXPLODE) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { // TODO: What is happening here f32 bombHeight = o->parentObj->oPosY - o->parentObj->oFloorHeight; @@ -263,8 +263,8 @@ void bhv_water_bomb_shadow_update(void) { bombHeight = 500.0f; } - copy_object_pos(o, o->parentObj); + obj_copy_pos(o, o->parentObj); o->oPosY = o->parentObj->oFloorHeight + bombHeight; - copy_object_scale(o, o->parentObj); + obj_copy_scale(o, o->parentObj); } } diff --git a/src/game/behaviors/water_bomb_cannon.inc.c b/src/game/behaviors/water_bomb_cannon.inc.c index 20395eba..3dbe53aa 100644 --- a/src/game/behaviors/water_bomb_cannon.inc.c +++ b/src/game/behaviors/water_bomb_cannon.inc.c @@ -4,18 +4,18 @@ void bhv_bubble_cannon_barrel_loop(void) { struct Object *val04; if (o->parentObj->oAction == 2) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } else { o->oMoveAngleYaw = o->parentObj->oFaceAngleYaw; o->oMoveAnglePitch = o->parentObj->oMoveAnglePitch + 0x4000; o->oFaceAnglePitch = o->parentObj->oMoveAnglePitch; if ((o->oCannonBarrelBubblesUnkF4 += o->oForwardVel) > 0.0f) { - func_802A2A38(); + cur_obj_set_pos_via_transform(); obj_forward_vel_approach(-5.0f, 18.0f); } else { o->oCannonBarrelBubblesUnkF4 = 0.0f; - copy_object_pos(o, o->parentObj); + obj_copy_pos(o, o->parentObj); // check this if (o->parentObj->oWaterCannonUnkF4 != 0) { @@ -40,7 +40,7 @@ void bhv_bubble_cannon_barrel_loop(void) { void water_bomb_cannon_act_0(void) { if (o->oDistanceToMario < 2000.0f) { spawn_object(o, MODEL_CANNON_BARREL, bhvCannonBarrelBubbles); - obj_unhide(); + cur_obj_unhide(); o->oAction = 1; o->oMoveAnglePitch = o->oWaterCannonUnkFC = 0x1C00; @@ -61,7 +61,7 @@ void water_bomb_cannon_act_1(void) { if (o->oWaterCannonUnkF8 != 0) { o->oWaterCannonUnkF8 -= 1; } else { - PlaySound2(SOUND_OBJ_CANNON4); + cur_obj_play_sound_2(SOUND_OBJ_CANNON4); o->oWaterCannonUnkF4 = 70; o->oWaterCannonUnkFC = 0x1000 + 0x400 * (RandomU16() & 0x3); o->oWaterCannonUnk100 = -0x2000 + o->oMoveAngleYaw + 0x1000 * (RandomU16() % 5); @@ -73,12 +73,12 @@ void water_bomb_cannon_act_1(void) { } void water_bomb_cannon_act_2(void) { - obj_hide(); + cur_obj_hide(); o->oAction = 0; } void bhv_water_bomb_cannon_loop(void) { - obj_push_mario_away_from_cylinder(220.0f, 300.0f); + cur_obj_push_mario_away_from_cylinder(220.0f, 300.0f); switch (o->oAction) { case 0: diff --git a/src/game/behaviors/water_mist_particle.inc.c b/src/game/behaviors/water_mist_particle.inc.c index 5117ffcf..cb9243ae 100644 --- a/src/game/behaviors/water_mist_particle.inc.c +++ b/src/game/behaviors/water_mist_particle.inc.c @@ -2,7 +2,7 @@ // TODO: Is this really "mist"? void bhv_water_mist_spawn_loop(void) { - func_802ADBBC(0x20000); + clear_particle_flags(0x20000); spawn_object(o, MODEL_MIST, bhvWaterMist); } @@ -10,12 +10,12 @@ void bhv_water_mist_loop(void) { f32 sp1C; if (o->oTimer == 0) { o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw; - translate_object_xz_random(o, 10.0f); + obj_translate_xz_random(o, 10.0f); } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); o->oOpacity -= 42; sp1C = (254 - o->oOpacity) / 254.0 * 1.0 + 0.5; // seen this before - obj_scale(sp1C); + cur_obj_scale(sp1C); if (o->oOpacity < 2) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } diff --git a/src/game/behaviors/water_objs.inc.c b/src/game/behaviors/water_objs.inc.c index 8589adfa..6168605c 100644 --- a/src/game/behaviors/water_objs.inc.c +++ b/src/game/behaviors/water_objs.inc.c @@ -2,7 +2,7 @@ // TODO: Better name, please void bhv_water_air_bubble_init(void) { - obj_scale(4.0f); + cur_obj_scale(4.0f); } // Fields 0xF4 & 0xF8 seem to be angles for bubble and cannon @@ -13,35 +13,35 @@ void bhv_water_air_bubble_loop(void) { o->header.gfx.scale[1] = -sins(o->oWaterObjUnkF4) * 0.5 + 4.0; o->oWaterObjUnkF4 += 0x400; if (o->oTimer < 30) { - obj_become_intangible(); + cur_obj_become_intangible(); o->oPosY += 3.0f; } else { - obj_become_tangible(); - obj_forward_vel_approach_upward(2.0f, 10.0f); - o->oMoveAngleYaw = angle_to_object(o, gMarioObject); - obj_move_using_fvel_and_gravity(); + cur_obj_become_tangible(); + cur_obj_forward_vel_approach_upward(2.0f, 10.0f); + o->oMoveAngleYaw = obj_angle_to_object(o, gMarioObject); + cur_obj_move_using_fvel_and_gravity(); } o->oPosX += RandomFloat() * 4.0f - 2.0f; o->oPosZ += RandomFloat() * 4.0f - 2.0f; if (o->oInteractStatus & INT_STATUS_INTERACTED || o->oTimer > 200) { - PlaySound2(SOUND_GENERAL_QUIET_BUBBLE); - mark_object_for_deletion(o); + cur_obj_play_sound_2(SOUND_GENERAL_QUIET_BUBBLE); + obj_mark_for_deletion(o); for (i = 0; i < 30; i++) spawn_object(o, MODEL_BUBBLE, bhvBubbleMaybe); } if (find_water_level(o->oPosX, o->oPosZ) < o->oPosY) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); o->oInteractStatus = 0; } void bhv_bubble_wave_init(void) { o->oWaterObjUnkFC = 0x800 + (s32)(RandomFloat() * 2048.0f); o->oWaterObjUnk100 = 0x800 + (s32)(RandomFloat() * 2048.0f); - PlaySound2(SOUND_GENERAL_QUIET_BUBBLE); + cur_obj_play_sound_2(SOUND_GENERAL_QUIET_BUBBLE); } -void Unknown802A7E48(void) { - obj_scale(RandomFloat() + 1.0); +void scale_bubble_random(void) { + cur_obj_scale(RandomFloat() + 1.0); } void bhv_bubble_maybe_loop(void) { @@ -64,13 +64,13 @@ void bhv_small_water_wave_loop(void) { o->activeFlags = 0; o->oPosY += 5.0f; if (gFreeObjectList.next != NULL) - spawn_object(o, MODEL_SPOT_ON_GROUND, bhvWaterSurfaceWhiteWave2); + spawn_object(o, MODEL_SMALL_WATER_SPLASH, bhvObjectWaterSplash); } if (o->oInteractStatus & INT_STATUS_INTERACTED) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } -void func_802A81C4(void) { +void scale_bubble_sin(void) { o->header.gfx.scale[0] = sins(o->oWaterObjUnkF4) * 0.5 + 2.0; o->oWaterObjUnkF4 += o->oWaterObjUnkFC; o->header.gfx.scale[1] = sins(o->oWaterObjUnkF8) * 0.5 + 2.0; @@ -78,27 +78,27 @@ void func_802A81C4(void) { } void bhv_particle_init(void) { - scale_object_xyz(o, 2.0f, 2.0f, 1.0f); + obj_scale_xyz(o, 2.0f, 2.0f, 1.0f); o->oWaterObjUnkFC = 0x800 + (s32)(RandomFloat() * 2048.0f); o->oWaterObjUnk100 = 0x800 + (s32)(RandomFloat() * 2048.0f); - translate_object_xyz_random(o, 100.0f); + obj_translate_xyz_random(o, 100.0f); } void bhv_particle_loop() { f32 sp24 = find_water_level(o->oPosX, o->oPosZ); o->oPosY += 5.0f; - translate_object_xz_random(o, 4.0f); - func_802A81C4(); + obj_translate_xz_random(o, 4.0f); + scale_bubble_sin(); if (o->oPosY > sp24 && o->oTimer) { - mark_object_for_deletion(o); - try_to_spawn_object(5, 0, o, MODEL_SPOT_ON_GROUND, bhvWaterSurfaceWhiteWave2); + obj_mark_for_deletion(o); + try_to_spawn_object(5, 0, o, MODEL_SMALL_WATER_SPLASH, bhvObjectWaterSplash); } } void bhv_small_bubbles_loop(void) { o->oPosY += 5.0f; - translate_object_xz_random(o, 4.0f); - func_802A81C4(); + obj_translate_xz_random(o, 4.0f); + scale_bubble_sin(); } void bhv_fish_group_loop(void) { diff --git a/src/game/behaviors/water_pillar.inc.c b/src/game/behaviors/water_pillar.inc.c index 6fe0f489..5b7f2656 100644 --- a/src/game/behaviors/water_pillar.inc.c +++ b/src/game/behaviors/water_pillar.inc.c @@ -1,12 +1,12 @@ // water_pillar.c.inc -void func_802B95A4(void) { +void water_level_pillar_undrained(void) { struct Object *sp1C; switch (o->oAction) { case 0: - if (obj_is_mario_ground_pounding_platform()) { + if (cur_obj_is_mario_ground_pounding_platform()) { o->oAction++; - func_802A3004(); + spawn_mist_particles(); } break; case 1: @@ -16,14 +16,14 @@ void func_802B95A4(void) { o->oAction++; break; case 2: - sp1C = obj_nearest_object_with_behavior(bhvWaterLevelPillar); + sp1C = cur_obj_nearest_object_with_behavior(bhvWaterLevelPillar); if (sp1C != NULL) { if (sp1C->oAction < 2) o->oAction++; } break; case 3: - sp1C = obj_nearest_object_with_behavior(bhvWaterLevelPillar); + sp1C = cur_obj_nearest_object_with_behavior(bhvWaterLevelPillar); if (sp1C != NULL) { if (sp1C->oAction > 1) { o->oAction++; @@ -34,7 +34,7 @@ void func_802B95A4(void) { } break; case 4: - PlaySound(SOUND_ENV_WATER_DRAIN); + cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN); if (o->oTimer < 300) { gEnvironmentLevels[2] = (s32) approach_f32_symmetric(gEnvironmentLevels[2], -2450.0f, 5.0f); @@ -48,7 +48,7 @@ void func_802B95A4(void) { } } -void func_802B97E4(void) { +void water_level_pillar_drained(void) { if (o->oTimer == 0) { o->oPosY -= 80.0f; gEnvironmentLevels[2] = -2450; @@ -63,9 +63,9 @@ void bhv_water_level_pillar_init(void) { void bhv_water_level_pillar_loop(void) { if (o->oWaterLevelPillarUnkF8) - func_802B97E4(); + water_level_pillar_drained(); else - func_802B95A4(); + water_level_pillar_undrained(); gEnvironmentRegions[18] = gEnvironmentLevels[2]; gEnvironmentRegions[6] = gEnvironmentLevels[0]; } diff --git a/src/game/behaviors/water_ring.inc.c b/src/game/behaviors/water_ring.inc.c index 3d1649c9..6cdc43d4 100644 --- a/src/game/behaviors/water_ring.inc.c +++ b/src/game/behaviors/water_ring.inc.c @@ -1,6 +1,6 @@ // water_ring.c.inc -f32 WaterRingCalcMarioDistInFront(void) { +f32 water_ring_calc_mario_dist(void) { f32 marioDistX = o->oPosX - gMarioObject->header.gfx.pos[0]; f32 marioDistY = o->oPosY - (gMarioObject->header.gfx.pos[1] + 80.0f); f32 marioDistZ = o->oPosZ - gMarioObject->header.gfx.pos[2]; @@ -10,8 +10,8 @@ f32 WaterRingCalcMarioDistInFront(void) { return marioDistInFront; } -void WaterRingInit(void) { - SetObjAnimation(0); +void water_ring_init(void) { + cur_obj_init_animation(0); o->oWaterRingScalePhaseX = (s32)(RandomFloat() * 4096.0f) + 0x1000; o->oWaterRingScalePhaseY = (s32)(RandomFloat() * 4096.0f) + 0x1000; o->oWaterRingScalePhaseZ = (s32)(RandomFloat() * 4096.0f) + 0x1000; @@ -25,7 +25,7 @@ void WaterRingInit(void) { o->oWaterRingNormalY = coss(o->oFaceAnglePitch) * coss(o->oFaceAngleRoll); o->oWaterRingNormalZ = sins(o->oFaceAnglePitch); - o->oWaterRingMarioDistInFront = WaterRingCalcMarioDistInFront(); + o->oWaterRingMarioDistInFront = water_ring_calc_mario_dist(); // Adding this code will alter the ring's graphical orientation to align with the faulty // collision orientation: @@ -35,17 +35,17 @@ void WaterRingInit(void) { } void bhv_jet_stream_water_ring_init(void) { - WaterRingInit(); + water_ring_init(); o->oOpacity = 70; - SetObjAnimation(0); + cur_obj_init_animation(0); o->oFaceAnglePitch = 0x8000; } // sp28 = arg0 // sp2c = ringManager -void CheckWaterRingCollection(f32 avgScale, struct Object *ringManager) { - f32 marioDistInFront = WaterRingCalcMarioDistInFront(); +void water_ring_check_collection(f32 avgScale, struct Object *ringManager) { + f32 marioDistInFront = water_ring_calc_mario_dist(); struct Object *ringSpawner; if (!is_point_close_to_object(o, gMarioObject->header.gfx.pos[0], @@ -83,7 +83,7 @@ void CheckWaterRingCollection(f32 avgScale, struct Object *ringManager) { o->oWaterRingMarioDistInFront = marioDistInFront; } -void SetWaterRingScale(f32 avgScale) { +void water_ring_set_scale(f32 avgScale) { o->header.gfx.scale[0] = sins(o->oWaterRingScalePhaseX) * 0.1 + avgScale; o->header.gfx.scale[1] = sins(o->oWaterRingScalePhaseY) * 0.5 + avgScale; o->header.gfx.scale[2] = sins(o->oWaterRingScalePhaseZ) * 0.1 + avgScale; @@ -92,7 +92,7 @@ void SetWaterRingScale(f32 avgScale) { o->oWaterRingScalePhaseZ += 0x1700; } -void WaterRingCollectedLoop(void) { +void water_ring_act_collected(void) { f32 avgScale = (f32) o->oTimer * 0.2 + o->oWaterRingAvgScale; if (o->oTimer >= 21) @@ -102,10 +102,10 @@ void WaterRingCollectedLoop(void) { if (o->oOpacity < 0) o->oOpacity = 0; - SetWaterRingScale(avgScale); + water_ring_set_scale(avgScale); } -void JetStreamWaterRingNotCollectedLoop(void) { +void water_ring_act_not_collected(void) { f32 avgScale = (f32) o->oTimer / 225.0 * 3.0 + 0.5; //! In this case ringSpawner and ringManager are the same object, @@ -119,8 +119,8 @@ void JetStreamWaterRingNotCollectedLoop(void) { o->activeFlags = 0; } - CheckWaterRingCollection(avgScale, ringManager); - SetWaterRingScale(avgScale); + water_ring_check_collection(avgScale, ringManager); + water_ring_set_scale(avgScale); o->oPosY += 10.0f; o->oFaceAngleYaw += 0x100; @@ -136,21 +136,21 @@ void JetStreamWaterRingNotCollectedLoop(void) { void bhv_jet_stream_water_ring_loop(void) { switch (o->oAction) { case WATER_RING_ACT_NOT_COLLECTED: - JetStreamWaterRingNotCollectedLoop(); + water_ring_act_not_collected(); break; case WATER_RING_ACT_COLLECTED: - WaterRingCollectedLoop(); + water_ring_act_collected(); break; } } -void Unknown802EB8A4(void) { +void spawn_manta_ray_ring_manager(void) { struct Object *ringManager = spawn_object(o, MODEL_NONE, bhvMantaRayRingManager); o->parentObj = ringManager; } -void JetStreamRingSpawnerActiveLoop(void) { +void water_ring_spawner_act_inactive(void) { //! The Jet Stream Ring Spawner is its own parent object. The code may have been copied // from the Manta Ray, which spawns rings but also has a Ring Manager object as its // parent. The Jet Stream Ring Spawner functions as both a spawner and a Ring Manager. @@ -175,12 +175,12 @@ void JetStreamRingSpawnerActiveLoop(void) { void bhv_jet_stream_ring_spawner_loop(void) { switch (o->oAction) { case JS_RING_SPAWNER_ACT_ACTIVE: - JetStreamRingSpawnerActiveLoop(); + water_ring_spawner_act_inactive(); if (o->oWaterRingSpawnerRingsCollected == 5) { - func_802A3004(); + spawn_mist_particles(); - create_star(3400.0f, -3200.0f, -500.0f); + spawn_default_star(3400.0f, -3200.0f, -500.0f); o->oAction = JS_RING_SPAWNER_ACT_INACTIVE; } @@ -192,11 +192,11 @@ void bhv_jet_stream_ring_spawner_loop(void) { } void bhv_manta_ray_water_ring_init(void) { - WaterRingInit(); + water_ring_init(); o->oOpacity = 150; } -void MantaRayWaterRingNotCollectedLoop(void) { +void manta_water_ring_act_not_collected(void) { f32 avgScale = (f32) o->oTimer / 50.0f * 1.3 + 0.1; struct Object *ringSpawner = o->parentObj; struct Object *ringManager = ringSpawner->parentObj; @@ -210,8 +210,8 @@ void MantaRayWaterRingNotCollectedLoop(void) { o->activeFlags = 0; } - CheckWaterRingCollection(avgScale, ringManager); - SetWaterRingScale(avgScale); + water_ring_check_collection(avgScale, ringManager); + water_ring_set_scale(avgScale); set_object_visibility(o, 5000); if (ringSpawner->oWaterRingSpawnerRingsCollected == 4 @@ -224,11 +224,11 @@ void MantaRayWaterRingNotCollectedLoop(void) { void bhv_manta_ray_water_ring_loop(void) { switch (o->oAction) { case WATER_RING_ACT_NOT_COLLECTED: - MantaRayWaterRingNotCollectedLoop(); + manta_water_ring_act_not_collected(); break; case WATER_RING_ACT_COLLECTED: - WaterRingCollectedLoop(); + water_ring_act_collected(); break; } } diff --git a/src/game/behaviors/water_splash.inc.c b/src/game/behaviors/water_splash.inc.c deleted file mode 100644 index 59d86b15..00000000 --- a/src/game/behaviors/water_splash.inc.c +++ /dev/null @@ -1,90 +0,0 @@ -// water_splash.c.inc - -struct WaterSplashParams D_8032FDAC = { - 2, MODEL_WHITE_PARTICLE_SMALL, bhvWaterDrops, 0, 0, 5.0f, 3.0f, 30.0f, 20.0f, 0.5f, 1.0f -}; -struct WaterSplashParams D_8032FDD0 = { - 34, MODEL_WHITE_PARTICLE_SMALL, bhvWaterDrops, 0, 0, 2.0f, 3.0f, 20.0f, 20.0f, 0.5f, 1.0f -}; -struct WaterSplashParams D_8032FDF4 = { 34, MODEL_FISH, bhvWaterDrops, 0, 0, 2.0f, - 3.0f, 20.0f, 20.0f, 1.0f, 0.0f }; -struct WaterSplashParams D_8032FE18 = { - 98, MODEL_WHITE_PARTICLE_SMALL, bhvWaterDrops, 0x6000, 0, 2.0f, 8.0f, 10.0f, 10.0f, 0.5f, 1.0f -}; - -void bhv_water_splash_loop(void) { - s32 i; - if (o->oTimer == 0) - o->oPosY = find_water_level(o->oPosX, o->oPosZ); - if (o->oPosY > -10000.0f) - for (i = 0; i < 3; i++) - spawn_water_splash(o, &D_8032FDAC); -} - -void bhv_water_drops_loop(void) { - UNUSED s32 unused; - f32 sp20 = find_water_level(o->oPosX, o->oPosZ); - if (o->oTimer == 0) { - if (obj_has_model(MODEL_FISH)) - o->header.gfx.node.flags &= ~4; - else - o->header.gfx.node.flags |= 4; - o->oFaceAngleYaw = RandomU16(); - } - o->oVelY -= 4.0f; - o->oPosY += o->oVelY; - if (o->oVelY < 0.0f) { - if (sp20 > o->oPosY) { - try_to_spawn_object(0, 1.0f, o, MODEL_SPOT_ON_GROUND, bhvWaterSurfaceWhiteWave); - mark_object_for_deletion(o); - } else if (o->oTimer > 20) - mark_object_for_deletion(o); - } - if (sp20 < -10000.0f) - mark_object_for_deletion(o); -} - -void bhv_surface_waves_loop(void) { - copy_object_pos(o, gMarioObject); - o->oPosY = gMarioStates->waterLevel + 5; - if (!(gMarioObject->oMarioParticleFlags & 0x80)) { - gMarioObject->oActiveParticleFlags &= 0xFF7F; - o->activeFlags = 0; - } -} - -void bhv_water_surface_white_wave_init(void) { - obj_scale(RandomFloat() + 1.5); -} - -void bhv_object_bubble_ripples_init(void) { - f32 sp1C = find_water_level(o->oPosX, o->oPosZ); - scale_object_xyz(o, 0.5f, 1.0f, 0.5f); - o->oPosY = sp1C + 5.0f; -} - -void bhv_surface_wave_shrinking_init(void) { - UNUSED struct Object *sp1C; - if ((RandomU16() & 0xFF) <= 0) // weird - { - sp1C = spawn_water_splash(o, &D_8032FDF4); - func_8029EE20(sp1C, blue_fish_seg3_anims_0301C2B0, 0); - } -} - -void bhv_wave_trail_loop(void) { - f32 sp1C = find_water_level(o->oPosX, o->oPosZ); - if (o->oTimer == 0) - if (gGlobalTimer & 1) - mark_object_for_deletion(o); - o->oPosY = sp1C + 5.0f; - if (o->oTimer == 0) - o->oWaveTrailUnkF8 = o->header.gfx.scale[0]; - if (o->oAnimState > 3) { - o->oWaveTrailUnkF8 = o->oWaveTrailUnkF8 - 0.1; - if (o->oWaveTrailUnkF8 < 0.0f) - o->oWaveTrailUnkF8 = 0.0f; - o->header.gfx.scale[0] = o->oWaveTrailUnkF8; - o->header.gfx.scale[2] = o->oWaveTrailUnkF8; - } -} diff --git a/src/game/behaviors/water_splashes_and_waves.inc.c b/src/game/behaviors/water_splashes_and_waves.inc.c new file mode 100644 index 00000000..fef9a1c9 --- /dev/null +++ b/src/game/behaviors/water_splashes_and_waves.inc.c @@ -0,0 +1,133 @@ +// water_splashes_and_waves.c.inc + +// Water droplets from Mario jumping in a pool of water. +struct WaterDropletParams sWaterSplashDropletParams = { + /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE, + /* Model */ MODEL_WHITE_PARTICLE_SMALL, + /* Behavior */ bhvWaterDroplet, + /* Unused (flag-specific) */ 0, 0, + /* Random fvel offset, scale */ 5.0f, 3.0f, + /* Random yvel offset, scale */ 30.0f, 20.0f, + /* Random size offset, scale */ 0.5f, 1.0f +}; + +// Water droplets from Mario jumping in shallow water. +struct WaterDropletParams sShallowWaterSplashDropletParams = { + /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE | WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL, + /* Model */ MODEL_WHITE_PARTICLE_SMALL, + /* Behavior */ bhvWaterDroplet, + /* Unused (flag-specific) */ 0, 0, + /* Random fvel offset, scale */ 2.0f, 3.0f, + /* Random yvel offset, scale */ 20.0f, 20.0f, + /* Random size offset, scale */ 0.5f, 1.0f +}; + +// The fish particle easter egg from Mario jumping in shallow water. +struct WaterDropletParams sWaterDropletFishParams = { + /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE | WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL, + /* Model */ MODEL_FISH, + /* Behavior */ bhvWaterDroplet, + /* Unused (flag-specific) */ 0, 0, + /* Random fvel offset, scale */ 2.0f, 3.0f, + /* Random yvel offset, scale */ 20.0f, 20.0f, + /* Random size offset, scale */ 1.0f, 0.0f +}; + +// Water droplets from Mario running in shallow water. +struct WaterDropletParams sShallowWaterWaveDropletParams = { + /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE_INCR_PLUS_8000 | WATER_DROPLET_FLAG_RAND_ANGLE | WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL, + /* Model */ MODEL_WHITE_PARTICLE_SMALL, + /* Behavior */ bhvWaterDroplet, + /* Move angle range */ 0x6000, + /* Unused (flag-specific) */ 0, + /* Random fvel offset, scale */ 2.0f, 8.0f, + /* Random yvel offset, scale */ 10.0f, 10.0f, + /* Random size offset, scale */ 0.5f, 1.0f +}; + + +void bhv_water_splash_spawn_droplets(void) { + s32 i; + if (o->oTimer == 0) + o->oPosY = find_water_level(o->oPosX, o->oPosZ); + + if (o->oPosY > -10000.0f) // Make sure it is not at the default water level + for (i = 0; i < 3; i++) + spawn_water_droplet(o, &sWaterSplashDropletParams); +} + +void bhv_water_droplet_loop(void) { + UNUSED u32 unusedVar; + f32 waterLevel = find_water_level(o->oPosX, o->oPosZ); + + if (o->oTimer == 0) { + if (cur_obj_has_model(MODEL_FISH)) + o->header.gfx.node.flags &= ~4; + else + o->header.gfx.node.flags |= 4; + o->oFaceAngleYaw = RandomU16(); + } + // Apply gravity + o->oVelY -= 4.0f; + o->oPosY += o->oVelY; + // Check if fallen back into the water + if (o->oVelY < 0.0f) { + if (waterLevel > o->oPosY) { + // Create the smaller splash + try_to_spawn_object(0, 1.0f, o, MODEL_SMALL_WATER_SPLASH, bhvWaterDropletSplash); + obj_mark_for_deletion(o); + } else if (o->oTimer > 20) + obj_mark_for_deletion(o); + } + if (waterLevel < -10000.0f) + obj_mark_for_deletion(o); +} + +void bhv_idle_water_wave_loop(void) { + obj_copy_pos(o, gMarioObject); + o->oPosY = gMarioStates->waterLevel + 5; + if (!(gMarioObject->oMarioParticleFlags & ACTIVE_PARTICLE_IDLE_WATER_WAVE)) { + gMarioObject->oActiveParticleFlags &= (u16)~ACTIVE_PARTICLE_IDLE_WATER_WAVE; + o->activeFlags = 0; + } +} + +void bhv_water_droplet_splash_init(void) { + cur_obj_scale(RandomFloat() + 1.5); +} + +void bhv_bubble_splash_init(void) { + f32 waterLevel = find_water_level(o->oPosX, o->oPosZ); + obj_scale_xyz(o, 0.5f, 1.0f, 0.5f); + o->oPosY = waterLevel + 5.0f; +} + +void bhv_shallow_water_splash_init(void) { + struct Object *fishObj; + // Have a 1 in 256 chance to spawn the fish particle easter egg. + if ((RandomU16() & 0xFF) <= 0) // Strange + { + fishObj = spawn_water_droplet(o, &sWaterDropletFishParams); + obj_init_animation_with_sound(fishObj, blue_fish_seg3_anims_0301C2B0, 0); + } +} + +void bhv_wave_trail_shrink(void) { + f32 waterLevel = find_water_level(o->oPosX, o->oPosZ); + // Destroy every other water wave to space them out (this is a terrible way of doing it) + if (o->oTimer == 0) + if (gGlobalTimer & 1) + obj_mark_for_deletion(o); + o->oPosY = waterLevel + 5.0f; + + if (o->oTimer == 0) + o->oWaveTrailSize = o->header.gfx.scale[0]; + + if (o->oAnimState > 3) { + o->oWaveTrailSize = o->oWaveTrailSize - 0.1; // Shrink the wave + if (o->oWaveTrailSize < 0.0f) + o->oWaveTrailSize = 0.0f; + o->header.gfx.scale[0] = o->oWaveTrailSize; + o->header.gfx.scale[2] = o->oWaveTrailSize; + } +} diff --git a/src/game/behaviors/water_wave.inc.c b/src/game/behaviors/water_wave.inc.c index 955efc91..39e316a3 100644 --- a/src/game/behaviors/water_wave.inc.c +++ b/src/game/behaviors/water_wave.inc.c @@ -1,4 +1,5 @@ // water_wave.c.inc +// TODO: Rename to avoid confusion with water_splashes_and_waves void bhv_object_water_wave_init(void) { o->oPosY = find_water_level(o->oPosX, o->oPosZ); diff --git a/src/game/behaviors/wdw_water_level.inc.c b/src/game/behaviors/wdw_water_level.inc.c index f556f6c4..85556dc9 100644 --- a/src/game/behaviors/wdw_water_level.inc.c +++ b/src/game/behaviors/wdw_water_level.inc.c @@ -23,7 +23,7 @@ void bhv_water_level_diamond_loop(void) { o->oAction++; // Sets to WATER_LEVEL_DIAMOND_ACT_IDLE break; case WATER_LEVEL_DIAMOND_ACT_IDLE: - if (are_objects_collided(o, gMarioObject)) { + if (obj_check_if_collided_with_object(o, gMarioObject)) { if (gWDWWaterLevelChanging == 0) { o->oAction++; // Sets to WATER_LEVEL_DIAMOND_ACT_CHANGE_WATER_LEVEL gWDWWaterLevelChanging = 1; @@ -41,18 +41,18 @@ void bhv_water_level_diamond_loop(void) { o->oAngleVelYaw = 0x800; } else { if (o->oTimer == 0) - PlaySound2(SOUND_GENERAL_WATER_LEVEL_TRIG); + cur_obj_play_sound_2(SOUND_GENERAL_WATER_LEVEL_TRIG); else { if (*gEnvironmentLevels > o->oWaterLevelTriggerTargetWaterLevel) - PlaySound(SOUND_ENV_WATER_DRAIN); + cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN); else - PlaySound(SOUND_ENV_WATER_DRAIN); // same as above + cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN); // same as above } o->oAngleVelYaw = 0x800; } break; case WATER_LEVEL_DIAMOND_ACT_IDLE_SPINNING: - if (!are_objects_collided(o, gMarioObject)) { + if (!obj_check_if_collided_with_object(o, gMarioObject)) { gWDWWaterLevelChanging = 0; o->oAction = WATER_LEVEL_DIAMOND_ACT_IDLE; o->oAngleVelYaw = 0; diff --git a/src/game/behaviors/whirlpool.inc.c b/src/game/behaviors/whirlpool.inc.c index 3287decc..f2c502da 100644 --- a/src/game/behaviors/whirlpool.inc.c +++ b/src/game/behaviors/whirlpool.inc.c @@ -19,11 +19,11 @@ void bhv_whirlpool_init(void) { o->oFaceAngleRoll = 0; } -void func_802E70A8(void) { - set_object_hitbox(o, &sWhirlpoolHitbox); +void whirlpool_set_hitbox(void) { + obj_set_hitbox(o, &sWhirlpoolHitbox); } -void func_802E70DC(void) { +void whirpool_orient_graph(void) { f32 cosPitch = coss(o->oFaceAnglePitch); f32 sinPitch = sins(o->oFaceAnglePitch); f32 cosRoll = coss(o->oFaceAngleRoll); @@ -49,7 +49,7 @@ void bhv_whirlpool_loop(void) { gEnvFxBubbleConfig[ENVFX_STATE_PITCH] = o->oWhirlpoolInitFacePitch; gEnvFxBubbleConfig[ENVFX_STATE_YAW] = o->oWhirlpoolInitFaceRoll; - func_802E70DC(); + whirpool_orient_graph(); o->oFaceAngleYaw += 0x1F40; } else { @@ -57,9 +57,9 @@ void bhv_whirlpool_loop(void) { gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT] = 0; } - PlaySound(SOUND_ENV_WATER); + cur_obj_play_sound_1(SOUND_ENV_WATER); - func_802E70A8(); + whirlpool_set_hitbox(); } void bhv_jet_stream_loop(void) { @@ -71,5 +71,5 @@ void bhv_jet_stream_loop(void) { } else gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT] = 0; - PlaySound(SOUND_ENV_WATER); + cur_obj_play_sound_1(SOUND_ENV_WATER); } diff --git a/src/game/behaviors/white_puff.inc.c b/src/game/behaviors/white_puff.inc.c index a86198d9..5bd7872d 100644 --- a/src/game/behaviors/white_puff.inc.c +++ b/src/game/behaviors/white_puff.inc.c @@ -4,17 +4,17 @@ void bhv_white_puff_1_loop(void) { f32 sp1C = 0.1f; f32 sp18 = 0.5f; if (o->oTimer == 0) { - translate_object_xz_random(o, 40.0f); + obj_translate_xz_random(o, 40.0f); o->oPosY += 30.0f; } - obj_scale(o->oTimer * sp18 + sp1C); + cur_obj_scale(o->oTimer * sp18 + sp1C); o->oOpacity = 50; - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); if (o->oTimer > 4) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } void bhv_white_puff_2_loop(void) { if (o->oTimer == 0) - translate_object_xz_random(o, 40.0f); + obj_translate_xz_random(o, 40.0f); } diff --git a/src/game/behaviors/white_puff_explode.inc.c b/src/game/behaviors/white_puff_explode.inc.c index 191aeb18..510058ad 100644 --- a/src/game/behaviors/white_puff_explode.inc.c +++ b/src/game/behaviors/white_puff_explode.inc.c @@ -3,7 +3,7 @@ void bhv_white_puff_exploding_loop(void) { f32 sp24; if (o->oTimer == 0) { - obj_compute_vel_xz(); + cur_obj_compute_vel_xz(); o->oWhitePuffUnkF4 = o->header.gfx.scale[0]; switch (o->oBehParams2ndByte) { case 2: @@ -18,20 +18,20 @@ void bhv_white_puff_exploding_loop(void) { break; } } - obj_move_using_vel_and_gravity(); - obj_apply_drag_xz(o->oDragStrength); + cur_obj_move_using_vel_and_gravity(); + cur_obj_apply_drag_xz(o->oDragStrength); if (o->oVelY > 100.0f) o->oVelY = 100.0f; if (o->oTimer > 20) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (o->oOpacity) { o->oOpacity += o->oWhitePuffUnkF8; if (o->oOpacity < 2) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (o->oWhitePuffUnkFC) sp24 = o->oWhitePuffUnkF4 * ((254 - o->oOpacity) / 254.0); else sp24 = o->oWhitePuffUnkF4 * (o->oOpacity / 254.0); - obj_scale(sp24); + cur_obj_scale(sp24); } } diff --git a/src/game/behaviors/whomp.inc.c b/src/game/behaviors/whomp.inc.c index 1c0a19e3..93a68dc8 100644 --- a/src/game/behaviors/whomp.inc.c +++ b/src/game/behaviors/whomp.inc.c @@ -1,44 +1,44 @@ // whomp.c.inc -void func_802C61CC(void) { +void whomp_play_sfx_from_pound_animation(void) { UNUSED s32 sp2C = o->header.gfx.unk38.animFrame; s32 sp28 = 0; if (o->oForwardVel < 5.0f) { - sp28 = obj_check_anim_frame(0); - sp28 |= obj_check_anim_frame(23); + sp28 = cur_obj_check_anim_frame(0); + sp28 |= cur_obj_check_anim_frame(23); } else { - sp28 = obj_check_anim_frame_in_range(0, 3); - sp28 |= obj_check_anim_frame_in_range(23, 3); + sp28 = cur_obj_check_anim_frame_in_range(0, 3); + sp28 |= cur_obj_check_anim_frame_in_range(23, 3); } if (sp28) - PlaySound2(SOUND_OBJ_POUNDING1); + cur_obj_play_sound_2(SOUND_OBJ_POUNDING1); } -void ActionWhomp0(void) { - func_8029ED98(0, 1.0f); - obj_set_pos_to_home(); +void whomp_act_0(void) { + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); + cur_obj_set_pos_to_home(); if (o->oBehParams2ndByte != 0) { gSecondCameraFocus = o; - obj_scale(2.0f); + cur_obj_scale(2.0f); if (o->oSubAction == 0) { if (o->oDistanceToMario < 600.0f) { o->oSubAction++; func_8031FFB4(0, 60, 40); } else { - obj_set_pos_to_home(); + cur_obj_set_pos_to_home(); o->oHealth = 3; } - } else if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_114)) + } else if (cur_obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG, DIALOG_114)) o->oAction = 2; } else if (o->oDistanceToMario < 500.0f) o->oAction = 1; - func_802C61CC(); + whomp_play_sfx_from_pound_animation(); } -void ActionWhomp7(void) { +void whomp_act_7(void) { if (o->oSubAction == 0) { o->oForwardVel = 0.0f; - func_8029ED98(0, 1.0f); + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); if (o->oTimer > 31) o->oSubAction++; else @@ -48,65 +48,65 @@ void ActionWhomp7(void) { if (o->oTimer > 42) o->oAction = 1; } - func_802C61CC(); + whomp_play_sfx_from_pound_animation(); } -void ActionWhomp1(void) { +void whomp_act_1(void) { s16 sp26; f32 sp20; f32 sp1C; sp26 = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw); - sp20 = obj_lateral_dist_to_home(); + sp20 = cur_obj_lateral_dist_to_home(); if (gCurrLevelNum == LEVEL_BITS) sp1C = 200.0f; else sp1C = 700.0f; - func_8029ED98(0, 1.0f); + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); o->oForwardVel = 3.0f; if (sp20 > sp1C) o->oAction = 7; else if (sp26 < 0x2000) { if (o->oDistanceToMario < 1500.0f) { o->oForwardVel = 9.0f; - func_8029ED98(0, 3.0f); + cur_obj_init_animation_with_accel_and_sound(0, 3.0f); } if (o->oDistanceToMario < 300.0f) o->oAction = 3; } - func_802C61CC(); + whomp_play_sfx_from_pound_animation(); } -void ActionWhomp2(void) { +void whomp_act_2(void) { s16 sp1E; - func_8029ED98(0, 1.0f); + cur_obj_init_animation_with_accel_and_sound(0, 1.0f); o->oForwardVel = 3.0f; - obj_rotate_yaw_toward(o->oAngleToMario, 0x200); + cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200); if (o->oTimer > 30) { sp1E = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw); if (sp1E < 0x2000) { if (o->oDistanceToMario < 1500.0f) { o->oForwardVel = 9.0f; - func_8029ED98(0, 3.0f); + cur_obj_init_animation_with_accel_and_sound(0, 3.0f); } if (o->oDistanceToMario < 300.0f) o->oAction = 3; } } - func_802C61CC(); - if (func_802A6AF8(1000.0f)) { + whomp_play_sfx_from_pound_animation(); + if (mario_is_far_below_object(1000.0f)) { o->oAction = 0; stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS)); } } -void ActionWhomp3(void) { +void whomp_act_3(void) { o->oForwardVel = 0.0f; - func_8029ED98(1, 1.0f); - if (func_8029F788()) + cur_obj_init_animation_with_accel_and_sound(1, 1.0f); + if (cur_obj_check_if_near_animation_end()) o->oAction = 4; } -void ActionWhomp4(void) { +void whomp_act_4(void) { if (o->oTimer == 0) o->oVelY = 40.0f; if (o->oTimer < 8) { @@ -121,10 +121,10 @@ void ActionWhomp4(void) { } } -void ActionWhomp5(void) { +void whomp_act_5(void) { if (o->oSubAction == 0 && o->oMoveFlags & 1) { - PlaySound2(SOUND_OBJ_WHOMP_LOWPRIO); - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_play_sound_2(SOUND_OBJ_WHOMP_LOWPRIO); + cur_obj_shake_screen(SHAKE_POS_SMALL); o->oVelY = 0.0f; o->oSubAction++; } @@ -132,22 +132,22 @@ void ActionWhomp5(void) { o->oAction = 6; } -void func_802C6954(void) { +void king_whomp_on_ground(void) { Vec3f pos; if (o->oSubAction == 0) { - if (obj_is_mario_ground_pounding_platform()) { + if (cur_obj_is_mario_ground_pounding_platform()) { o->oHealth--; - PlaySound2(SOUND_OBJ2_WHOMP_SOUND_SHORT); - PlaySound2(SOUND_OBJ_KING_WHOMP_DEATH); + cur_obj_play_sound_2(SOUND_OBJ2_WHOMP_SOUND_SHORT); + cur_obj_play_sound_2(SOUND_OBJ_KING_WHOMP_DEATH); if (o->oHealth == 0) o->oAction = 8; else { - func_802B8F7C(pos, &o->oPosX); - func_802B8F7C(&o->oPosX, &gMarioObject->oPosX); - func_802AA618(0, 0, 100.0f); + vec3f_copy_2(pos, &o->oPosX); + vec3f_copy_2(&o->oPosX, &gMarioObject->oPosX); + spawn_mist_particles_variable(0, 0, 100.0f); spawn_triangle_break_particles(20, 138, 3.0f, 4); - ShakeScreen(SHAKE_POS_SMALL); - func_802B8F7C(&o->oPosX, pos); + cur_obj_shake_screen(SHAKE_POS_SMALL); + vec3f_copy_2(&o->oPosX, pos); } o->oSubAction++; } @@ -164,32 +164,32 @@ void func_802C6954(void) { } } -void func_802C6B28(void) { +void whomp_on_ground(void) { if (o->oSubAction == 0) { if (gMarioObject->platform == o) { - if (obj_is_mario_ground_pounding_platform()) { + if (cur_obj_is_mario_ground_pounding_platform()) { o->oNumLootCoins = 5; - spawn_object_loot_yellow_coins(o, 5, 20.0f); + obj_spawn_loot_yellow_coins(o, 5, 20.0f); o->oAction = 8; } else { - obj_spawn_loot_coin_at_mario_pos(); + cur_obj_spawn_loot_coin_at_mario_pos(); o->oSubAction++; } } - } else if (!obj_is_mario_on_platform()) + } else if (!cur_obj_is_mario_on_platform()) o->oSubAction = 0; } -void ActionWhomp6(void) { +void whomp_act_6(void) { if (o->oSubAction != 10) { o->oForwardVel = 0.0f; o->oAngleVelPitch = 0; o->oAngleVelYaw = 0; o->oAngleVelRoll = 0; if (o->oBehParams2ndByte != 0) - func_802C6954(); + king_whomp_on_ground(); else - func_802C6B28(); + whomp_on_ground(); if (o->oTimer > 100 || (gMarioState->action == ACT_SQUISHED && o->oTimer > 30)) o->oSubAction = 10; } else { @@ -207,49 +207,49 @@ void ActionWhomp6(void) { } } -void ActionWhomp8(void) { +void whomp_act_8(void) { if (o->oBehParams2ndByte != 0) { - if (obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG, DIALOG_115)) { - set_object_angle(o, 0, 0, 0); - obj_hide(); - obj_become_intangible(); - func_802AA618(0, 0, 200.0f); + if (cur_obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG, DIALOG_115)) { + obj_set_angle(o, 0, 0, 0); + cur_obj_hide(); + cur_obj_become_intangible(); + spawn_mist_particles_variable(0, 0, 200.0f); spawn_triangle_break_particles(20, 138, 3.0f, 4); - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_shake_screen(SHAKE_POS_SMALL); o->oPosY += 100.0f; - create_star(180.0f, 3880.0f, 340.0f); - PlaySound2(SOUND_OBJ_KING_WHOMP_DEATH); + spawn_default_star(180.0f, 3880.0f, 340.0f); + cur_obj_play_sound_2(SOUND_OBJ_KING_WHOMP_DEATH); o->oAction = 9; } } else { - func_802AA618(0, 0, 100.0f); + spawn_mist_particles_variable(0, 0, 100.0f); spawn_triangle_break_particles(20, 138, 3.0f, 4); - ShakeScreen(SHAKE_POS_SMALL); + cur_obj_shake_screen(SHAKE_POS_SMALL); create_sound_spawner(SOUND_OBJ_THWOMP); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } -void ActionWhomp9(void) { +void whomp_act_9(void) { if (o->oTimer == 60) stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS)); } void (*sWhompActions[])(void) = { - ActionWhomp0, ActionWhomp1, ActionWhomp2, ActionWhomp3, ActionWhomp4, - ActionWhomp5, ActionWhomp6, ActionWhomp7, ActionWhomp8, ActionWhomp9 + whomp_act_0, whomp_act_1, whomp_act_2, whomp_act_3, whomp_act_4, + whomp_act_5, whomp_act_6, whomp_act_7, whomp_act_8, whomp_act_9 }; // MM void bhv_whomp_loop(void) { - obj_update_floor_and_walls(); - obj_call_action_function(sWhompActions); - obj_move_standard(-20); + cur_obj_update_floor_and_walls(); + cur_obj_call_action_function(sWhompActions); + cur_obj_move_standard(-20); if (o->oAction != 9) { if (o->oBehParams2ndByte != 0) - obj_hide_if_mario_far_away_y(2000.0f); + cur_obj_hide_if_mario_far_away_y(2000.0f); else - obj_hide_if_mario_far_away_y(1000.0f); + cur_obj_hide_if_mario_far_away_y(1000.0f); load_object_collision_model(); } } diff --git a/src/game/behaviors/wiggler.inc.c b/src/game/behaviors/wiggler.inc.c index a94631b9..c1760bf1 100644 --- a/src/game/behaviors/wiggler.inc.c +++ b/src/game/behaviors/wiggler.inc.c @@ -69,7 +69,7 @@ void bhv_wiggler_body_part_update(void) { struct ChainSegment *segment = &o->parentObj->oWigglerSegments[o->oBehParams2ndByte]; f32 posOffset; - obj_scale(o->parentObj->header.gfx.scale[0]); + cur_obj_scale(o->parentObj->header.gfx.scale[0]); o->oFaceAnglePitch = segment->pitch; o->oFaceAngleYaw = segment->yaw; @@ -90,7 +90,7 @@ void bhv_wiggler_body_part_update(void) { // while on the ground could cause the tail segments to clip through // the floor o->oPosY += -30.0f; - obj_update_floor_height(); + cur_obj_update_floor_height(); if (o->oFloorHeight > o->oPosY) // TODO: Check ineq swap { o->oPosY = o->oFloorHeight; @@ -100,13 +100,13 @@ void bhv_wiggler_body_part_update(void) { segment->posY = o->oPosY; // Inherit walking animation speed from wiggler - func_8029ED98(0, o->parentObj->oWigglerWalkAnimSpeed); + cur_obj_init_animation_with_accel_and_sound(0, o->parentObj->oWigglerWalkAnimSpeed); if (o->parentObj->oWigglerWalkAnimSpeed == 0.0f) { - func_8029F6F0(); + cur_obj_reverse_animation(); } if (o->parentObj->oAction == WIGGLER_ACT_SHRINK) { - obj_become_intangible(); + cur_obj_become_intangible(); } else { obj_check_attacks(&sWigglerBodyPartHitbox, o->oAction); } @@ -144,13 +144,13 @@ void wiggler_init_segments(void) { bodyPart = spawn_object_relative(i, 0, 0, 0, o, MODEL_WIGGLER_BODY, bhvWigglerBody); if (bodyPart != NULL) { - func_8029EE20(bodyPart, wiggler_seg5_anims_0500C874, 0); + obj_init_animation_with_sound(bodyPart, wiggler_seg5_anims_0500C874, 0); bodyPart->header.gfx.unk38.animFrame = (23 * i) % 26 - 1; } } o->oAction = WIGGLER_ACT_WALK; - obj_unhide(); + cur_obj_unhide(); } #if defined(VERSION_EU) || defined(AVOID_UB) @@ -228,7 +228,7 @@ static void wiggler_act_walk(void) { // If Mario is positioned below the wiggler, assume he entered through the // lower cave entrance, so don't display text. - if (gMarioObject->oPosY < o->oPosY || obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, DIALOG_150) != 0) { + if (gMarioObject->oPosY < o->oPosY || cur_obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, DIALOG_150) != 0) { o->oWigglerTextStatus = WIGGLER_TEXT_STATUS_COMPLETED_DIALOG; } } else { @@ -266,7 +266,7 @@ static void wiggler_act_walk(void) { // If moving at high speeds, could overflow. But can't reach such speeds // in practice yawTurnSpeed = (s16)(30.0f * o->oForwardVel); - obj_rotate_yaw_toward(o->oWigglerTargetYaw, yawTurnSpeed); + cur_obj_rotate_yaw_toward(o->oWigglerTargetYaw, yawTurnSpeed); obj_face_yaw_approach(o->oMoveAngleYaw, 2 * yawTurnSpeed); obj_face_pitch_approach(0, 0x320); @@ -304,18 +304,18 @@ static void wiggler_act_jumped_on(void) { // defeated) or go back to walking if (o->header.gfx.scale[1] >= 4.0f) { if (o->oTimer > 30) { - if (obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, attackText[o->oHealth - 2]) != 0) { + if (cur_obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG, attackText[o->oHealth - 2]) != 0) { // Because we don't want the wiggler to disappear after being // defeated, we leave its health at 1 if (--o->oHealth == 1) { o->oAction = WIGGLER_ACT_SHRINK; - obj_become_intangible(); + cur_obj_become_intangible(); } else { o->oAction = WIGGLER_ACT_WALK; o->oMoveAngleYaw = o->oFaceAngleYaw; if (o->oHealth == 2) { - PlaySound2(SOUND_OBJ_WIGGLER_JUMP); + cur_obj_play_sound_2(SOUND_OBJ_WIGGLER_JUMP); o->oForwardVel = 10.0f; o->oVelY = 70.0f; } @@ -353,16 +353,16 @@ static void wiggler_act_knockback(void) { static void wiggler_act_shrink(void) { if (o->oTimer >= 20) { if (o->oTimer == 20) { - PlaySound2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); + cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK); } // 4 is the default scale, so shrink to 1/4 of regular size if (approach_f32_ptr(&o->header.gfx.scale[0], 1.0f, 0.1f)) { - create_star(0.0f, 2048.0f, 0.0f); + spawn_default_star(0.0f, 2048.0f, 0.0f); o->oAction = WIGGLER_ACT_FALL_THROUGH_FLOOR; } - obj_scale(o->header.gfx.scale[0]); + cur_obj_scale(o->header.gfx.scale[0]); } } @@ -380,7 +380,7 @@ static void wiggler_act_fall_through_floor(void) { o->oFaceAnglePitch = obj_get_pitch_from_vel(); } - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } } @@ -389,7 +389,7 @@ static void wiggler_act_fall_through_floor(void) { * Stop and enter the jumped on action. */ void wiggler_jumped_on_attack_handler(void) { - PlaySound2(SOUND_OBJ_WIGGLER_ATTACKED); + cur_obj_play_sound_2(SOUND_OBJ_WIGGLER_ATTACKED); o->oAction = WIGGLER_ACT_JUMPED_ON; o->oForwardVel = o->oVelY = 0.0f; o->oWigglerSquishSpeed = 0.4f; @@ -410,15 +410,15 @@ void bhv_wiggler_update(void) { treat_far_home_as_mario(1200.0f); // Walking animation and sound - func_8029ED98(0, o->oWigglerWalkAnimSpeed); + cur_obj_init_animation_with_accel_and_sound(0, o->oWigglerWalkAnimSpeed); if (o->oWigglerWalkAnimSpeed != 0.0f) { func_802F9378(0, 13, o->oHealth >= 4 ? SOUND_OBJ_WIGGLER_LOW_PITCH : SOUND_OBJ_WIGGLER_HIGH_PITCH); } else { - func_8029F6F0(); + cur_obj_reverse_animation(); } - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); switch (o->oAction) { case WIGGLER_ACT_WALK: wiggler_act_walk(); @@ -437,7 +437,7 @@ void bhv_wiggler_update(void) { break; } - obj_move_standard(-78); + cur_obj_move_standard(-78); } // Update segment 0 with data from the wiggler object diff --git a/src/game/behaviors/wind.inc.c b/src/game/behaviors/wind.inc.c index 1156a3d3..238f9f72 100644 --- a/src/game/behaviors/wind.inc.c +++ b/src/game/behaviors/wind.inc.c @@ -1,6 +1,6 @@ // wind.c.inc -void func_802ADC20(s16 pitch, s16 yaw) { +void spawn_wind_particles(s16 pitch, s16 yaw) { s32 i; for (i = 0; i < 3; i++) { struct Object *wind = spawn_object(o, MODEL_MIST, bhvWind); @@ -15,25 +15,25 @@ void bhv_wind_loop(void) { if (o->oTimer == 0) { o->oOpacity = 100; if (o->oMoveAnglePitch == 0) { - translate_object_xz_random(o, 900.0f); + obj_translate_xz_random(o, 900.0f); o->oPosX += sins(o->oMoveAngleYaw + 0x8000) * sp2E; // NOP as Pitch is 0 o->oPosY += 80.0f + random_f32_around_zero(200.0f); o->oPosZ += coss(o->oMoveAngleYaw + 0x8000) * sp2E; // -coss(a) * sp2E o->oMoveAngleYaw += random_f32_around_zero(4000.0f); o->oForwardVel = RandomFloat() * 70.0f + 50.0f; } else { - translate_object_xz_random(o, 600.0f); + obj_translate_xz_random(o, 600.0f); o->oPosY -= sp2E - 200; // 300 o->oVelY = RandomFloat() * 30.0f + 50.0f; o->oMoveAngleYaw = RandomU16(); o->oForwardVel = 10.0f; } obj_set_billboard(o); - obj_scale(sp28); + cur_obj_scale(sp28); } if (o->oTimer > 8) - mark_object_for_deletion(o); + obj_mark_for_deletion(o); o->oFaceAnglePitch += 4000.0f + 2000.0f * RandomFloat(); o->oFaceAngleYaw += 4000.0f + 2000.0f * RandomFloat(); - obj_move_using_fvel_and_gravity(); + cur_obj_move_using_fvel_and_gravity(); } diff --git a/src/game/behaviors/wind_particle.inc.c b/src/game/behaviors/wind_particle.inc.c deleted file mode 100644 index cf676d81..00000000 --- a/src/game/behaviors/wind_particle.inc.c +++ /dev/null @@ -1,52 +0,0 @@ -// wind_particle.c.inc - -struct ObjectHitbox sWindParticleHitbox = { - /* interactType: */ INTERACT_WIND, - /* downOffset: */ 0, - /* damageOrCoinValue: */ 0, - /* health: */ 0, - /* numLootCoins: */ 0, - /* radius: */ 20, - /* height: */ 70, - /* hurtboxRadius: */ 20, - /* hurtboxHeight: */ 70, -}; - -void bhv_white_wind_particle_loop(void) { - struct Object *sp34; - f32 sp30; - f32 sp2C; - f32 sp28; - set_object_hitbox(o, &sWindParticleHitbox); - if (o->oTimer == 0) { - o->oWhiteWindParticleUnkF4 = obj_nearest_object_with_behavior(bhvWalkingPenguin); - translate_object_xyz_random(o, 100.0f); - o->oForwardVel = coss(o->oMoveAnglePitch) * 100.0f; - o->oVelY = sins(o->oMoveAnglePitch) * -100.0f; - o->oMoveAngleYaw += random_f32_around_zero(o->oBehParams2ndByte * 500); - o->oOpacity = 100; - } - obj_move_using_fvel_and_gravity(); - if (o->oTimer > 15) - mark_object_for_deletion(o); - sp34 = o->oWhiteWindParticleUnkF4; - if (sp34 != 0) { - sp2C = sp34->oWalkingPenguinUnk100 - o->oPosX; - sp28 = sp34->oWalkingPenguinUnk104 - o->oPosZ; - sp30 = sqrtf(sp2C * sp2C + sp28 * sp28); - if (sp30 < 300.0f) { - mark_object_for_deletion(o); - obj_become_intangible(); - } - } -} - -void func_802C76E0(s32 a0, f32 a1, f32 a2, f32 a3, f32 a4) { - if ((gGlobalTimer & 1) != 0) { - spawn_object_relative_with_scale(a0, a2, a3, a4, 0.5f, o, MODEL_WHITE_PARTICLE_DL, - bhvTinyWhiteWindParticle); - spawn_object_relative_with_scale(a0, a2, a3, a4, a1, o, MODEL_NONE, bhvWindParticle); - } else - spawn_object_relative_with_scale(a0, a2, a3, a4, a1, o, MODEL_MIST, bhvWindParticle); - spawn_object_relative_with_scale(a0, a2, a3, a4, a1, o, MODEL_NONE, bhvWindParticle); -} diff --git a/src/game/behaviors/yoshi.inc.c b/src/game/behaviors/yoshi.inc.c index 1c129c9b..5622f74d 100644 --- a/src/game/behaviors/yoshi.inc.c +++ b/src/game/behaviors/yoshi.inc.c @@ -26,9 +26,9 @@ void yoshi_walk_loop(void) { if (is_point_close_to_object(o, o->oHomeX, 3174.0f, o->oHomeZ, 200)) o->oAction = YOSHI_ACT_IDLE; - SetObjAnimation(1); + cur_obj_init_animation(1); if (sp24 == 0 || sp24 == 15) - PlaySound2(SOUND_GENERAL_YOSHI_WALK); + cur_obj_play_sound_2(SOUND_GENERAL_YOSHI_WALK); if (o->oInteractStatus == INT_STATUS_INTERACTED) o->oAction = YOSHI_ACT_TALK; @@ -58,7 +58,7 @@ void yoshi_idle_loop(void) { o->oAction = YOSHI_ACT_WALK; } - SetObjAnimation(0); + cur_obj_init_animation(0); if (o->oInteractStatus == INT_STATUS_INTERACTED) o->oAction = YOSHI_ACT_TALK; @@ -74,7 +74,7 @@ void yoshi_idle_loop(void) { void yoshi_talk_loop(void) { if ((s16) o->oMoveAngleYaw == (s16) o->oAngleToMario) { - SetObjAnimation(0); + cur_obj_init_animation(0); if (set_mario_npc_dialog(1) == 2) { o->activeFlags |= 0x20; if (cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_161)) { @@ -87,7 +87,7 @@ void yoshi_talk_loop(void) { } } } else { - SetObjAnimation(1); + cur_obj_init_animation(1); play_puzzle_jingle(); o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x500); } @@ -98,14 +98,14 @@ void yoshi_walk_and_jump_off_roof_loop(void) { o->oForwardVel = 10.0f; object_step(); - SetObjAnimation(1); + cur_obj_init_animation(1); if (o->oTimer == 0) cutscene_object(CUTSCENE_STAR_SPAWN, o); o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oYoshiTargetYaw, 0x500); if (is_point_close_to_object(o, o->oHomeX, 3174.0f, o->oHomeZ, 200)) { - SetObjAnimation(2); - PlaySound2(SOUND_GENERAL_ENEMY_ALERT1); + cur_obj_init_animation(2); + cur_obj_play_sound_2(SOUND_GENERAL_ENEMY_ALERT1); o->oForwardVel = 50.0f; o->oVelY = 40.0f; o->oMoveAngleYaw = -0x3FFF; @@ -113,12 +113,12 @@ void yoshi_walk_and_jump_off_roof_loop(void) { } if (sp26 == 0 || sp26 == 15) { - PlaySound2(SOUND_GENERAL_YOSHI_WALK); + cur_obj_play_sound_2(SOUND_GENERAL_YOSHI_WALK); } } void yoshi_finish_jumping_and_despawn_loop(void) { - func_8029F728(); + cur_obj_extend_animation_if_at_end(); obj_move_xyz_using_fvel_and_yaw(o); o->oVelY -= 2.0; if (o->oPosY < 2100.0f) { @@ -145,7 +145,7 @@ void yoshi_give_present_loop(void) { } } -void BehYoshiLoop(void) { +void bhv_yoshi_loop(void) { switch (o->oAction) { case YOSHI_ACT_IDLE: yoshi_idle_loop(); @@ -172,9 +172,9 @@ void BehYoshiLoop(void) { break; case YOSHI_ACT_CREDITS: - SetObjAnimation(0); + cur_obj_init_animation(0); break; } - ObjRandomBlink(&o->oYoshiUnkF4); + curr_obj_random_blink(&o->oYoshiUnkF4); } diff --git a/src/game/camera.c b/src/game/camera.c index ed3428b9..fdf140f1 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -1707,7 +1707,7 @@ struct ParallelTrackingPoint sBBHLibraryParTrackPath[] = { s32 unused_update_mode_5_camera(UNUSED struct Camera *c, UNUSED Vec3f focus, UNUSED Vec3f pos) { } -static void unused_80282678(UNUSED s32 unused) { +static void stub_camera_1(UNUSED s32 unused) { } void mode_boss_fight_camera(struct Camera *c) { @@ -3053,7 +3053,7 @@ void update_camera(struct Camera *c) { c->defMode = gLakituState.defMode; camera_course_processing(c); - dummy_802877EC(c); + stub_camera_3(c); sCButtonsPressed = find_c_buttons_pressed(sCButtonsPressed, gPlayer1Controller->buttonPressed, gPlayer1Controller->buttonDown); @@ -3157,7 +3157,7 @@ void update_camera(struct Camera *c) { } // Start any mario-related cutscenes start_cutscene(c, get_cutscene_from_mario_status(c)); - dummy_802877D8(c); + stub_camera_2(c); gCheckingSurfaceCollisionsForCamera = FALSE; if (gCurrLevelNum != LEVEL_CASTLE) { // If fixed camera is selected as the alternate mode, then fix the camera as long as the right @@ -3529,10 +3529,10 @@ Gfx *geo_camera_main(s32 callContext, struct GraphNode *g, void *context) { return NULL; } -void dummy_802877D8(UNUSED struct Camera *c) { +void stub_camera_2(UNUSED struct Camera *c) { } -void dummy_802877EC(UNUSED struct Camera *c) { +void stub_camera_3(UNUSED struct Camera *c) { } void vec3f_sub(Vec3f dst, Vec3f src) { @@ -5286,7 +5286,7 @@ void approach_camera_height(struct Camera *c, f32 goal, f32 inc) { } } -void unused_8028C3AC(UNUSED s32 a, UNUSED s32 b, UNUSED s32 c, UNUSED s32 d) { +void stub_camera_4(UNUSED s32 a, UNUSED s32 b, UNUSED s32 c, UNUSED s32 d) { } /** @@ -7206,7 +7206,7 @@ void cutscene_unsoften_music(UNUSED struct Camera *c) { sequence_player_unlower(0, 60); } -static void unused_802905C8(UNUSED struct Camera *c) { +static void stub_camera_5(UNUSED struct Camera *c) { } BAD_RETURN(s32) cutscene_unused_start(UNUSED struct Camera *c) { @@ -8175,7 +8175,6 @@ BAD_RETURN(s32) cutscene_bowser_arena_end(struct Camera *c) { transition_next_state(c, 20); sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE; sModeOffsetYaw = sMarioCamState->faceAngle[1] + DEGREES(90); - //! This appears to do nothing gSecondCameraFocus->oBowserUnk88 = 2; } @@ -10000,22 +9999,22 @@ BAD_RETURN(s32) cutscene_enter_painting(struct Camera *c) { set_fov_function(CAM_FOV_APP_20); sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT; - if (ripplingPainting != NULL) { + if (gRipplingPainting != NULL) { paintingAngle[0] = 0; - paintingAngle[1] = (s32)((ripplingPainting->vYRotation / 360.f) * 65536.f); // convert degrees to IAU + paintingAngle[1] = (s32)((gRipplingPainting->yaw / 360.f) * 65536.f); // convert degrees to IAU paintingAngle[2] = 0; - focusOffset[0] = ripplingPainting->vSize / 2; + focusOffset[0] = gRipplingPainting->size / 2; focusOffset[1] = focusOffset[0]; focusOffset[2] = 0; - paintingPos[0] = ripplingPainting->vXPos; - paintingPos[1] = ripplingPainting->vYPos; - paintingPos[2] = ripplingPainting->vZPos; + paintingPos[0] = gRipplingPainting->posX; + paintingPos[1] = gRipplingPainting->posY; + paintingPos[2] = gRipplingPainting->posZ; offset_rotated(focus, paintingPos, focusOffset, paintingAngle); approach_vec3f_asymptotic(c->focus, focus, 0.1f, 0.1f, 0.1f); - focusOffset[2] = -(((ripplingPainting->vSize * 1000.f) / 2) / 307.f); + focusOffset[2] = -(((gRipplingPainting->size * 1000.f) / 2) / 307.f); offset_rotated(focus, paintingPos, focusOffset, paintingAngle); floorHeight = find_floor(focus[0], focus[1] + 500.f, focus[2], &highFloor) + 125.f; diff --git a/src/game/camera.h b/src/game/camera.h index 4f0c5099..b9aecbec 100644 --- a/src/game/camera.h +++ b/src/game/camera.h @@ -684,8 +684,8 @@ extern void reset_camera(struct Camera *); extern void init_camera(struct Camera *); extern void select_mario_cam_mode(void); extern Gfx *geo_camera_main(s32 callContext, struct GraphNode *g, void *context); -extern void dummy_802877D8(struct Camera *); -extern void dummy_802877EC(struct Camera *); +extern void stub_camera_2(struct Camera *); +extern void stub_camera_3(struct Camera *); extern void vec3f_sub(Vec3f dst, Vec3f src); extern void object_pos_to_vec3f(Vec3f, struct Object *); extern void vec3f_to_object_pos(struct Object *, Vec3f); // static (ASM) diff --git a/src/game/crash_screen.c b/src/game/crash_screen.c index ee752506..ea07ffd5 100644 --- a/src/game/crash_screen.c +++ b/src/game/crash_screen.c @@ -4,7 +4,7 @@ #include "sm64.h" -#ifdef VERSION_EU +#if defined(VERSION_EU) || defined(VERSION_SH) s32 _Printf(char *(*prout)(char *, const char *, size_t), char *dst, const char *fmt, va_list args); diff --git a/src/game/debug.c b/src/game/debug.c index 76edcd52..e27a77c3 100644 --- a/src/game/debug.c +++ b/src/game/debug.c @@ -57,16 +57,16 @@ s8 sDebugInfoButtonSeqID = 0; s16 sDebugInfoButtonSeq[] = { U_CBUTTONS, L_CBUTTONS, D_CBUTTONS, R_CBUTTONS, -1 }; // most likely present in an ifdef DEBUG build. TODO: check DD version? -void Stub802C9890(void) { +void stub_debug_1(void) { } -void Stub802C98A0(void) { +void stub_debug_2(void) { } -void Stub802C98B0(void) { +void stub_debug_3(void) { } -void Stub802C98C0(void) { +void stub_debug_4(void) { } /* @@ -436,7 +436,7 @@ static void try_modify_debug_controls(void) { } // possibly a removed debug control (TODO: check DD) -void stub_802CA5D0(void) { +void stub_debug_5(void) { } /* @@ -521,7 +521,7 @@ void try_do_mario_debug_object_spawn(void) { } // TODO: figure out what this is -static void Unknown802CA8B4(void) { +static void debug_print_obj_move_flags(void) { #ifndef VERSION_EU if (gCurrentObject->oMoveFlags & OBJ_MOVE_LANDED) { print_debug_top_down_objectinfo("BOUND %x", gCurrentObject->oMoveFlags); @@ -554,7 +554,7 @@ static void Unknown802CA8B4(void) { } // unused, what is this? -void Unknown802CAA84(s16 *enemyArr) { +void debug_enemy_unknown(s16 *enemyArr) { // copy b1-b4 over to an unknown s16 array enemyArr[4] = gDebugInfo[DEBUG_PAGE_ENEMYINFO][1]; enemyArr[5] = gDebugInfo[DEBUG_PAGE_ENEMYINFO][2]; diff --git a/src/game/debug.h b/src/game/debug.h index 18f86c6a..a4a47eda 100644 --- a/src/game/debug.h +++ b/src/game/debug.h @@ -20,7 +20,7 @@ extern void print_debug_top_down_mapinfo(const char * str, s32 number); extern void print_debug_bottom_up(const char*,s32); extern void debug_unknown_level_select_check(void); extern void reset_debug_objectinfo(void); -extern void stub_802CA5D0(void); +extern void stub_debug_5(void); extern void try_print_debug_mario_object_info(void); extern void try_do_mario_debug_object_spawn(void); extern void try_print_debug_mario_level_info(void); diff --git a/src/game/display.c b/src/game/display.c index 257f63d5..b9ac5fcc 100644 --- a/src/game/display.c +++ b/src/game/display.c @@ -214,7 +214,7 @@ void end_master_display_list(void) { create_task_structure(); } -void func_80247D84(void) { +void draw_reset_bars(void) { s32 sp24; s32 sp20; s32 fbNum; @@ -242,7 +242,7 @@ void func_80247D84(void) { osRecvMesg(&gGameVblankQueue, &D_80339BEC, OS_MESG_BLOCK); } -void func_80247ED8(void) { +void rendering_init(void) { gGfxPool = &gGfxPools[0]; set_segment_base_addr(1, gGfxPool->buffer); gGfxSPTask = &gGfxPool->spTask; @@ -257,7 +257,7 @@ void func_80247ED8(void) { gGlobalTimer++; } -void func_80247FAC(void) { +void config_gfx_pool(void) { gGfxPool = &gGfxPools[gGlobalTimer % 2]; set_segment_base_addr(1, gGfxPool->buffer); gGfxSPTask = &gGfxPool->spTask; diff --git a/src/game/display.h b/src/game/display.h index 36fcaf15..7d55b2d2 100644 --- a/src/game/display.h +++ b/src/game/display.h @@ -23,9 +23,9 @@ extern void clear_viewport(Vp *, s32); void make_viewport_clip_rect(Vp *viewport); extern void init_render_image(void); extern void end_master_display_list(void); -extern void func_80247D84(void); -extern void func_80247ED8(void); -extern void func_80247FAC(void); +extern void draw_reset_bars(void); +extern void rendering_init(void); +extern void config_gfx_pool(void); extern void display_and_vsync(void); #endif /* _DISPLAY_H */ diff --git a/src/game/envfx_bubbles.c b/src/game/envfx_bubbles.c index 6d1d912a..34eb7c02 100644 --- a/src/game/envfx_bubbles.c +++ b/src/game/envfx_bubbles.c @@ -413,16 +413,16 @@ void envfx_bubbles_update_switch(s32 mode, Vec3s camTo, Vec3s vertex1, Vec3s ver * Append 15 vertices to 'gfx', which is enough for 5 bubbles starting at * 'index'. The 3 input vertices represent the roated triangle around (0,0,0) * that will be translated to bubble positions to draw the bubble image + * + * TODO: (Scrub C) */ -#if defined(VERSION_EU) && !defined(NON_MATCHING) -void append_bubble_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3, - Vtx *template); -GLOBAL_ASM("asm/non_matchings/eu/append_bubble_vertex_buffer.s") -#else void append_bubble_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3, Vtx *template) { s32 i = 0; Vtx *vertBuf = alloc_display_list(15 * sizeof(Vtx)); +#ifdef VERSION_EU + Vtx *p; +#endif if (vertBuf == NULL) { return; @@ -430,24 +430,47 @@ void append_bubble_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s verte for (i = 0; i < 15; i += 3) { vertBuf[i] = template[0]; +#ifdef VERSION_EU + p = vertBuf; + p += i; + p[0].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex1[0]; + p[0].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex1[1]; + p[0].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex1[2]; +#else vertBuf[i].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex1[0]; vertBuf[i].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex1[1]; vertBuf[i].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex1[2]; +#endif vertBuf[i + 1] = template[1]; +#ifdef VERSION_EU + p = vertBuf; + p += i; + p[1].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex2[0]; + p[1].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex2[1]; + p[1].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex2[2]; +#else vertBuf[i + 1].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex2[0]; vertBuf[i + 1].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex2[1]; vertBuf[i + 1].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex2[2]; +#endif vertBuf[i + 2] = template[2]; +#ifdef VERSION_EU + p = vertBuf; + p += i; + p[2].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex3[0]; + p[2].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex3[1]; + p[2].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex3[2]; +#else vertBuf[i + 2].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex3[0]; vertBuf[i + 2].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex3[1]; vertBuf[i + 2].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex3[2]; +#endif } gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBuf), 15, 0); } -#endif /** * Appends to the enfvx display list a command setting the appropriate texture diff --git a/src/game/envfx_snow.c b/src/game/envfx_snow.c index 4d3c223e..8d7ec2ed 100644 --- a/src/game/envfx_snow.c +++ b/src/game/envfx_snow.c @@ -21,7 +21,7 @@ * implementation for flowers (unused), lava bubbles and jetstream bubbles * can be found. * The main entry point for envfx is at the bottom of this file, which is - * called from geo_enfvx_main in level_geo.c + * called from geo_envfx_main in level_geo.c */ // Might be duplicate @@ -340,14 +340,15 @@ void rotate_triangle_vertices(Vec3s vertex1, Vec3s vertex2, Vec3s vertex3, s16 p * 'index' in the buffer. The 3 input vertices represent the roated triangle * around (0,0,0) that will be translated to snowflake positions to draw the * snowflake image. + * + * TODO: (Scrub C) */ -#if defined(VERSION_EU) && !defined(NON_MATCHING) -void append_snowflake_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3); -GLOBAL_ASM("asm/non_matchings/eu/append_snowflake_vertex_buffer.s") -#else void append_snowflake_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3) { s32 i = 0; Vtx *vertBuf = (Vtx *) alloc_display_list(15 * sizeof(Vtx)); +#ifdef VERSION_EU + Vtx *p; +#endif if (vertBuf == NULL) { return; @@ -355,24 +356,47 @@ void append_snowflake_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s ve for (i = 0; i < 15; i += 3) { vertBuf[i] = gSnowTempVtx[0]; +#ifdef VERSION_EU + p = vertBuf; + p += i; + p[0].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex1[0]; + p[0].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex1[1]; + p[0].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex1[2]; +#else vertBuf[i].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex1[0]; vertBuf[i].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex1[1]; vertBuf[i].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex1[2]; +#endif vertBuf[i + 1] = gSnowTempVtx[1]; +#ifdef VERSION_EU + p = vertBuf; + p += i; + p[1].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex2[0]; + p[1].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex2[1]; + p[1].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex2[2]; +#else vertBuf[i + 1].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex2[0]; vertBuf[i + 1].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex2[1]; vertBuf[i + 1].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex2[2]; +#endif vertBuf[i + 2] = gSnowTempVtx[2]; +#ifdef VERSION_EU + p = vertBuf; + p += i; + p[2].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex3[0]; + p[2].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex3[1]; + p[2].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex3[2]; +#else vertBuf[i + 2].v.ob[0] = gEnvFxBuffer[index + i / 3].xPos + vertex3[0]; vertBuf[i + 2].v.ob[1] = gEnvFxBuffer[index + i / 3].yPos + vertex3[1]; vertBuf[i + 2].v.ob[2] = gEnvFxBuffer[index + i / 3].zPos + vertex3[2]; +#endif } gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBuf), 15, 0); } -#endif /** * Updates positions of snow particles and returns a pointer to a display list diff --git a/src/game/game.c b/src/game/game.c index a80a10c9..ca9af904 100644 --- a/src/game/game.c +++ b/src/game/game.c @@ -305,12 +305,12 @@ void thread5_game_loop(UNUSED void *arg) { play_music(2, SEQUENCE_ARGS(0, SEQ_SOUND_PLAYER), 0); set_sound_mode(save_file_get_sound_mode()); - func_80247ED8(); + rendering_init(); while (1) { // if the reset timer is active, run the process to reset the game. if (gResetTimer) { - func_80247D84(); + draw_reset_bars(); continue; } profiler_log_thread5_time(THREAD5_START); @@ -322,7 +322,7 @@ void thread5_game_loop(UNUSED void *arg) { } audio_game_loop_tick(); - func_80247FAC(); + config_gfx_pool(); read_controller_inputs(); addr = level_script_execute(addr); display_and_vsync(); diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 1b6cd964..c55d9d74 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -35,7 +35,7 @@ u16 gDialogColorFadeTimer; s8 gLastDialogLineNum; s32 gDialogVariable; u16 gDialogTextAlpha; -#ifdef VERSION_EU +#if defined(VERSION_EU) s16 gDialogX; // D_8032F69A s16 gDialogY; // D_8032F69C #endif @@ -317,7 +317,7 @@ void render_uppercase_diacritic(s16 *xPos, s16 *yPos, u8 letter, u8 diacritic) { } #endif // VERSION_EU -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) struct MultiTextEntry { u8 length; u8 str[4]; @@ -357,7 +357,7 @@ void render_multi_text_string(s16 *xPos, s16 *yPos, s8 multiTextID) // EU: 802AD } #endif -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define MAX_STRING_WIDTH 18 #else #define MAX_STRING_WIDTH 16 @@ -448,7 +448,7 @@ void print_generic_string(s16 x, s16 y, const u8 *str) { gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW); break; #endif -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) case DIALOG_CHAR_SLASH: #ifdef VERSION_US create_dl_translation_matrix(MENU_MTX_NOPUSH, (f32)(gDialogCharWidths[DIALOG_CHAR_SPACE] * 2), 0.0f, 0.0f); @@ -781,7 +781,7 @@ s16 get_str_x_pos_from_center(s16 centerPos, u8 *str, UNUSED f32 scale) { } #endif -#if defined(VERSION_JP) || defined(VERSION_EU) +#if defined(VERSION_JP) || defined(VERSION_EU) || defined(VERSION_SH) s16 get_str_x_pos_from_center_scale(s16 centerPos, u8 *str, f32 scale) { s16 strPos = 0; f32 charsWidth = 0.0f; @@ -1061,7 +1061,7 @@ void handle_dialog_scroll_page_state(s8 lineNum, s8 totalLines, s8 *pageState, s xMatrix[0] = 1; } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) void adjust_pos_and_print_period_char(s8 *xMatrix, s16 *linePos) { if (linePos[0] != 0) { create_dl_translation_matrix(MENU_MTX_NOPUSH, xMatrix[0] * 10, 0, 0); @@ -1136,7 +1136,7 @@ void render_star_count_dialog_text(s8 *xMatrix, s16 *linePos) #endif } -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) #ifdef VERSION_EU void render_multi_text_string_lines(s8 multiTextId, s8 lineNum, s8 linesPerBox, UNUSED s16 linePos, s8 lowerBound, struct DialogEntry *dialog) #else @@ -1193,18 +1193,16 @@ u32 ensure_nonnegative(s16 value) { return value; } -#if defined(VERSION_EU) && !defined(NON_MATCHING) -// TODO: EU is not quite matching -void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 lowerBound); -GLOBAL_ASM("asm/non_matchings/eu/handle_dialog_text_and_pages.s") -#else -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog) #else void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 lowerBound) #endif { UNUSED s32 pad[2]; +#ifdef VERSION_EU + s16 startY = 14; +#endif u8 strChar; @@ -1236,10 +1234,7 @@ void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 l strIdx = gDialogTextPos; #ifdef VERSION_EU gDialogX = 0; - - // If this is turned into "gDialogY2 = 14;" with a symbol gDialogY2 that - // alises gDialogY the code matches... - gDialogY = 14; + gDialogY = startY; #endif if (gDialogBoxState == DIALOG_STATE_HORIZONTAL) { @@ -1342,7 +1337,7 @@ void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 l #endif break; -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) case DIALOG_CHAR_PERIOD: adjust_pos_and_print_period_char(&xMatrix, &linePos); break; @@ -1386,7 +1381,7 @@ void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 l break; #endif default: // any other character -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) if (linePos != 0) { create_dl_translation_matrix(MENU_MTX_NOPUSH, xMatrix * 10, 0, 0); } @@ -1463,7 +1458,6 @@ void handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 l gLastDialogLineNum = lineNum; } -#endif #ifdef VERSION_JP #define X_VAL4_1 50 @@ -1503,7 +1497,7 @@ void render_dialog_triangle_choice(void) { #define Y_VAL5_1 -16 #define Y_VAL5_2 5 #define X_Y_VAL6 0.8f -#elif defined(VERSION_JP) +#elif defined(VERSION_JP) || defined(VERSION_SH) #define X_VAL5 123.0f #define Y_VAL5_1 -20 #define Y_VAL5_2 2 @@ -1735,7 +1729,7 @@ void render_dialog_entries(void) { gDialogBoxState = DIALOG_STATE_VERTICAL; gDialogLineNum = 1; } -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) lowerBound = 1; #endif break; @@ -1752,7 +1746,7 @@ void render_dialog_entries(void) { play_sound(SOUND_MENU_MESSAGE_NEXT_PAGE, gDefaultSoundArgs); } } -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) lowerBound = 1; #endif break; @@ -1764,7 +1758,7 @@ void render_dialog_entries(void) { gDialogBoxState = DIALOG_STATE_VERTICAL; gDialogScrollOffsetY = 0; } -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) lowerBound = (gDialogScrollOffsetY / 16) + 1; #endif break; @@ -1791,7 +1785,7 @@ void render_dialog_entries(void) { gLastDialogPageStrPos = 0; gDialogResponse = 0; } -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) lowerBound = 1; #endif break; @@ -1808,7 +1802,7 @@ void render_dialog_entries(void) { ensure_nonnegative(DIAG_VAL3 + dialog->leftOffset), ensure_nonnegative(240 + ((dialog->linesPerBox * 80) / DIAG_VAL4) - dialog->width)); #endif -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) handle_dialog_text_and_pages(0, dialog); #else handle_dialog_text_and_pages(0, dialog, lowerBound); @@ -1940,10 +1934,14 @@ void do_cutscene_handler(void) { print_generic_string(x, 240 - gCutsceneMsgYOffset, gEndCutsceneStringsDe[gCutsceneMsgIndex]); break; } +#else +#if defined(VERSION_SH) + // get the x coordinate of where the cutscene string starts. + x = get_str_x_pos_from_center_scale(gCutsceneMsgXOffset, gEndCutsceneStringsEn[gCutsceneMsgIndex], 10.0f); #else // get the x coordinate of where the cutscene string starts. x = get_str_x_pos_from_center(gCutsceneMsgXOffset, gEndCutsceneStringsEn[gCutsceneMsgIndex], 10.0f); - +#endif print_generic_string(x, 240 - gCutsceneMsgYOffset, gEndCutsceneStringsEn[gCutsceneMsgIndex]); #endif @@ -2897,7 +2895,7 @@ void render_course_complete_lvl_info_and_hud_str(void) { gSPDisplayList(gDisplayListHead++, dl_ia_text_end); } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define TXT_SAVEOPTIONS_X x + 10 #elif defined(VERSION_US) #define TXT_SAVEOPTIONS_X x + 12 diff --git a/src/game/interaction.c b/src/game/interaction.c index 94d539be..c495e611 100644 --- a/src/game/interaction.c +++ b/src/game/interaction.c @@ -20,24 +20,24 @@ #include "dialog_ids.h" #include "course_table.h" -#define INT_GROUND_POUND_OR_TWIRL (1 << 0) // 0x00000001 -#define INT_PUNCH (1 << 1) // 0x00000002 -#define INT_KICK (1 << 2) // 0x00000004 -#define INT_TRIP (1 << 3) // 0x00000008 -#define INT_SLIDE_KICK (1 << 4) // 0x00000010 -#define INT_FAST_ATTACK_OR_SHELL (1 << 5) // 0x00000020 -#define INT_HIT_FROM_ABOVE (1 << 6) // 0x00000040 -#define INT_HIT_FROM_BELOW (1 << 7) // 0x00000080 +#define INT_GROUND_POUND_OR_TWIRL (1 << 0) // 0x01 +#define INT_PUNCH (1 << 1) // 0x02 +#define INT_KICK (1 << 2) // 0x04 +#define INT_TRIP (1 << 3) // 0x08 +#define INT_SLIDE_KICK (1 << 4) // 0x10 +#define INT_FAST_ATTACK_OR_SHELL (1 << 5) // 0x20 +#define INT_HIT_FROM_ABOVE (1 << 6) // 0x40 +#define INT_HIT_FROM_BELOW (1 << 7) // 0x80 -#define INT_ATTACK_NOT_FROM_BELOW \ - (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_SLIDE_KICK \ +#define INT_ATTACK_NOT_FROM_BELOW \ + (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_SLIDE_KICK \ | INT_FAST_ATTACK_OR_SHELL | INT_HIT_FROM_ABOVE) -#define INT_ANY_ATTACK \ - (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_SLIDE_KICK \ +#define INT_ANY_ATTACK \ + (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_SLIDE_KICK \ | INT_FAST_ATTACK_OR_SHELL | INT_HIT_FROM_ABOVE | INT_HIT_FROM_BELOW) -#define INT_ATTACK_MASK_UNKNOWN_8F \ +#define INT_ATTACK_NOT_WEAK_FROM_ABOVE \ (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_HIT_FROM_BELOW) u8 sDelayInvincTimer; @@ -54,7 +54,7 @@ u32 interact_cannon_base(struct MarioState *, u32, struct Object *); u32 interact_igloo_barrier(struct MarioState *, u32, struct Object *); u32 interact_tornado(struct MarioState *, u32, struct Object *); u32 interact_whirlpool(struct MarioState *, u32, struct Object *); -u32 interact_wind(struct MarioState *, u32, struct Object *); +u32 interact_strong_wind(struct MarioState *, u32, struct Object *); u32 interact_flame(struct MarioState *, u32, struct Object *); u32 interact_snufit_bullet(struct MarioState *, u32, struct Object *); u32 interact_clam_or_bubba(struct MarioState *, u32, struct Object *); @@ -79,55 +79,58 @@ struct InteractionHandler { }; static struct InteractionHandler sInteractionHandlers[] = { - { INTERACT_COIN, interact_coin }, - { INTERACT_WATER_RING, interact_water_ring }, - { INTERACT_STAR_OR_KEY, interact_star_or_key }, - { INTERACT_BBH_ENTRANCE, interact_bbh_entrance }, - { INTERACT_WARP, interact_warp }, - { INTERACT_WARP_DOOR, interact_warp_door }, - { INTERACT_DOOR, interact_door }, - { INTERACT_CANNON_BASE, interact_cannon_base }, - { INTERACT_IGLOO_BARRIER, interact_igloo_barrier }, - { INTERACT_TORNADO, interact_tornado }, - { INTERACT_WHIRLPOOL, interact_whirlpool }, - { INTERACT_WIND, interact_wind }, - { INTERACT_FLAME, interact_flame }, - { INTERACT_SNUFIT_BULLET, interact_snufit_bullet }, - { INTERACT_CLAM_OR_BUBBA, interact_clam_or_bubba }, - { INTERACT_BULLY, interact_bully }, - { INTERACT_SHOCK, interact_shock }, - { INTERACT_TRAP_TURN, interact_bounce_top }, - { INTERACT_MR_BLIZZARD, interact_mr_blizzard }, + { INTERACT_COIN, interact_coin }, + { INTERACT_WATER_RING, interact_water_ring }, + { INTERACT_STAR_OR_KEY, interact_star_or_key }, + { INTERACT_BBH_ENTRANCE, interact_bbh_entrance }, + { INTERACT_WARP, interact_warp }, + { INTERACT_WARP_DOOR, interact_warp_door }, + { INTERACT_DOOR, interact_door }, + { INTERACT_CANNON_BASE, interact_cannon_base }, + { INTERACT_IGLOO_BARRIER, interact_igloo_barrier }, + { INTERACT_TORNADO, interact_tornado }, + { INTERACT_WHIRLPOOL, interact_whirlpool }, + { INTERACT_STRONG_WIND, interact_strong_wind }, + { INTERACT_FLAME, interact_flame }, + { INTERACT_SNUFIT_BULLET, interact_snufit_bullet }, + { INTERACT_CLAM_OR_BUBBA, interact_clam_or_bubba }, + { INTERACT_BULLY, interact_bully }, + { INTERACT_SHOCK, interact_shock }, + { INTERACT_TRAP_TURN, interact_bounce_top }, + { INTERACT_MR_BLIZZARD, interact_mr_blizzard }, { INTERACT_HIT_FROM_BELOW, interact_hit_from_below }, - { INTERACT_BOUNCE_TOP, interact_bounce_top }, - { INTERACT_DAMAGE, interact_damage }, - { INTERACT_POLE, interact_pole }, - { INTERACT_HOOT, interact_hoot }, - { INTERACT_BREAKABLE, interact_breakable }, - { INTERACT_KOOPA, interact_bounce_top }, - { INTERACT_KOOPA_SHELL, interact_koopa_shell }, - { INTERACT_UNKNOWN_08, interact_unknown_08 }, - { INTERACT_CAP, interact_cap }, - { INTERACT_GRABBABLE, interact_grabbable }, - { INTERACT_TEXT, interact_text }, + { INTERACT_BOUNCE_TOP, interact_bounce_top }, + { INTERACT_DAMAGE, interact_damage }, + { INTERACT_POLE, interact_pole }, + { INTERACT_HOOT, interact_hoot }, + { INTERACT_BREAKABLE, interact_breakable }, + { INTERACT_KOOPA, interact_bounce_top }, + { INTERACT_KOOPA_SHELL, interact_koopa_shell }, + { INTERACT_UNKNOWN_08, interact_unknown_08 }, + { INTERACT_CAP, interact_cap }, + { INTERACT_GRABBABLE, interact_grabbable }, + { INTERACT_TEXT, interact_text }, }; static u32 sForwardKnockbackActions[][3] = { { ACT_SOFT_FORWARD_GROUND_KB, ACT_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB }, - { ACT_FORWARD_AIR_KB, ACT_FORWARD_AIR_KB, ACT_HARD_FORWARD_AIR_KB }, - { ACT_FORWARD_WATER_KB, ACT_FORWARD_WATER_KB, ACT_FORWARD_WATER_KB }, + { ACT_FORWARD_AIR_KB, ACT_FORWARD_AIR_KB, ACT_HARD_FORWARD_AIR_KB }, + { ACT_FORWARD_WATER_KB, ACT_FORWARD_WATER_KB, ACT_FORWARD_WATER_KB }, }; static u32 sBackwardKnockbackActions[][3] = { { ACT_SOFT_BACKWARD_GROUND_KB, ACT_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB }, - { ACT_BACKWARD_AIR_KB, ACT_BACKWARD_AIR_KB, ACT_HARD_BACKWARD_AIR_KB }, - { ACT_BACKWARD_WATER_KB, ACT_BACKWARD_WATER_KB, ACT_BACKWARD_WATER_KB }, + { ACT_BACKWARD_AIR_KB, ACT_BACKWARD_AIR_KB, ACT_HARD_BACKWARD_AIR_KB }, + { ACT_BACKWARD_WATER_KB, ACT_BACKWARD_WATER_KB, ACT_BACKWARD_WATER_KB }, }; static u8 sDisplayingDoorText = FALSE; static u8 sJustTeleported = FALSE; static u8 sPssSlideStarted = FALSE; +/** + * Returns the type of hat Mario is wearing. + */ u32 get_mario_cap_flag(struct Object *capObject) { void *script = virtual_to_segmented(0x13, capObject->behavior); @@ -143,7 +146,10 @@ u32 get_mario_cap_flag(struct Object *capObject) { return 0; } - +/** + * Returns true if the passed in object has a moving angle yaw + * in the angular range given towards Mario. + */ u32 object_facing_mario(struct MarioState *m, struct Object *o, s16 angleRange) { f32 dx = m->pos[0] - o->oPosX; f32 dz = m->pos[2] - o->oPosZ; @@ -158,32 +164,39 @@ u32 object_facing_mario(struct MarioState *m, struct Object *o, s16 angleRange) return FALSE; } -s16 mario_angle_to_object(struct MarioState *m, struct Object *o) { +s16 mario_obj_angle_to_object(struct MarioState *m, struct Object *o) { f32 dx = o->oPosX - m->pos[0]; f32 dz = o->oPosZ - m->pos[2]; return atan2s(dz, dx); } +/** + * Determines Mario's interaction with a given object depending on their proximity, + * action, speed, and position. + */ u32 determine_interaction(struct MarioState *m, struct Object *o) { u32 interaction = 0; u32 action = m->action; if (action & ACT_FLAG_ATTACKING) { if (action == ACT_PUNCHING || action == ACT_MOVE_PUNCHING || action == ACT_JUMP_KICK) { - s16 dYawToObject = mario_angle_to_object(m, o) - m->faceAngle[1]; + s16 dYawToObject = mario_obj_angle_to_object(m, o) - m->faceAngle[1]; if (m->flags & MARIO_PUNCHING) { + // 120 degrees total, or 60 each way if (-0x2AAA <= dYawToObject && dYawToObject <= 0x2AAA) { interaction = INT_PUNCH; } } if (m->flags & MARIO_KICKING) { + // 120 degrees total, or 60 each way if (-0x2AAA <= dYawToObject && dYawToObject <= 0x2AAA) { interaction = INT_KICK; } } if (m->flags & MARIO_TRIPPING) { + // 180 degrees total, or 90 each way if (-0x4000 <= dYawToObject && dYawToObject <= 0x4000) { interaction = INT_TRIP; } @@ -193,6 +206,10 @@ u32 determine_interaction(struct MarioState *m, struct Object *o) { interaction = INT_GROUND_POUND_OR_TWIRL; } } else if (action == ACT_GROUND_POUND_LAND || action == ACT_TWIRL_LAND) { + // Neither ground pounding nor twirling change Mario's vertical speed on landing., + // so the speed check is nearly always true (perhaps not if you land while going upwards?) + // Additionally, actionState it set on each first thing in their action, so this is + // only true prior to the very first frame (i.e. active 1 frame prior to it run). if (m->vel[1] < 0.0f && m->actionState == 0) { interaction = INT_GROUND_POUND_OR_TWIRL; } @@ -205,6 +222,9 @@ u32 determine_interaction(struct MarioState *m, struct Object *o) { } } + // Prior to this, the interaction type could be overwritten. This requires, however, + // that the interaction not be set prior. This specifically overrides turning a ground + // pound into just a bounce. if (interaction == 0 && (action & ACT_FLAG_AIR)) { if (m->vel[1] < 0.0f) { if (m->pos[1] > o->oPosY) { @@ -220,6 +240,9 @@ u32 determine_interaction(struct MarioState *m, struct Object *o) { return interaction; } +/** + * Sets the interaction types for INT_STATUS_INTERACTED, INT_STATUS_WAS_ATTACKED + */ u32 attack_object(struct Object *o, s32 interaction) { u32 attackType = 0; @@ -261,7 +284,7 @@ void mario_stop_riding_object(struct MarioState *m) { void mario_grab_used_object(struct MarioState *m) { if (m->heldObj == NULL) { m->heldObj = m->usedObj; - set_object_held_state(m->heldObj, bhvCarrySomething3); + obj_set_held_state(m->heldObj, bhvCarrySomething3); } } @@ -271,7 +294,7 @@ void mario_drop_held_object(struct MarioState *m) { stop_shell_music(); } - set_object_held_state(m->heldObj, bhvCarrySomething4); + obj_set_held_state(m->heldObj, bhvCarrySomething4); // ! When dropping an object instead of throwing it, it will be put at Mario's // y-positon instead of the HOLP's y-position. This fact is often exploited when @@ -292,7 +315,7 @@ void mario_throw_held_object(struct MarioState *m) { stop_shell_music(); } - set_object_held_state(m->heldObj, bhvCarrySomething5); + obj_set_held_state(m->heldObj, bhvCarrySomething5); m->heldObj->oPosX = m->marioBodyState->heldObjLastPosition[0] + 32.0f * sins(m->faceAngle[1]); m->heldObj->oPosY = m->marioBodyState->heldObjLastPosition[1]; @@ -403,7 +426,7 @@ u32 mario_check_object_grab(struct MarioState *m) { result = set_mario_action(m, ACT_PICKING_UP_BOWSER, 0); } } else { - s16 facingDYaw = mario_angle_to_object(m, m->interactObj) - m->faceAngle[1]; + s16 facingDYaw = mario_obj_angle_to_object(m, m->interactObj) - m->faceAngle[1]; if (facingDYaw >= -0x2AAA && facingDYaw <= 0x2AAA) { m->usedObj = m->interactObj; @@ -501,7 +524,7 @@ void hit_object_from_below(struct MarioState *m, UNUSED struct Object *o) { static u32 unused_determine_knockback_action(struct MarioState *m) { u32 bonkAction; - s16 angleToObject = mario_angle_to_object(m, m->interactObj); + s16 angleToObject = mario_obj_angle_to_object(m, m->interactObj); s16 facingDYaw = angleToObject - m->faceAngle[1]; if (m->forwardVel < 16.0f) { @@ -535,7 +558,7 @@ u32 determine_knockback_action(struct MarioState *m, UNUSED s32 arg) { s16 terrainIndex = 0; // 1 = air, 2 = water, 0 = default s16 strengthIndex = 0; - s16 angleToObject = mario_angle_to_object(m, m->interactObj); + s16 angleToObject = mario_obj_angle_to_object(m, m->interactObj); s16 facingDYaw = angleToObject - m->faceAngle[1]; s16 remainingHealth = m->health - 0x40 * m->hurtCounter; @@ -633,7 +656,7 @@ void bounce_back_from_attack(struct MarioState *m, u32 interaction) { } set_camera_shake_from_hit(SHAKE_ATTACK); - m->particleFlags |= 0x00040000; + m->particleFlags |= PARTICLE_18; } if (interaction & (INT_PUNCH | INT_KICK | INT_TRIP | INT_FAST_ATTACK_OR_SHELL)) { @@ -641,7 +664,7 @@ void bounce_back_from_attack(struct MarioState *m, u32 interaction) { } } -u32 func_8024D664(struct MarioState *m, struct Object *o) { +u32 should_push_or_pull_door(struct MarioState *m, struct Object *o) { f32 dx = o->oPosX - m->pos[0]; f32 dz = o->oPosZ - m->pos[2]; @@ -776,7 +799,7 @@ u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct O if (!noExit) { drop_queued_background_music(); - func_8024924C(126); + fadeout_level_music(126); } play_sound(SOUND_MENU_STAR_SOUND, m->marioObj->header.gfx.cameraToObject); @@ -888,7 +911,7 @@ u32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Obj } if (m->action == ACT_WALKING || m->action == ACT_DECELERATING) { - actionArg = func_8024D664(m, o) + 0x00000004; + actionArg = should_push_or_pull_door(m, o) + 0x00000004; if (doorAction == 0) { if (actionArg & 0x00000001) { @@ -953,7 +976,7 @@ u32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object * if (m->action == ACT_WALKING || m->action == ACT_DECELERATING) { if (numStars >= requiredNumStars) { - u32 actionArg = func_8024D664(m, o); + u32 actionArg = should_push_or_pull_door(m, o); u32 enterDoorAction; u32 doorSaveFileFlag; @@ -1008,7 +1031,7 @@ u32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object * } else if (m->action == ACT_IDLE && sDisplayingDoorText == TRUE && requiredNumStars == 70) { m->interactObj = o; m->usedObj = o; - return set_mario_action(m, ACT_ENTERING_STAR_DOOR, func_8024D664(m, o)); + return set_mario_action(m, ACT_ENTERING_STAR_DOOR, should_push_or_pull_door(m, o)); } return FALSE; @@ -1078,7 +1101,7 @@ u32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Obj return FALSE; } -u32 interact_wind(struct MarioState *m, UNUSED u32 interactType, struct Object *o) { +u32 interact_strong_wind(struct MarioState *m, UNUSED u32 interactType, struct Object *o) { UNUSED struct Object *marioObj = m->marioObj; if (m->action != ACT_GETTING_BLOWN) { @@ -1233,7 +1256,7 @@ u32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object return FALSE; } -static u32 func_8024EF8C(UNUSED struct MarioState *m, UNUSED u32 interactType, struct Object *o) { +static u32 interact_stub(UNUSED struct MarioState *m, UNUSED u32 interactType, struct Object *o) { if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) { sDelayInvincTimer = TRUE; } @@ -1356,7 +1379,7 @@ u32 interact_damage(struct MarioState *m, UNUSED u32 interactType, struct Object u32 interact_breakable(struct MarioState *m, UNUSED u32 interactType, struct Object *o) { u32 interaction = determine_interaction(m, o); - if (interaction & INT_ATTACK_MASK_UNKNOWN_8F) { + if (interaction & INT_ATTACK_NOT_WEAK_FROM_ABOVE) { attack_object(o, interaction); bounce_back_from_attack(m, interaction); @@ -1560,7 +1583,7 @@ u32 interact_grabbable(struct MarioState *m, u32 interactType, struct Object *o) return FALSE; } -u32 func_8024FC94(struct MarioState *m, u32 arg) { +u32 mario_can_talk(struct MarioState *m, u32 arg) { s16 val6; if ((m->action & ACT_FLAG_IDLE) != 0x00000000) { @@ -1594,8 +1617,8 @@ u32 func_8024FC94(struct MarioState *m, u32 arg) { #define SIGN_RANGE 0x4000 #endif -u32 func_8024FD2C(struct MarioState *m, struct Object *o) { - if ((m->input & READ_MASK) && func_8024FC94(m, 0) && object_facing_mario(m, o, SIGN_RANGE)) { +u32 check_read_sign(struct MarioState *m, struct Object *o) { + if ((m->input & READ_MASK) && mario_can_talk(m, 0) && object_facing_mario(m, o, SIGN_RANGE)) { s16 facingDYaw = (s16)(o->oMoveAngleYaw + 0x8000) - m->faceAngle[1]; if (facingDYaw >= -SIGN_RANGE && facingDYaw <= SIGN_RANGE) { f32 targetX = o->oPosX + 105.0f * sins(o->oMoveAngleYaw); @@ -1614,9 +1637,9 @@ u32 func_8024FD2C(struct MarioState *m, struct Object *o) { return FALSE; } -u32 func_8024FEC0(struct MarioState *m, struct Object *o) { - if ((m->input & READ_MASK) && func_8024FC94(m, 1)) { - s16 facingDYaw = mario_angle_to_object(m, o) - m->faceAngle[1]; +u32 check_npc_talk(struct MarioState *m, struct Object *o) { + if ((m->input & READ_MASK) && mario_can_talk(m, 1)) { + s16 facingDYaw = mario_obj_angle_to_object(m, o) - m->faceAngle[1]; if (facingDYaw >= -0x4000 && facingDYaw <= 0x4000) { o->oInteractStatus = INT_STATUS_INTERACTED; @@ -1636,9 +1659,9 @@ u32 interact_text(struct MarioState *m, UNUSED u32 interactType, struct Object * u32 interact = FALSE; if (o->oInteractionSubtype & INT_SUBTYPE_SIGN) { - interact = func_8024FD2C(m, o); + interact = check_read_sign(m, o); } else if (o->oInteractionSubtype & INT_SUBTYPE_NPC) { - interact = func_8024FEC0(m, o); + interact = check_npc_talk(m, o); } else { push_mario_out_of_object(m, o, 2.0f); } @@ -1661,11 +1684,11 @@ void check_kick_or_punch_wall(struct MarioState *m) { mario_set_forward_vel(m, -48.0f); play_sound(SOUND_ACTION_HIT_2, m->marioObj->header.gfx.cameraToObject); - m->particleFlags |= 0x00040000; + m->particleFlags |= PARTICLE_18; } else if (m->action & ACT_FLAG_AIR) { mario_set_forward_vel(m, -16.0f); play_sound(SOUND_ACTION_HIT_2, m->marioObj->header.gfx.cameraToObject); - m->particleFlags |= 0x00040000; + m->particleFlags |= PARTICLE_18; } } } @@ -1743,7 +1766,7 @@ void pss_end_slide(struct MarioState *m) { u16 slideTime = level_control_timer(TIMER_CONTROL_STOP); if (slideTime < 630) { m->marioObj->oBehParams = (1 << 24); - create_star(-6358.0f, -4300.0f, 4700.0f); + spawn_default_star(-6358.0f, -4300.0f, 4700.0f); } sPssSlideStarted = FALSE; } diff --git a/src/game/interaction.h b/src/game/interaction.h index 113a5ce8..60d327e3 100644 --- a/src/game/interaction.h +++ b/src/game/interaction.h @@ -13,7 +13,7 @@ #define INTERACT_KOOPA /* 0x00000080 */ (1 << 7) #define INTERACT_UNKNOWN_08 /* 0x00000100 */ (1 << 8) #define INTERACT_BREAKABLE /* 0x00000200 */ (1 << 9) -#define INTERACT_WIND /* 0x00000400 */ (1 << 10) +#define INTERACT_STRONG_WIND /* 0x00000400 */ (1 << 10) #define INTERACT_WARP_DOOR /* 0x00000800 */ (1 << 11) #define INTERACT_STAR_OR_KEY /* 0x00001000 */ (1 << 12) #define INTERACT_WARP /* 0x00002000 */ (1 << 13) @@ -105,7 +105,7 @@ struct BullyCollisionData { extern u8 D_03009AC8[]; -extern s16 mario_angle_to_object(struct MarioState *, struct Object *); +extern s16 mario_obj_angle_to_object(struct MarioState *, struct Object *); extern void mario_stop_riding_object(struct MarioState *); extern void mario_grab_used_object(struct MarioState *); extern void mario_drop_held_object(struct MarioState *); diff --git a/src/game/level_geo.c b/src/game/level_geo.c index 5a363831..65261c7f 100644 --- a/src/game/level_geo.c +++ b/src/game/level_geo.c @@ -13,7 +13,7 @@ * Geo function that generates a displaylist for environment effects such as * snow or jetstream bubbles. */ -Gfx *geo_enfvx_main(s32 callContext, struct GraphNode *node, f32 c[4][4]) { +Gfx *geo_envfx_main(s32 callContext, struct GraphNode *node, f32 c[4][4]) { Vec3s marioPos; Vec3s camFrom; Vec3s camTo; diff --git a/src/game/level_geo.h b/src/game/level_geo.h index 95a5199b..f131fa7a 100644 --- a/src/game/level_geo.h +++ b/src/game/level_geo.h @@ -8,7 +8,7 @@ struct Struct802761D0 u8 filler4[0x18-0x4]; }; -extern Gfx *geo_enfvx_main(s32 a, struct GraphNode *b, f32 c[4][4]); +extern Gfx *geo_envfx_main(s32 a, struct GraphNode *b, f32 c[4][4]); extern Gfx *geo_skybox_main(s32 a, struct GraphNode *b, UNUSED Mat4 *c); #endif /* _LEVEL_GEO_H */ diff --git a/src/game/level_update.c b/src/game/level_update.c index 8713bbb5..ffe44236 100644 --- a/src/game/level_update.c +++ b/src/game/level_update.c @@ -202,7 +202,7 @@ u16 level_control_timer(s32 timerOp) { return gHudDisplay.timer; } -u32 pressed_paused(void) { +u32 pressed_pause(void) { u32 val4 = get_dialog_id() >= 0; u32 intangible = (gMarioState->action & ACT_FLAG_INTANGIBLE) != 0; @@ -219,28 +219,28 @@ void set_play_mode(s16 playMode) { D_80339ECA = 0; } -void func_8024975C(s32 arg) { +void warp_special(s32 arg) { sCurrPlayMode = PLAY_MODE_CHANGE_LEVEL; D_80339ECA = 0; D_80339EE0 = arg; } -void func_80249788(u32 arg, u32 color) { +void fade_into_special_warp(u32 arg, u32 color) { if (color != 0) { color = 0xFF; } - func_802491FC(190); + fadeout_music(190); play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x10, color, color, color); level_set_transition(30, NULL); - func_8024975C(arg); + warp_special(arg); } -void nop_802497FC(void) { +void stub_level_update_1(void) { } -void func_8024980C(u32 arg) { +void load_level_init_text(u32 arg) { s32 gotAchievement; u32 dialogID = gCurrentArea->dialog[arg]; @@ -272,7 +272,7 @@ void func_8024980C(u32 arg) { } } -void func_8024992C(struct SpawnInfo *spawnInfo, u32 arg1) { +void init_door_warp(struct SpawnInfo *spawnInfo, u32 arg1) { if (arg1 & 0x00000002) { spawnInfo->startAngle[1] += 0x8000; } @@ -377,7 +377,7 @@ void init_mario_after_warp(void) { gPlayerSpawnInfos[0].startAngle[2] = 0; if (marioSpawnType == MARIO_SPAWN_UNKNOWN_01) { - func_8024992C(&gPlayerSpawnInfos[0], sWarpDest.arg); + init_door_warp(&gPlayerSpawnInfos[0], sWarpDest.arg); } if (sWarpDest.type == WARP_TYPE_CHANGE_LEVEL || sWarpDest.type == WARP_TYPE_CHANGE_AREA) { @@ -458,11 +458,11 @@ void init_mario_after_warp(void) { } // used for warps inside one level -void func_8024A02C(void) { +void warp_area(void) { if (sWarpDest.type != WARP_TYPE_NOT_WARPING) { if (sWarpDest.type == WARP_TYPE_CHANGE_AREA) { level_control_timer(TIMER_CONTROL_HIDE); - func_8027AA88(); + unload_mario_area(); load_area(sWarpDest.areaIdx); } @@ -471,7 +471,7 @@ void func_8024A02C(void) { } // used for warps between levels -void func_8024A094(void) { +void warp_level(void) { gCurrLevelNum = sWarpDest.levelNum; level_control_timer(TIMER_CONTROL_HIDE); @@ -480,7 +480,7 @@ void func_8024A094(void) { init_mario_after_warp(); } -void func_8024A0E0(void) { +void warp_credits(void) { s32 marioAction; switch (sWarpDest.nodeId) { @@ -562,7 +562,7 @@ void check_instant_warp(void) { } } -s16 func_8024A48C(s16 arg) { +s16 music_changed_through_warp(s16 arg) { struct ObjectWarpNode *warpNode = area_get_warp_node(arg); s16 levelNum = warpNode->node.destLevel & 0x7F; @@ -679,7 +679,7 @@ void initiate_painting_warp(void) { gMarioState->marioObj->header.gfx.node.flags &= ~0x0001; play_sound(SOUND_MENU_STAR_SOUND, gDefaultSoundArgs); - func_802491FC(398); + fadeout_music(398); } } } @@ -764,7 +764,7 @@ s16 level_trigger_warp(struct MarioState *m, s32 warpOp) { case WARP_OP_TELEPORT: sDelayedWarpTimer = 20; sSourceWarpNodeId = (m->usedObj->oBehParams & 0x00FF0000) >> 16; - val04 = !func_8024A48C(sSourceWarpNodeId); + val04 = !music_changed_through_warp(sSourceWarpNodeId); play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x14, 0xFF, 0xFF, 0xFF); break; @@ -772,14 +772,14 @@ s16 level_trigger_warp(struct MarioState *m, s32 warpOp) { sDelayedWarpTimer = 20; sDelayedWarpArg = m->actionArg; sSourceWarpNodeId = (m->usedObj->oBehParams & 0x00FF0000) >> 16; - val04 = !func_8024A48C(sSourceWarpNodeId); + val04 = !music_changed_through_warp(sSourceWarpNodeId); play_transition(WARP_TRANSITION_FADE_INTO_CIRCLE, 0x14, 0x00, 0x00, 0x00); break; case WARP_OP_WARP_OBJECT: sDelayedWarpTimer = 20; sSourceWarpNodeId = (m->usedObj->oBehParams & 0x00FF0000) >> 16; - val04 = !func_8024A48C(sSourceWarpNodeId); + val04 = !music_changed_through_warp(sSourceWarpNodeId); play_transition(WARP_TRANSITION_FADE_INTO_STAR, 0x14, 0x00, 0x00, 0x00); break; @@ -801,7 +801,7 @@ s16 level_trigger_warp(struct MarioState *m, s32 warpOp) { } if (val04 && gCurrDemoInput == NULL) { - func_802491FC((3 * sDelayedWarpTimer / 2) * 8 - 2); + fadeout_music((3 * sDelayedWarpTimer / 2) * 8 - 2); } } @@ -819,27 +819,27 @@ void initiate_delayed_warp(void) { reset_dialog_render_state(); if (gDebugLevelSelect && (sDelayedWarpOp & WARP_OP_TRIGGERS_LEVEL_SELECT)) { - func_8024975C(-9); + warp_special(-9); } else if (gCurrDemoInput != NULL) { if (sDelayedWarpOp == WARP_OP_DEMO_END) { - func_8024975C(-8); + warp_special(-8); } else { - func_8024975C(-2); + warp_special(-2); } } else { switch (sDelayedWarpOp) { case WARP_OP_GAME_OVER: save_file_reload(); - func_8024975C(-3); + warp_special(-3); break; case WARP_OP_CREDITS_END: - func_8024975C(-1); + warp_special(-1); sound_banks_enable(2, 0x03F0); break; case WARP_OP_DEMO_NEXT: - func_8024975C(-2); + warp_special(-2); break; case WARP_OP_CREDITS_START: @@ -965,7 +965,7 @@ s32 play_mode_normal(void) { } } - func_8024A02C(); + warp_area(); check_instant_warp(); if (sTimerRunning && gHudDisplay.timer < 17999) { @@ -989,8 +989,8 @@ s32 play_mode_normal(void) { set_play_mode(PLAY_MODE_CHANGE_LEVEL); } else if (sTransitionTimer != 0) { set_play_mode(PLAY_MODE_CHANGE_AREA); - } else if (pressed_paused()) { - func_80248C28(1); + } else if (pressed_pause()) { + lower_background_noise(1); gCameraMovementFlags |= CAM_MOVE_PAUSE_SCREEN; set_play_mode(PLAY_MODE_PAUSED); } @@ -1003,17 +1003,17 @@ s32 play_mode_paused(void) { if (gPauseScreenMode == 0) { set_menu_mode(RENDER_PAUSE_SCREEN); } else if (gPauseScreenMode == 1) { - func_80248CB8(1); + raise_background_noise(1); gCameraMovementFlags &= ~CAM_MOVE_PAUSE_SCREEN; set_play_mode(PLAY_MODE_NORMAL); } else { // Exit level if (gDebugLevelSelect) { - func_80249788(-9, 1); + fade_into_special_warp(-9, 1); } else { initiate_warp(LEVEL_CASTLE, 1, 0x1F, 0); - func_80249788(0, 0); + fade_into_special_warp(0, 0); gSavedCourseNum = 0; } @@ -1033,7 +1033,7 @@ s32 play_mode_frame_advance(void) { play_mode_normal(); } else if (gPlayer1Controller->buttonPressed & START_BUTTON) { gCameraMovementFlags &= ~CAM_MOVE_PAUSE_SCREEN; - func_80248CB8(1); + raise_background_noise(1); set_play_mode(PLAY_MODE_NORMAL); } else { gCameraMovementFlags |= CAM_MOVE_PAUSE_SCREEN; @@ -1141,8 +1141,8 @@ s32 update_level(void) { } if (changeLevel) { - func_80248C10(); - func_80248D90(); + reset_volume(); + enable_background_sound(); } return changeLevel; @@ -1167,9 +1167,9 @@ s32 init_level(void) { if (sWarpDest.type != WARP_TYPE_NOT_WARPING) { if (sWarpDest.nodeId >= WARP_NODE_CREDITS_MIN) { - func_8024A0E0(); + warp_credits(); } else { - func_8024A094(); + warp_level(); } } else { if (gPlayerSpawnInfos[0].areaIndex >= 0) { diff --git a/src/game/level_update.h b/src/game/level_update.h index 50834635..098c870a 100644 --- a/src/game/level_update.h +++ b/src/game/level_update.h @@ -116,8 +116,8 @@ enum HUDDisplayFlag { u16 level_control_timer(s32 timerOp); -void func_80249788(u32 arg, u32 color); -void func_8024980C(u32 arg); +void fade_into_special_warp(u32 arg, u32 color); +void load_level_init_text(u32 arg); s16 level_trigger_warp(struct MarioState *m, s32 warpOp); void level_set_transition(s16 length, void (*updateFunction)(s16 *)); diff --git a/src/game/macro_special_objects.c b/src/game/macro_special_objects.c index fca73cf4..6b1b6aac 100644 --- a/src/game/macro_special_objects.c +++ b/src/game/macro_special_objects.c @@ -79,7 +79,7 @@ void spawn_macro_abs_special(u32 model, const BehaviorScript *behavior, s16 x, s newObj->oMacroUnk110 = (f32) unkC; } -static void Unknown802E142C(const BehaviorScript *behavior, s16 a1[]) { +static void spawn_macro_coin_unknown(const BehaviorScript *behavior, s16 a1[]) { struct Object *sp3C; s16 model; diff --git a/src/game/main.c b/src/game/main.c index dd3f8f67..4a56d124 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -83,7 +83,7 @@ void handle_debug_key_sequences(void) { } } -void Unknown80246170(void) { +void unknown_main_func(void) { // uninitialized OSTime time; u32 b; @@ -98,13 +98,13 @@ void Unknown80246170(void) { #pragma GCC diagnostic pop } -void Dummy802461CC(void) { +void stub_main_1(void) { } -void Dummy802461DC(void) { +void stub_main_2(void) { } -void Dummy802461EC(void) { +void stub_main_3(void) { } void setup_mesg_queues(void) { @@ -121,7 +121,7 @@ void setup_mesg_queues(void) { osSetEventMesg(OS_EVENT_PRENMI, &gIntrMesgQueue, (OSMesg) MESG_NMI_REQUEST); } -void AllocPool(void) { +void alloc_pool(void) { void *start = (void *) SEG_POOL_START; void *end = (void *) SEG_POOL_END; @@ -135,12 +135,19 @@ void create_thread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, osCreateThread(thread, id, entry, arg, sp, pri); } +#ifdef VERSION_SH +extern void func_sh_802F69CC(void); +#endif + void handle_nmi_request(void) { gResetTimer = 1; D_8032C648 = 0; func_80320890(); sound_banks_disable(2, 0x037A); - func_802491FC(90); + fadeout_music(90); +#ifdef VERSION_SH + func_sh_802F69CC(); +#endif } void receive_new_tasks(void) { @@ -204,14 +211,24 @@ void pretend_audio_sptask_done(void) { osSendMesg(&gIntrMesgQueue, (OSMesg) MESG_SP_COMPLETE, OS_MESG_NOBLOCK); } +#ifdef VERSION_SH +extern void func_sh_8024CC7C(void); +#endif + void handle_vblank(void) { UNUSED s32 pad; // needed to pad the stack - Dummy802461EC(); + stub_main_3(); sNumVblanks++; +#ifdef VERSION_SH + if (gResetTimer > 0 && gResetTimer < 100) { + gResetTimer++; + } +#else if (gResetTimer > 0) { gResetTimer++; } +#endif receive_new_tasks(); @@ -238,6 +255,9 @@ void handle_vblank(void) { start_sptask(M_GFXTASK); } } +#ifdef VERSION_SH + func_sh_8024CC7C(); +#endif // Notify the game loop about the vblank. if (gVblankHandler1 != NULL) { @@ -308,7 +328,7 @@ void handle_dp_complete(void) { void thread3_main(UNUSED void *arg) { setup_mesg_queues(); - AllocPool(); + alloc_pool(); load_engine_code_segment(); create_thread(&gSoundThread, 4, thread4_sound, NULL, gThread4Stack + 0x2000, 20); @@ -338,7 +358,7 @@ void thread3_main(UNUSED void *arg) { handle_nmi_request(); break; } - Dummy802461DC(); + stub_main_2(); } } @@ -356,7 +376,7 @@ void set_vblank_handler(s32 index, struct VblankHandler *handler, OSMesgQueue *q } } -void SendMessage(OSMesg *msg) { +void send_sp_task_message(OSMesg *msg) { osWritebackDCacheAll(); osSendMesg(&gSPTaskMesgQueue, msg, OS_MESG_NOBLOCK); } @@ -397,12 +417,12 @@ void turn_off_audio(void) { * Initialize hardware, start main thread, then idle. */ void thread1_idle(UNUSED void *arg) { -#ifdef VERSION_US +#if defined(VERSION_US) || defined(VERSION_SH) s32 sp24 = osTvType; #endif osCreateViManager(OS_PRIORITY_VIMGR); -#ifdef VERSION_US +#if defined(VERSION_US) || defined(VERSION_SH) if (sp24 == TV_TYPE_NTSC) { osViSetMode(&osViModeTable[OS_VI_NTSC_LAN1]); } else { @@ -429,11 +449,11 @@ void thread1_idle(UNUSED void *arg) { } } -void Main(void) { +void main_func(void) { UNUSED u8 pad[64]; // needed to pad the stack osInitialize(); - Dummy802461CC(); + stub_main_1(); create_thread(&gIdleThread, 1, thread1_idle, NULL, gIdleThreadStack + 0x800, 100); osStartThread(&gIdleThread); } diff --git a/src/game/main.h b/src/game/main.h index 6706238b..6a1bd499 100644 --- a/src/game/main.h +++ b/src/game/main.h @@ -38,6 +38,6 @@ extern s8 gShowDebugText; extern void set_vblank_handler(s32 a, struct VblankHandler *b, OSMesgQueue *queue, OSMesg *msg); extern void dispatch_audio_sptask(struct SPTask *spTask); extern void send_display_list(struct SPTask *a); -extern void Main(void); +extern void main(void); #endif diff --git a/src/game/mario.c b/src/game/mario.c index 3e18342f..9bc36cf5 100644 --- a/src/game/mario.c +++ b/src/game/mario.c @@ -64,7 +64,7 @@ s16 set_mario_animation(struct MarioState *m, s32 targetAnimID) { struct Object *o = m->marioObj; struct Animation *targetAnim = m->animation->targetAnim; - if (func_80278AD4(m->animation, targetAnimID)) { + if (load_patchable_table(m->animation, targetAnimID)) { targetAnim->values = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->values); targetAnim->index = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->index); } @@ -97,7 +97,7 @@ s16 set_mario_anim_with_accel(struct MarioState *m, s32 targetAnimID, s32 accel) struct Object *o = m->marioObj; struct Animation *targetAnim = m->animation->targetAnim; - if (func_80278AD4(m->animation, targetAnimID)) { + if (load_patchable_table(m->animation, targetAnimID)) { targetAnim->values = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->values); targetAnim->index = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->index); } @@ -278,9 +278,9 @@ void adjust_sound_for_speed(struct MarioState *m) { void play_sound_and_spawn_particles(struct MarioState *m, u32 soundBits, u32 waveParticleType) { if (m->terrainSoundAddend == (SOUND_TERRAIN_WATER << 16)) { if (waveParticleType != 0) { - m->particleFlags |= PARTICLE_12; + m->particleFlags |= PARTICLE_SHALLOW_WATER_SPLASH; } else { - m->particleFlags |= PARTICLE_8; + m->particleFlags |= PARTICLE_SHALLOW_WATER_WAVE; } } else { if (m->terrainSoundAddend == (SOUND_TERRAIN_SAND << 16)) { @@ -722,12 +722,12 @@ void update_mario_sound_and_camera(struct MarioState *m) { s32 camPreset = m->area->camera->mode; if (action == ACT_FIRST_PERSON) { - func_80248CB8(2); + raise_background_noise(2); gCameraMovementFlags &= ~CAM_MOVE_C_UP_MODE; // Go back to the last camera mode set_camera_mode(m->area->camera, -1, 1); } else if (action == ACT_SLEEPING) { - func_80248CB8(2); + raise_background_noise(2); } if (!(action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER))) { @@ -1406,7 +1406,7 @@ void update_mario_inputs(struct MarioState *m) { // This function is located near other unused trampoline functions, // perhaps logically grouped here with the timers. - nop_80254E3C(m); + stub_mario_step_1(m); if (m->wallKickTimer > 0) { m->wallKickTimer--; @@ -1738,14 +1738,14 @@ s32 execute_mario_action(UNUSED struct Object *o) { // Both of the wind handling portions play wind audio only in // non-Japanese releases. if (gMarioState->floor->type == SURFACE_HORIZONTAL_WIND) { - func_802ADC20(0, (gMarioState->floor->force << 8)); + spawn_wind_particles(0, (gMarioState->floor->force << 8)); #ifndef VERSION_JP play_sound(SOUND_ENV_WIND2, gMarioState->marioObj->header.gfx.cameraToObject); #endif } if (gMarioState->floor->type == SURFACE_VERTICAL_WIND) { - func_802ADC20(1, 0); + spawn_wind_particles(1, 0); #ifndef VERSION_JP play_sound(SOUND_ENV_WIND2, gMarioState->marioObj->header.gfx.cameraToObject); #endif diff --git a/src/game/mario_actions_airborne.c b/src/game/mario_actions_airborne.c index 8b8da4ed..10da4712 100644 --- a/src/game/mario_actions_airborne.c +++ b/src/game/mario_actions_airborne.c @@ -32,7 +32,7 @@ void play_far_fall_sound(struct MarioState *m) { } #ifndef VERSION_JP -void func_u_8026A090(struct MarioState *m) { +void play_knockback_sound(struct MarioState *m) { if (m->actionArg == 0 && (m->forwardVel <= -28.0f || m->forwardVel >= 28.0f)) { play_sound_if_no_flag(m, SOUND_MARIO_DOH, MARIO_MARIO_SOUND_PLAYED); } else { @@ -1089,7 +1089,7 @@ u32 common_air_knockback_step(struct MarioState *m, u32 landAction, u32 hardFall return stepResult; } -s32 func_8026CDFC(struct MarioState *m) { +s32 check_wall_kick(struct MarioState *m) { if ((m->input & INPUT_A_PRESSED) && m->wallKickTimer != 0 && m->prevAction == ACT_AIR_HIT_WALL) { m->faceAngle[1] += 0x8000; return set_mario_action(m, ACT_WALL_KICK_AIR, 0); @@ -1099,12 +1099,12 @@ s32 func_8026CDFC(struct MarioState *m) { } s32 act_backward_air_kb(struct MarioState *m) { - if (func_8026CDFC(m)) { + if (check_wall_kick(m)) { return 1; } #ifndef VERSION_JP - func_u_8026A090(m); + play_knockback_sound(m); #else play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED); #endif @@ -1113,12 +1113,12 @@ s32 act_backward_air_kb(struct MarioState *m) { } s32 act_forward_air_kb(struct MarioState *m) { - if (func_8026CDFC(m)) { + if (check_wall_kick(m)) { return 1; } #ifndef VERSION_JP - func_u_8026A090(m); + play_knockback_sound(m); #else play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED); #endif @@ -1128,7 +1128,7 @@ s32 act_forward_air_kb(struct MarioState *m) { s32 act_hard_backward_air_kb(struct MarioState *m) { #ifndef VERSION_JP - func_u_8026A090(m); + play_knockback_sound(m); #else play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED); #endif @@ -1139,7 +1139,7 @@ s32 act_hard_backward_air_kb(struct MarioState *m) { s32 act_hard_forward_air_kb(struct MarioState *m) { #ifndef VERSION_JP - func_u_8026A090(m); + play_knockback_sound(m); #else play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED); #endif @@ -1190,12 +1190,12 @@ s32 act_thrown_forward(struct MarioState *m) { } s32 act_soft_bonk(struct MarioState *m) { - if (func_8026CDFC(m)) { + if (check_wall_kick(m)) { return 1; } #ifndef VERSION_JP - func_u_8026A090(m); + play_knockback_sound(m); #else play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED); #endif @@ -1683,7 +1683,7 @@ s32 act_flying(struct MarioState *m) { if (is_anim_at_end(m)) { if (m->actionArg == 2) { - func_8024980C(0); + load_level_init_text(0); m->actionArg = 1; } diff --git a/src/game/mario_actions_automatic.c b/src/game/mario_actions_automatic.c index ea4fd542..d9cc09fc 100644 --- a/src/game/mario_actions_automatic.c +++ b/src/game/mario_actions_automatic.c @@ -495,14 +495,14 @@ s32 let_go_of_ledge(struct MarioState *m) { return set_mario_action(m, ACT_SOFT_BONK, 0); } -void func_8025F0DC(struct MarioState *m) { +void climb_up_ledge(struct MarioState *m) { set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_LEFT); m->pos[0] += 14.0f * sins(m->faceAngle[1]); m->pos[2] += 14.0f * coss(m->faceAngle[1]); vec3f_copy(m->marioObj->header.gfx.pos, m->pos); } -void func_8025F188(struct MarioState *m) { +void update_ledge_climb_camera(struct MarioState *m) { f32 sp4; if (m->actionTimer < 14) { @@ -524,7 +524,7 @@ void update_ledge_climb(struct MarioState *m, s32 animation, u32 endAction) { if (is_anim_at_end(m)) { set_mario_action(m, endAction, 0); if (endAction == ACT_IDLE) { - func_8025F0DC(m); + climb_up_ledge(m); } } } @@ -595,7 +595,7 @@ s32 act_ledge_climb_slow(struct MarioState *m) { if (m->actionTimer >= 28 && (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE))) { - func_8025F0DC(m); + climb_up_ledge(m); return check_common_action_exits(m); } @@ -605,7 +605,7 @@ s32 act_ledge_climb_slow(struct MarioState *m) { update_ledge_climb(m, MARIO_ANIM_SLOW_LEDGE_GRAB, ACT_IDLE); - func_8025F188(m); + update_ledge_climb_camera(m); if (m->marioObj->header.gfx.unk38.animFrame == 17) { m->action = ACT_LEDGE_CLIMB_SLOW_2; } @@ -638,7 +638,7 @@ s32 act_ledge_climb_fast(struct MarioState *m) { if (m->marioObj->header.gfx.unk38.animFrame == 8) { play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING); } - func_8025F188(m); + update_ledge_climb_camera(m); return FALSE; } diff --git a/src/game/mario_actions_cutscene.c b/src/game/mario_actions_cutscene.c index 216d96b1..5402d333 100644 --- a/src/game/mario_actions_cutscene.c +++ b/src/game/mario_actions_cutscene.c @@ -180,9 +180,9 @@ void print_displaying_credits_entry(void) { } } -void BehEndPeachLoop(void) { - set_obj_animation_and_sound_state(sEndPeachAnimation); - if (func_8029F788()) { +void bhv_end_peach_loop(void) { + cur_obj_init_animation_with_sound(sEndPeachAnimation); + if (cur_obj_check_if_near_animation_end()) { // anims: 0-3, 4, 5, 6-8, 9, 10, 11 if (sEndPeachAnimation < 3 || sEndPeachAnimation == 6 || sEndPeachAnimation == 7) { sEndPeachAnimation++; @@ -190,11 +190,11 @@ void BehEndPeachLoop(void) { } } -void BehEndToadLoop(void) { +void bhv_end_toad_loop(void) { s32 toadAnimIndex = (gCurrentObject->oPosX >= 0.0f); - set_obj_animation_and_sound_state(sEndToadAnims[toadAnimIndex]); - if (func_8029F788()) { + cur_obj_init_animation_with_sound(sEndToadAnims[toadAnimIndex]); + if (cur_obj_check_if_near_animation_end()) { // 0-1, 2-3, 4, 5, 6, 7 if (sEndToadAnims[toadAnimIndex] == 0 || sEndToadAnims[toadAnimIndex] == 2) { sEndToadAnims[toadAnimIndex]++; @@ -224,7 +224,7 @@ s32 geo_switch_peach_eyes(s32 run, struct GraphNode *node, UNUSED s32 a2) { } // unused -static void Unknown80256FF8(u16 *a0) { +static void stub_is_textbox_active(u16 *a0) { if (get_dialog_id() == -1) { *a0 = 0; } @@ -264,7 +264,7 @@ void handle_save_menu(struct MarioState *m) { save_file_do_save(gCurrSaveFileNum - 1); if (gSaveOptSelectIndex == SAVE_OPT_SAVE_AND_QUIT) { - func_80249788(-2, 0); // reset game + fade_into_special_warp(-2, 0); // reset game } } @@ -398,7 +398,7 @@ s32 act_reading_npc_dialog(struct MarioState *m) { if (m->actionState < 8) { // turn to NPC - angleToNPC = mario_angle_to_object(m, m->usedObj); + angleToNPC = mario_obj_angle_to_object(m, m->usedObj); m->faceAngle[1] = angleToNPC - approach_s32((angleToNPC - m->faceAngle[1]) << 16 >> 16, 0, 2048, 2048); // turn head to npc @@ -605,7 +605,7 @@ void general_star_dance_handler(struct MarioState *m, s32 isInWater) { switch (++m->actionTimer) { case 1: spawn_object(m->marioObj, MODEL_STAR, bhvCelebrationStar); - func_80248D48(); + disable_background_sound(); if (m->actionArg & 1) { play_course_clear(); } else { @@ -638,7 +638,7 @@ void general_star_dance_handler(struct MarioState *m, s32 isInWater) { m->actionState = 2; } else if (m->actionState == 2 && is_anim_at_end(m)) { disable_time_stop(); - func_80248D90(); + enable_background_sound(); dialogID = get_star_collection_dialog(m); if (dialogID != 0) { // look up for dialog @@ -677,7 +677,7 @@ s32 act_star_dance_water(struct MarioState *m) { s32 act_fall_after_star_grab(struct MarioState *m) { if (m->pos[1] < m->waterLevel - 130) { play_sound(SOUND_ACTION_UNKNOWN430, m->marioObj->header.gfx.cameraToObject); - m->particleFlags |= PARTICLE_6; + m->particleFlags |= PARTICLE_WATER_SPLASH; return set_mario_action(m, ACT_STAR_DANCE_WATER, m->actionArg); } if (perform_air_step(m, 1) == AIR_STEP_LANDED) { @@ -1014,7 +1014,7 @@ s32 act_emerge_from_pipe(struct MarioState *m) { s32 act_spawn_spin_airborne(struct MarioState *m) { // entered water, exit action if (m->pos[1] < m->waterLevel - 100) { - func_8024980C(0); + load_level_init_text(0); return set_water_plunge_action(m); } @@ -1047,7 +1047,7 @@ s32 act_spawn_spin_landing(struct MarioState *m) { stop_and_set_height_to_floor(m); set_mario_animation(m, MARIO_ANIM_GENERAL_LAND); if (is_anim_at_end(m)) { - func_8024980C(0); + load_level_init_text(0); set_mario_action(m, ACT_IDLE, 0); } return FALSE; @@ -1278,7 +1278,7 @@ s32 act_spawn_no_spin_landing(struct MarioState *m) { set_mario_animation(m, MARIO_ANIM_GENERAL_LAND); stop_and_set_height_to_floor(m); if (is_anim_at_end(m)) { - func_8024980C(0); + load_level_init_text(0); set_mario_action(m, ACT_IDLE, 0); } return FALSE; @@ -1739,7 +1739,7 @@ static void intro_cutscene_lower_pipe(struct MarioState *m) { sIntroWarpPipeObj->oPosY -= 5.0f; if (sIntroWarpPipeObj->oPosY <= 50.0f) { - mark_object_for_deletion(sIntroWarpPipeObj); + obj_mark_for_deletion(sIntroWarpPipeObj); advance_cutscene_step(m); } @@ -1973,7 +1973,7 @@ static void generate_yellow_sparkles(s16 x, s16 y, s16 z, f32 radius) { // not sure what this does, returns the height of the floor, but idk about the // other stuff (animation related?) -static f32 func_8025BC14(struct Object *o) { +static f32 end_obj_set_visual_pos(struct Object *o) { struct Surface *surf; Vec3s sp24; f32 sp20; @@ -2018,7 +2018,7 @@ static void end_peach_cutscene_mario_landing(struct MarioState *m) { sEndJumboStarObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_STAR, bhvStaticObject, 0, 2528, -1800, 0, 0, 0); - scale_object(sEndJumboStarObj, 3.0); + obj_scale(sEndJumboStarObj, 3.0); advance_cutscene_step(m); } } @@ -2063,7 +2063,7 @@ static void end_peach_cutscene_spawn_peach(struct MarioState *m) { play_transition(WARP_TRANSITION_FADE_FROM_COLOR, 192, 255, 255, 255); } if (m->actionTimer == 40) { - mark_object_for_deletion(sEndJumboStarObj); + obj_mark_for_deletion(sEndJumboStarObj); sEndPeachObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_PEACH, bhvEndPeach, 0, 2428, -1300, 0, 0, 0); @@ -2152,7 +2152,7 @@ static void end_peach_cutscene_run_to_peach(struct MarioState *m) { m->pos[1] = find_floor(m->pos[0], m->pos[1], m->pos[2], &surf); set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, 0x00080000); - func_80263AD4(m, 9, 45); + play_step_sound(m, 9, 45); vec3f_copy(m->marioObj->header.gfx.pos, m->pos); m->particleFlags |= PARTICLE_DUST; @@ -2366,9 +2366,9 @@ static void end_peach_cutscene_star_dance(struct MarioState *m) { static void end_peach_cutscene_dialog_3(struct MarioState *m) { set_mario_animation(m, MARIO_ANIM_FIRST_PERSON); - sEndPeachObj->oPosY = func_8025BC14(sEndPeachObj); - sEndRightToadObj->oPosY = func_8025BC14(sEndRightToadObj); - sEndLeftToadObj->oPosY = func_8025BC14(sEndLeftToadObj); + sEndPeachObj->oPosY = end_obj_set_visual_pos(sEndPeachObj); + sEndRightToadObj->oPosY = end_obj_set_visual_pos(sEndRightToadObj); + sEndLeftToadObj->oPosY = end_obj_set_visual_pos(sEndLeftToadObj); switch (m->actionTimer) { case 1: @@ -2404,7 +2404,7 @@ static void end_peach_cutscene_run_to_castle(struct MarioState *m) { set_mario_animation(m, m->actionState == 0 ? MARIO_ANIM_CREDITS_START_WALK_LOOK_UP : MARIO_ANIM_CREDITS_LOOK_BACK_THEN_RUN); - m->marioObj->header.gfx.pos[1] = func_8025BC14(m->marioObj); + m->marioObj->header.gfx.pos[1] = end_obj_set_visual_pos(m->marioObj); if (m->actionState == 0 && is_anim_past_end(m)) { m->actionState = 1; @@ -2494,7 +2494,7 @@ static s32 act_end_peach_cutscene(struct MarioState *m) { sEndCutsceneVp.vp.vscale[1] = 360; sEndCutsceneVp.vp.vtrans[0] = 640; sEndCutsceneVp.vp.vtrans[1] = 480; - func_8027A220(NULL, &sEndCutsceneVp, 0, 0, 0); + override_viewport_and_clip(NULL, &sEndCutsceneVp, 0, 0, 0); return FALSE; } @@ -2546,7 +2546,7 @@ static s32 act_credits_cutscene(struct MarioState *m) { sEndCutsceneVp.vp.vtrans[1] = (gCurrCreditsEntry->unk02 & 0x20 ? height : -height) * 66 / 100 + 480; - func_8027A220(&sEndCutsceneVp, 0, 0, 0, 0); + override_viewport_and_clip(&sEndCutsceneVp, 0, 0, 0, 0); } if (m->actionTimer == TIMER_CREDITS_PROGRESS) { @@ -2678,7 +2678,7 @@ s32 mario_execute_cutscene_action(struct MarioState *m) { if (!cancel) { if (m->input & INPUT_IN_WATER) { - m->particleFlags |= PARTICLE_7; + m->particleFlags |= PARTICLE_IDLE_WATER_WAVE; } } diff --git a/src/game/mario_actions_cutscene.h b/src/game/mario_actions_cutscene.h index b623d2b1..27c0f215 100644 --- a/src/game/mario_actions_cutscene.h +++ b/src/game/mario_actions_cutscene.h @@ -4,8 +4,8 @@ #include "types.h" extern void print_displaying_credits_entry(void); -extern void BehEndPeachLoop(void); -extern void BehEndToadLoop(void); +extern void bhv_end_peach_loop(void); +extern void bhv_end_toad_loop(void); extern s32 geo_switch_peach_eyes(s32 run, struct GraphNode *node, UNUSED s32 a2); extern s32 mario_ready_to_speak(void); extern s32 set_mario_npc_dialog(s32); diff --git a/src/game/mario_actions_moving.c b/src/game/mario_actions_moving.c index 48f4b235..b173eb8b 100644 --- a/src/game/mario_actions_moving.c +++ b/src/game/mario_actions_moving.c @@ -60,13 +60,13 @@ struct LandingAction sBackflipLandAction = { Mat4 D_80339F50[2]; -s16 func_80263A50(struct MarioState *m) { +s16 tilt_body_running(struct MarioState *m) { s16 pitch = find_floor_slope(m, 0); pitch = pitch * m->forwardVel / 40.0f; return -pitch; } -void func_80263AD4(struct MarioState *m, s16 frame1, s16 frame2) { +void play_step_sound(struct MarioState *m, s16 frame1, s16 frame2) { if (is_anim_past_frame(m, frame1) || is_anim_past_frame(m, frame2)) { if (m->flags & MARIO_METAL_CAP) { if (m->marioObj->header.gfx.unk38.animID == MARIO_ANIM_TIPTOE) { @@ -84,7 +84,7 @@ void func_80263AD4(struct MarioState *m, s16 frame1, s16 frame2) { } } -void func_80263C14(struct MarioState *m) { +void align_with_floor(struct MarioState *m) { m->pos[1] = m->floorHeight; mtxf_align_terrain_triangle(D_80339F50[m->unk00], m->pos, m->faceAngle[1], 40.0f); m->marioObj->header.gfx.throwMatrix = &D_80339F50[m->unk00]; @@ -514,7 +514,7 @@ s32 begin_braking_action(struct MarioState *m) { return set_mario_action(m, ACT_DECELERATING, 0); } -void func_802652F0(struct MarioState *m) { +void anim_and_audio_for_walk(struct MarioState *m) { s32 val14; struct Object *marioObj = m->marioObj; s32 val0C = TRUE; @@ -530,7 +530,7 @@ void func_802652F0(struct MarioState *m) { if (m->quicksandDepth > 50.0f) { val14 = (s32)(val04 / 4.0f * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_MOVE_IN_QUICKSAND, val14); - func_80263AD4(m, 19, 93); + play_step_sound(m, 19, 93); m->actionTimer = 0; } else { while (val0C) { @@ -544,7 +544,7 @@ void func_802652F0(struct MarioState *m) { val14 = 0x1000; } set_mario_anim_with_accel(m, MARIO_ANIM_START_TIPTOE, val14); - func_80263AD4(m, 7, 22); + play_step_sound(m, 7, 22); if (is_anim_past_frame(m, 23)) { m->actionTimer = 2; } @@ -562,7 +562,7 @@ void func_802652F0(struct MarioState *m) { val14 = 0x1000; } set_mario_anim_with_accel(m, MARIO_ANIM_TIPTOE, val14); - func_80263AD4(m, 14, 72); + play_step_sound(m, 14, 72); val0C = FALSE; } @@ -577,7 +577,7 @@ void func_802652F0(struct MarioState *m) { //! (Speed Crash) If Mario's speed is more than 2^17. val14 = (s32)(val04 / 4.0f * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, val14); - func_80263AD4(m, 10, 49); + play_step_sound(m, 10, 49); val0C = FALSE; } @@ -590,8 +590,8 @@ void func_802652F0(struct MarioState *m) { //! (Speed Crash) If Mario's speed is more than 2^17. val14 = (s32)(val04 / 4.0f * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, val14); - func_80263AD4(m, 9, 45); - targetPitch = func_80263A50(m); + play_step_sound(m, 9, 45); + targetPitch = tilt_body_running(m); val0C = FALSE; } @@ -605,7 +605,7 @@ void func_802652F0(struct MarioState *m) { marioObj->header.gfx.angle[0] = marioObj->oMarioWalkingPitch; } -void func_8026570C(struct MarioState *m) { +void anim_and_audio_for_hold_walk(struct MarioState *m) { s32 val0C; s32 val08 = TRUE; f32 val04; @@ -625,7 +625,7 @@ void func_8026570C(struct MarioState *m) { //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^15. val0C = (s32)(val04 * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_SLOW_WALK_WITH_LIGHT_OBJ, val0C); - func_80263AD4(m, 12, 62); + play_step_sound(m, 12, 62); val08 = FALSE; } @@ -640,7 +640,7 @@ void func_8026570C(struct MarioState *m) { //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^15. val0C = (s32)(val04 * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_WALK_WITH_LIGHT_OBJ, val0C); - func_80263AD4(m, 12, 62); + play_step_sound(m, 12, 62); val08 = FALSE; } @@ -653,7 +653,7 @@ void func_8026570C(struct MarioState *m) { //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^16. val0C = (s32)(val04 / 2.0f * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_RUN_WITH_LIGHT_OBJ, val0C); - func_80263AD4(m, 10, 49); + play_step_sound(m, 10, 49); val08 = FALSE; } @@ -662,13 +662,13 @@ void func_8026570C(struct MarioState *m) { } } -void func_80265980(struct MarioState *m) { +void anim_and_audio_for_heavy_walk(struct MarioState *m) { s32 val04 = (s32)(m->intendedMag * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_WALK_WITH_HEAVY_OBJ, val04); - func_80263AD4(m, 26, 79); + play_step_sound(m, 26, 79); } -void func_802659E8(struct MarioState *m, Vec3f startPos) { +void push_or_sidle_wall(struct MarioState *m, Vec3f startPos) { s16 wallAngle; s16 dWallAngle; f32 dx = m->pos[0] - startPos[0]; @@ -689,7 +689,7 @@ void func_802659E8(struct MarioState *m, Vec3f startPos) { if (m->wall == NULL || dWallAngle <= -0x71C8 || dWallAngle >= 0x71C8) { m->flags |= MARIO_UNKNOWN_31; set_mario_animation(m, MARIO_ANIM_PUSHING); - func_80263AD4(m, 6, 18); + play_step_sound(m, 6, 18); } else { if (dWallAngle < 0) { set_mario_anim_with_accel(m, MARIO_ANIM_SIDESTEP_RIGHT, val04); @@ -709,7 +709,7 @@ void func_802659E8(struct MarioState *m, Vec3f startPos) { } } -void func_80265C28(struct MarioState *m, s16 startYaw) { +void tilt_body_walking(struct MarioState *m, s16 startYaw) { struct MarioBodyState *val0C = m->marioBodyState; UNUSED struct Object *marioObj = m->marioObj; s16 animID = m->marioObj->header.gfx.unk38.animID; @@ -747,7 +747,7 @@ void func_80265C28(struct MarioState *m, s16 startYaw) { } } -void func_80265DBC(struct MarioState *m, s16 startYaw) { +void tilt_body_ground_shell(struct MarioState *m, s16 startYaw) { struct MarioBodyState *val0C = m->marioBodyState; struct Object *marioObj = m->marioObj; s16 dYaw = m->faceAngle[1] - startYaw; @@ -825,20 +825,20 @@ s32 act_walking(struct MarioState *m) { break; case GROUND_STEP_NONE: - func_802652F0(m); + anim_and_audio_for_walk(m); if (m->intendedMag - m->forwardVel > 16.0f) { m->particleFlags |= PARTICLE_DUST; } break; case GROUND_STEP_HIT_WALL: - func_802659E8(m, startPos); + push_or_sidle_wall(m, startPos); m->actionTimer = 0; break; } check_ledge_climb_down(m); - func_80265C28(m, startYaw); + tilt_body_walking(m, startYaw); return FALSE; } @@ -922,7 +922,7 @@ s32 act_hold_walking(struct MarioState *m) { break; } - func_8026570C(m); + anim_and_audio_for_hold_walk(m); if (0.4f * m->intendedMag - m->forwardVel > 10.0f) { m->particleFlags |= PARTICLE_DUST; @@ -960,7 +960,7 @@ s32 act_hold_heavy_walking(struct MarioState *m) { break; } - func_80265980(m); + anim_and_audio_for_heavy_walk(m); return FALSE; } @@ -1130,7 +1130,7 @@ s32 act_decelerating(struct MarioState *m) { } set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, val0C); - func_80263AD4(m, 10, 49); + play_step_sound(m, 10, 49); } return FALSE; @@ -1196,7 +1196,7 @@ s32 act_hold_decelerating(struct MarioState *m) { } set_mario_anim_with_accel(m, MARIO_ANIM_WALK_WITH_LIGHT_OBJ, val0C); - func_80263AD4(m, 12, 62); + play_step_sound(m, 12, 62); } return FALSE; @@ -1234,7 +1234,7 @@ s32 act_riding_shell_ground(struct MarioState *m) { break; } - func_80265DBC(m, startYaw); + tilt_body_ground_shell(m, startYaw); if (m->floor->type == SURFACE_BURNING) { play_sound(SOUND_MOVING_RIDING_SHELL_LAVA, m->marioObj->header.gfx.cameraToObject); } else { @@ -1289,13 +1289,13 @@ s32 act_crawling(struct MarioState *m) { //! Possibly unintended missing break case GROUND_STEP_NONE: - func_80263C14(m); + align_with_floor(m); break; } val04 = (s32)(m->intendedMag * 2.0f * 0x10000); set_mario_anim_with_accel(m, MARIO_ANIM_CRAWLING, val04); - func_80263AD4(m, 26, 79); + play_step_sound(m, 26, 79); return FALSE; } @@ -1335,7 +1335,7 @@ s32 act_burning_ground(struct MarioState *m) { } set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, (s32)(m->forwardVel / 2.0f * 0x10000)); - func_80263AD4(m, 9, 45); + play_step_sound(m, 9, 45); m->particleFlags |= PARTICLE_11; play_sound(SOUND_MOVING_LAVA_BURN, m->marioObj->header.gfx.cameraToObject); @@ -1349,7 +1349,7 @@ s32 act_burning_ground(struct MarioState *m) { return FALSE; } -void func_80267814(struct MarioState *m) { +void tilt_body_butt_slide(struct MarioState *m) { s16 intendedDYaw = m->intendedYaw - m->faceAngle[1]; m->marioBodyState->torsoAngle[0] = (s32)(5461.3335f * m->intendedMag / 32.0f * coss(intendedDYaw)); m->marioBodyState->torsoAngle[2] = (s32)(-(5461.3335f * m->intendedMag / 32.0f * sins(intendedDYaw))); @@ -1373,7 +1373,7 @@ void common_slide_action(struct MarioState *m, u32 endAction, u32 airAction, s32 case GROUND_STEP_NONE: set_mario_animation(m, animation); - func_80263C14(m); + align_with_floor(m); m->particleFlags |= PARTICLE_DUST; break; @@ -1401,7 +1401,7 @@ void common_slide_action(struct MarioState *m, u32 endAction, u32 airAction, s32 m->vel[2] = m->slideVelZ = slideSpeed * coss(m->slideYaw); } - func_80263C14(m); + align_with_floor(m); break; } } @@ -1427,7 +1427,7 @@ s32 common_slide_action_with_jump(struct MarioState *m, u32 stopAction, u32 jump s32 act_butt_slide(struct MarioState *m) { s32 cancel = common_slide_action_with_jump(m, ACT_BUTT_SLIDE_STOP, ACT_JUMP, ACT_BUTT_SLIDE_AIR, MARIO_ANIM_SLIDE); - func_80267814(m); + tilt_body_butt_slide(m); return cancel; } @@ -1440,7 +1440,7 @@ s32 act_hold_butt_slide(struct MarioState *m) { cancel = common_slide_action_with_jump(m, ACT_UNKNOWN_03F, ACT_HOLD_JUMP, ACT_HOLD_BUTT_SLIDE_AIR, MARIO_ANIM_SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ); - func_80267814(m); + tilt_body_butt_slide(m); return cancel; } @@ -2004,7 +2004,7 @@ s32 mario_execute_moving_action(struct MarioState *m) { /* clang-format on */ if (!cancel && (m->input & INPUT_IN_WATER)) { - m->particleFlags |= PARTICLE_10; + m->particleFlags |= PARTICLE_WAVE_TRAIL; m->particleFlags &= ~PARTICLE_DUST; } diff --git a/src/game/mario_actions_moving.h b/src/game/mario_actions_moving.h index 48b3b35d..e625af35 100644 --- a/src/game/mario_actions_moving.h +++ b/src/game/mario_actions_moving.h @@ -5,7 +5,7 @@ struct MarioState; -void func_80263AD4(struct MarioState *m, s16 arg1, s16 arg2); +void play_step_sound(struct MarioState *m, s16 arg1, s16 arg2); s32 mario_execute_moving_action(struct MarioState *m); diff --git a/src/game/mario_actions_object.c b/src/game/mario_actions_object.c index a2d4345b..ba3e5765 100644 --- a/src/game/mario_actions_object.c +++ b/src/game/mario_actions_object.c @@ -461,7 +461,7 @@ s32 mario_execute_object_action(struct MarioState *m) { /* clang-format on */ if (!cancel && (m->input & INPUT_IN_WATER)) { - m->particleFlags |= PARTICLE_7; + m->particleFlags |= PARTICLE_IDLE_WATER_WAVE; } return cancel; diff --git a/src/game/mario_actions_stationary.c b/src/game/mario_actions_stationary.c index 4a550dc7..4592b691 100644 --- a/src/game/mario_actions_stationary.c +++ b/src/game/mario_actions_stationary.c @@ -15,7 +15,7 @@ #include "save_file.h" #include "camera.h" -s32 func_802604E0(struct MarioState *m) { +s32 check_common_idle_cancels(struct MarioState *m) { mario_drop_held_object(m); if (m->floor->normal.y < 0.29237169f) { return mario_push_off_steep_floor(m, ACT_FREEFALL, 0); @@ -57,7 +57,7 @@ s32 func_802604E0(struct MarioState *m) { return 0; } -s32 func_802606DC(struct MarioState *m) { +s32 check_common_hold_idle_cancels(struct MarioState *m) { if (m->floor->normal.y < 0.29237169f) { return mario_push_off_steep_floor(m, ACT_HOLD_FREEFALL, 0); } @@ -113,7 +113,7 @@ s32 act_idle(struct MarioState *m) { return set_mario_action(m, ACT_PANTING, 0); } - if (func_802604E0(m)) { + if (check_common_idle_cancels(m)) { return 1; } @@ -171,7 +171,7 @@ s32 act_idle(struct MarioState *m) { return 0; } -void func_80260BC4(struct MarioState *m, u32 actionState, s32 animFrame, u32 sound) { +void play_anim_sound(struct MarioState *m, u32 actionState, s32 animFrame, u32 sound) { if (m->actionState == actionState && m->marioObj->header.gfx.unk38.animFrame == animFrame) { play_sound(sound, m->marioObj->header.gfx.cameraToObject); } @@ -182,7 +182,7 @@ s32 act_start_sleeping(struct MarioState *m) { s32 sp24; #endif - if (func_802604E0(m)) { + if (check_common_idle_cancels(m)) { return 1; } @@ -230,9 +230,9 @@ s32 act_start_sleeping(struct MarioState *m) { break; } - func_80260BC4(m, 1, 41, SOUND_ACTION_PAT_BACK); - func_80260BC4(m, 1, 49, SOUND_ACTION_PAT_BACK); - func_80260BC4(m, 3, 15, m->terrainSoundAddend + SOUND_ACTION_TERRAIN_BODY_HIT_GROUND); + play_anim_sound(m, 1, 41, SOUND_ACTION_PAT_BACK); + play_anim_sound(m, 1, 49, SOUND_ACTION_PAT_BACK); + play_anim_sound(m, 3, 15, m->terrainSoundAddend + SOUND_ACTION_TERRAIN_BODY_HIT_GROUND); if (is_anim_at_end(m)) { m->actionState++; @@ -281,7 +281,7 @@ s32 act_sleeping(struct MarioState *m) { sp24 = set_mario_animation(m, MARIO_ANIM_SLEEP_IDLE); if (sp24 == -1 && !m->actionTimer) { - func_80248C28(2); + lower_background_noise(2); } if (sp24 == 2) { @@ -336,7 +336,7 @@ s32 act_waking_up(struct MarioState *m) { #ifndef VERSION_JP func_803205E8(SOUND_MARIO_SNORING3, m->marioObj->header.gfx.cameraToObject); #endif - func_80248CB8(2); + raise_background_noise(2); } if (m->input & INPUT_UNKNOWN_10) { @@ -420,7 +420,7 @@ s32 act_shivering(struct MarioState *m) { s32 act_coughing(struct MarioState *m) { s32 sp1C; - if (func_802604E0(m)) { + if (check_common_idle_cancels(m)) { return 1; } @@ -454,7 +454,7 @@ s32 act_hold_idle(struct MarioState *m) { return drop_and_set_mario_action(m, ACT_IN_QUICKSAND, 0); } - if (func_802606DC(m)) { + if (check_common_hold_idle_cancels(m)) { return 1; } @@ -516,7 +516,7 @@ s32 act_in_quicksand(struct MarioState *m) { return set_mario_action(m, ACT_IDLE, 0); } - if (func_802604E0(m) != 0) { + if (check_common_idle_cancels(m) != 0) { return 1; } @@ -577,7 +577,7 @@ s32 act_panting(struct MarioState *m) { return set_mario_action(m, ACT_IDLE, 0); } - if (func_802604E0(m)) { + if (check_common_idle_cancels(m)) { return 1; } @@ -604,7 +604,7 @@ s32 act_hold_panting_unused(struct MarioState *m) { return set_mario_action(m, ACT_HOLD_IDLE, 0); } - if (func_802606DC(m) != 0) { + if (check_common_hold_idle_cancels(m) != 0) { return 1; } @@ -614,7 +614,7 @@ s32 act_hold_panting_unused(struct MarioState *m) { return 0; } -void func_80261D70(struct MarioState *m, s32 animID, u32 action) { +void stopping_step(struct MarioState *m, s32 animID, u32 action) { stationary_ground_step(m); set_mario_animation(m, animID); if (is_anim_at_end(m) != 0) { @@ -640,7 +640,7 @@ s32 act_braking_stop(struct MarioState *m) { return check_common_action_exits(m); } - func_80261D70(m, MARIO_ANIM_STOP_SKID, ACT_IDLE); + stopping_step(m, MARIO_ANIM_STOP_SKID, ACT_IDLE); return 0; } @@ -653,7 +653,7 @@ s32 act_butt_slide_stop(struct MarioState *m) { return check_common_action_exits(m); } - func_80261D70(m, MARIO_ANIM_STOP_SLIDE, ACT_IDLE); + stopping_step(m, MARIO_ANIM_STOP_SLIDE, ACT_IDLE); if (m->marioObj->header.gfx.unk38.animFrame == 6) { play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING); } @@ -661,7 +661,7 @@ s32 act_butt_slide_stop(struct MarioState *m) { return 0; } -s32 func_80261F8C(struct MarioState *m) { +s32 act_unknown_03F(struct MarioState *m) { if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) { return drop_and_set_mario_action(m, ACT_IDLE, 0); } @@ -678,7 +678,7 @@ s32 func_80261F8C(struct MarioState *m) { return set_mario_action(m, ACT_THROWING, 0); } - func_80261D70(m, MARIO_ANIM_STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ, ACT_HOLD_IDLE); + stopping_step(m, MARIO_ANIM_STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ, ACT_HOLD_IDLE); return 0; } @@ -691,7 +691,7 @@ s32 act_slide_kick_slide_stop(struct MarioState *m) { return drop_and_set_mario_action(m, ACT_FREEFALL, 0); } - func_80261D70(m, MARIO_ANIM_CROUCH_FROM_SLIDE_KICK, ACT_CROUCHING); + stopping_step(m, MARIO_ANIM_CROUCH_FROM_SLIDE_KICK, ACT_CROUCHING); return 0; } @@ -792,7 +792,7 @@ s32 act_stop_crawling(struct MarioState *m) { return 0; } -s32 func_80262574(struct MarioState *m) { +s32 act_unknown_026(struct MarioState *m) { s16 sp1E; f32 sp18; @@ -826,7 +826,7 @@ s32 func_80262574(struct MarioState *m) { return 0; } -s32 func_802627B8(struct MarioState *m, s32 arg1, u32 action) { +s32 landing_step(struct MarioState *m, s32 arg1, u32 action) { stationary_ground_step(m); set_mario_animation(m, arg1); if (is_anim_at_end(m)) { @@ -835,7 +835,7 @@ s32 func_802627B8(struct MarioState *m, s32 arg1, u32 action) { return 0; } -s32 func_80262828(struct MarioState *m, u32 action) { +s32 check_common_landing_cancels(struct MarioState *m, u32 action) { if (m->input & INPUT_UNKNOWN_10) { return set_mario_action(m, ACT_UNKNOWN_026, 0); } @@ -864,48 +864,48 @@ s32 func_80262828(struct MarioState *m, u32 action) { } s32 act_jump_land_stop(struct MarioState *m) { - if (func_80262828(m, 0)) { + if (check_common_landing_cancels(m, 0)) { return 1; } - func_802627B8(m, MARIO_ANIM_LAND_FROM_SINGLE_JUMP, ACT_IDLE); + landing_step(m, MARIO_ANIM_LAND_FROM_SINGLE_JUMP, ACT_IDLE); return 0; } s32 act_double_jump_land_stop(struct MarioState *m) { - if (func_80262828(m, 0)) { + if (check_common_landing_cancels(m, 0)) { return 1; } - func_802627B8(m, MARIO_ANIM_LAND_FROM_DOUBLE_JUMP, ACT_IDLE); + landing_step(m, MARIO_ANIM_LAND_FROM_DOUBLE_JUMP, ACT_IDLE); return 0; } s32 act_side_flip_land_stop(struct MarioState *m) { - if (func_80262828(m, 0)) { + if (check_common_landing_cancels(m, 0)) { return 1; } - func_802627B8(m, MARIO_ANIM_SLIDEFLIP_LAND, ACT_IDLE); + landing_step(m, MARIO_ANIM_SLIDEFLIP_LAND, ACT_IDLE); m->marioObj->header.gfx.angle[1] += 0x8000; return 0; } s32 act_freefall_land_stop(struct MarioState *m) { - if (func_80262828(m, 0)) { + if (check_common_landing_cancels(m, 0)) { return 1; } - func_802627B8(m, MARIO_ANIM_GENERAL_LAND, ACT_IDLE); + landing_step(m, MARIO_ANIM_GENERAL_LAND, ACT_IDLE); return 0; } s32 act_triple_jump_land_stop(struct MarioState *m) { - if (func_80262828(m, ACT_JUMP)) { + if (check_common_landing_cancels(m, ACT_JUMP)) { return 1; } - func_802627B8(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_IDLE); + landing_step(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_IDLE); return 0; } @@ -914,39 +914,39 @@ s32 act_backflip_land_stop(struct MarioState *m) { m->input &= -3; } - if (func_80262828(m, ACT_BACKFLIP)) { + if (check_common_landing_cancels(m, ACT_BACKFLIP)) { return 1; } - func_802627B8(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_IDLE); + landing_step(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_IDLE); return 0; } s32 act_lava_boost_land(struct MarioState *m) { m->input &= -0x2011; - if (func_80262828(m, 0)) { + if (check_common_landing_cancels(m, 0)) { return 1; } - func_802627B8(m, MARIO_ANIM_STAND_UP_FROM_LAVA_BOOST, ACT_IDLE); + landing_step(m, MARIO_ANIM_STAND_UP_FROM_LAVA_BOOST, ACT_IDLE); return 0; } s32 act_long_jump_land_stop(struct MarioState *m) { m->input &= -0x2001; - if (func_80262828(m, ACT_JUMP)) { + if (check_common_landing_cancels(m, ACT_JUMP)) { return 1; } - func_802627B8(m, + landing_step(m, !m->marioObj->oMarioLongJumpIsSlow ? MARIO_ANIM_CROUCH_FROM_FAST_LONGJUMP : MARIO_ANIM_CROUCH_FROM_SLOW_LONGJUMP, ACT_CROUCHING); return 0; } -s32 func_80262CEC(struct MarioState *m) { +s32 act_unknown_034(struct MarioState *m) { if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) { return drop_and_set_mario_action(m, ACT_IDLE, 0); } @@ -963,11 +963,11 @@ s32 func_80262CEC(struct MarioState *m) { return set_mario_action(m, ACT_THROWING, 0); } - func_802627B8(m, MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE); + landing_step(m, MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE); return 0; } -s32 func_80262DE4(struct MarioState *m) { +s32 act_unknown_035(struct MarioState *m) { if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) { return drop_and_set_mario_action(m, ACT_IDLE, 0); } @@ -983,7 +983,7 @@ s32 func_80262DE4(struct MarioState *m) { if (m->input & INPUT_B_PRESSED) { return set_mario_action(m, ACT_THROWING, 0); } - func_802627B8(m, MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE); + landing_step(m, MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE); return 0; } @@ -1000,7 +1000,7 @@ s32 act_air_throw_land(struct MarioState *m) { mario_throw_held_object(m); } - func_802627B8(m, MARIO_ANIM_THROW_LIGHT_OBJECT, ACT_IDLE); + landing_step(m, MARIO_ANIM_THROW_LIGHT_OBJECT, ACT_IDLE); return 0; } @@ -1050,7 +1050,7 @@ s32 act_ground_pound_land(struct MarioState *m) { return set_mario_action(m, ACT_BUTT_SLIDE, 0); } - func_802627B8(m, MARIO_ANIM_GROUND_POUND_LANDING, ACT_BUTT_SLIDE_STOP); + landing_step(m, MARIO_ANIM_GROUND_POUND_LANDING, ACT_BUTT_SLIDE_STOP); return 0; } @@ -1061,12 +1061,12 @@ s32 act_first_person(struct MarioState *m) { sp1C = 0 != (m->input & (INPUT_UNKNOWN_10 | 0xC)); if (m->actionState == 0) { - func_80248C28(2); + lower_background_noise(2); set_camera_mode(m->area->camera, CAMERA_MODE_C_UP, 0x10); m->actionState = 1; } else { if (!(m->input & INPUT_FIRST_PERSON) || sp1C) { - func_80248CB8(2); + raise_background_noise(2); // Go back to the last camera mode set_camera_mode(m->area->camera, -1, 1); return set_mario_action(m, ACT_IDLE, 0); @@ -1090,10 +1090,10 @@ s32 act_first_person(struct MarioState *m) { return 0; } -s32 func_80263378(struct MarioState *m) { +s32 check_common_stationary_cancels(struct MarioState *m) { if (m->pos[1] < m->waterLevel - 100) { if (m->action == ACT_SPAWN_SPIN_LANDING) { - func_8024980C(0); + load_level_init_text(0); } update_mario_sound_and_camera(m); return set_water_plunge_action(m); @@ -1116,7 +1116,7 @@ s32 func_80263378(struct MarioState *m) { s32 mario_execute_stationary_action(struct MarioState *m) { s32 sp24; - if (func_80263378(m)) { + if (check_common_stationary_cancels(m)) { return 1; } @@ -1144,14 +1144,14 @@ s32 mario_execute_stationary_action(struct MarioState *m) { case ACT_START_CRAWLING: sp24 = act_start_crawling(m); break; case ACT_UNKNOWN_024: sp24 = act_stop_crawling(m); break; case ACT_SLIDE_KICK_SLIDE_STOP: sp24 = act_slide_kick_slide_stop(m); break; - case ACT_UNKNOWN_026: sp24 = func_80262574(m); break; + case ACT_UNKNOWN_026: sp24 = act_unknown_026(m); break; case ACT_FIRST_PERSON: sp24 = act_first_person(m); break; case ACT_JUMP_LAND_STOP: sp24 = act_jump_land_stop(m); break; case ACT_DOUBLE_JUMP_LAND_STOP: sp24 = act_double_jump_land_stop(m); break; case ACT_FREEFALL_LAND_STOP: sp24 = act_freefall_land_stop(m); break; case ACT_SIDE_FLIP_LAND_STOP: sp24 = act_side_flip_land_stop(m); break; - case ACT_UNKNOWN_034: sp24 = func_80262CEC(m); break; - case ACT_UNKNOWN_035: sp24 = func_80262DE4(m); break; + case ACT_UNKNOWN_034: sp24 = act_unknown_034(m); break; + case ACT_UNKNOWN_035: sp24 = act_unknown_035(m); break; case ACT_AIR_THROW_LAND: sp24 = act_air_throw_land(m); break; case ACT_LAVA_BOOST_LAND: sp24 = act_lava_boost_land(m); break; case ACT_TWIRL_LAND: sp24 = act_twirl_land(m); break; @@ -1161,13 +1161,13 @@ s32 mario_execute_stationary_action(struct MarioState *m) { case ACT_GROUND_POUND_LAND: sp24 = act_ground_pound_land(m); break; case ACT_BRAKING_STOP: sp24 = act_braking_stop(m); break; case ACT_BUTT_SLIDE_STOP: sp24 = act_butt_slide_stop(m); break; - case ACT_UNKNOWN_03F: sp24 = func_80261F8C(m); break; + case ACT_UNKNOWN_03F: sp24 = act_unknown_03F(m); break; } /* clang-format on */ if (!sp24) { if (m->input & INPUT_IN_WATER) { - m->particleFlags |= PARTICLE_7; + m->particleFlags |= PARTICLE_IDLE_WATER_WAVE; } } diff --git a/src/game/mario_actions_stationary.h b/src/game/mario_actions_stationary.h index 1cfca150..1fded715 100644 --- a/src/game/mario_actions_stationary.h +++ b/src/game/mario_actions_stationary.h @@ -5,10 +5,10 @@ #define INPUT_UNKNOWN_A41F 0xA41F -extern s32 func_802604E0(struct MarioState *); -extern s32 func_802606DC(struct MarioState *); +extern s32 check_common_idle_cancels(struct MarioState *); +extern s32 check_common_hold_idle_cancels(struct MarioState *); extern s32 act_idle(struct MarioState *); -extern void func_80260BC4(struct MarioState *, u32, s32, u32); +extern void play_anim_sound(struct MarioState *, u32, s32, u32); extern s32 act_start_sleeping(struct MarioState *); extern s32 act_sleeping(struct MarioState *); extern s32 act_waking_up(struct MarioState *); @@ -21,18 +21,18 @@ extern s32 act_in_quicksand(struct MarioState *); extern s32 act_crouching(struct MarioState *); extern s32 act_panting(struct MarioState *); extern s32 func_80261C74(struct MarioState *); -extern void func_80261D70(struct MarioState *, s32, u32); +extern void stopping_step(struct MarioState *, s32, u32); extern s32 act_braking_stop(struct MarioState *); extern s32 act_butt_slide_stop(struct MarioState *); -extern s32 func_80261F8C(struct MarioState *); +extern s32 act_unknown_03F(struct MarioState *); extern s32 act_slide_kick_slide_stop(struct MarioState *); extern s32 act_start_crouching(struct MarioState *); extern s32 act_stop_crouching(struct MarioState *); extern s32 act_start_crawling(struct MarioState *); extern s32 act_stop_crawling(struct MarioState *); -extern s32 func_80262574(struct MarioState *); -extern s32 func_802627B8(struct MarioState *, s32, u32); -extern s32 func_80262828(struct MarioState *, u32); +extern s32 act_unknown_026(struct MarioState *); +extern s32 landing_step(struct MarioState *, s32, u32); +extern s32 check_common_landing_cancels(struct MarioState *, u32); extern s32 act_jump_land_stop(struct MarioState *); extern s32 act_double_jump_land_stop(struct MarioState *); extern s32 act_side_flip_land_stop(struct MarioState *); @@ -41,13 +41,13 @@ extern s32 act_triple_jump_land_stop(struct MarioState *); extern s32 act_backflip_land_stop(struct MarioState *); extern s32 act_lava_boost_land(struct MarioState *); extern s32 act_long_jump_land_stop(struct MarioState *); -extern s32 func_80262CEC(struct MarioState *); -extern s32 func_80262DE4(struct MarioState *); +extern s32 act_unknown_034(struct MarioState *); +extern s32 act_unknown_035(struct MarioState *); extern s32 act_air_throw_land(struct MarioState *); extern s32 act_twirl_land(struct MarioState *); extern s32 act_ground_pound_land(struct MarioState *); extern s32 act_first_person(struct MarioState *); -extern s32 func_80263378(struct MarioState *); +extern s32 check_common_stationary_cancels(struct MarioState *); extern s32 mario_execute_stationary_action(struct MarioState *); #endif /* _MARIO_ACTIONS_STATIONARY */ diff --git a/src/game/mario_actions_submerged.c b/src/game/mario_actions_submerged.c index 18a2a153..f9634cd5 100644 --- a/src/game/mario_actions_submerged.c +++ b/src/game/mario_actions_submerged.c @@ -193,7 +193,7 @@ static u32 perform_water_step(struct MarioState *m) { return stepResult; } -static BAD_RETURN(u32) func_80270504(struct MarioState *m) { +static BAD_RETURN(u32) update_water_pitch(struct MarioState *m) { struct Object *marioObj = m->marioObj; if (marioObj->header.gfx.angle[0] > 0) { @@ -308,7 +308,7 @@ static void common_idle_step(struct MarioState *m, s32 animation, s32 arg) { update_swimming_pitch(m); update_swimming_speed(m, MIN_SWIM_SPEED); perform_water_step(m); - func_80270504(m); + update_water_pitch(m); if (m->faceAngle[0] > 0) { *val = approach_s32(*val, m->faceAngle[0] / 2, 0x80, 0x200); @@ -322,7 +322,7 @@ static void common_idle_step(struct MarioState *m, s32 animation, s32 arg) { set_mario_anim_with_accel(m, animation, arg); } - set_swimming_at_surface_particles(m, PARTICLE_7); + set_swimming_at_surface_particles(m, PARTICLE_IDLE_WATER_WAVE); } static s32 act_water_idle(struct MarioState *m) { @@ -415,13 +415,13 @@ static s32 act_hold_water_action_end(struct MarioState *m) { return FALSE; } -static void func_8027107C(struct MarioState *m) { +static void reset_float_globals(struct MarioState *m) { D_80339FD0 = 0; D_80339FD2 = 0x800; D_80339FD4 = m->faceAngle[0] / 256.0f + 20.0f; } -static void func_802710CC(struct MarioState *m) { +static void float_surface_gfx(struct MarioState *m) { if (D_80339FD2 != 0 && m->pos[1] > m->waterLevel - 85 && m->faceAngle[0] >= 0) { if ((D_80339FD0 += D_80339FD2) >= 0) { m->marioObj->header.gfx.pos[1] += D_80339FD4 * sins(D_80339FD0); @@ -471,14 +471,14 @@ static void common_swimming_step(struct MarioState *m, s16 swimStrength) { break; } - func_80270504(m); + update_water_pitch(m); m->marioBodyState->headAngle[0] = approach_s32(m->marioBodyState->headAngle[0], 0, 0x200, 0x200); - func_802710CC(m); - set_swimming_at_surface_particles(m, PARTICLE_10); + float_surface_gfx(m); + set_swimming_at_surface_particles(m, PARTICLE_WAVE_TRAIL); } -static void func_802713A8(struct MarioState *m) { +static void play_swimming_noise(struct MarioState *m) { s16 animFrame = m->marioObj->header.gfx.unk38.animFrame; // (this need to be on one line to match on PAL) @@ -550,7 +550,7 @@ static s32 act_breaststroke(struct MarioState *m) { if (m->actionTimer == 1) { play_sound(sSwimStrength == MIN_SWIM_STRENGTH ? SOUND_ACTION_SWIM : SOUND_ACTION_SWIM_FAST, m->marioObj->header.gfx.cameraToObject); - func_8027107C(m); + reset_float_globals(m); } set_mario_animation(m, MARIO_ANIM_SWIM_PART1); @@ -617,7 +617,7 @@ static s32 act_flutter_kick(struct MarioState *m) { sSwimStrength = MIN_SWIM_STRENGTH; if (m->forwardVel < 14.0f) { - func_802713A8(m); + play_swimming_noise(m); set_mario_animation(m, MARIO_ANIM_FLUTTERKICK); } @@ -668,7 +668,7 @@ static s32 act_hold_breaststroke(struct MarioState *m) { if (m->actionTimer == 1) { play_sound(SOUND_ACTION_SWIM, m->marioObj->header.gfx.cameraToObject); - func_8027107C(m); + reset_float_globals(m); } set_mario_animation(m, MARIO_ANIM_SWIM_WITH_OBJ_PART1); @@ -728,7 +728,7 @@ static s32 act_hold_flutter_kick(struct MarioState *m) { m->forwardVel = approach_f32(m->forwardVel, 12.0f, 0.1f, 0.15f); if (m->forwardVel < 14.0f) { - func_802713A8(m); + play_swimming_noise(m); set_mario_animation(m, MARIO_ANIM_FLUTTERKICK_WITH_OBJ); } common_swimming_step(m, 0x00A0); @@ -753,7 +753,7 @@ static s32 act_water_shell_swimming(struct MarioState *m) { m->forwardVel = approach_f32(m->forwardVel, 30.0f, 2.0f, 1.0f); - func_802713A8(m); + play_swimming_noise(m); set_mario_animation(m, MARIO_ANIM_FLUTTERKICK_WITH_OBJ); common_swimming_step(m, 0x012C); @@ -786,7 +786,7 @@ static s32 act_water_throw(struct MarioState *m) { update_swimming_pitch(m); update_swimming_speed(m, MIN_SWIM_SPEED); perform_water_step(m); - func_80270504(m); + update_water_pitch(m); set_mario_animation(m, MARIO_ANIM_WATER_THROW_OBJ); play_sound_if_no_flag(m, SOUND_ACTION_SWIM, MARIO_ACTION_SOUND_PLAYED); @@ -813,7 +813,7 @@ static s32 act_water_punch(struct MarioState *m) { update_swimming_pitch(m); update_swimming_speed(m, MIN_SWIM_SPEED); perform_water_step(m); - func_80270504(m); + update_water_pitch(m); m->marioBodyState->headAngle[0] = approach_s32(m->marioBodyState->headAngle[0], 0, 0x200, 0x200); @@ -966,7 +966,7 @@ static s32 act_water_plunge(struct MarioState *m) { play_sound(SOUND_MARIO_HAHA_2, m->marioObj->header.gfx.cameraToObject); } - m->particleFlags |= PARTICLE_6; + m->particleFlags |= PARTICLE_WATER_SPLASH; m->actionState = 1; } @@ -1178,7 +1178,7 @@ static s32 act_metal_water_standing(struct MarioState *m) { stop_and_set_height_to_floor(m); if (m->pos[1] >= m->waterLevel - 150) { - m->particleFlags |= PARTICLE_7; + m->particleFlags |= PARTICLE_IDLE_WATER_WAVE; } return FALSE; diff --git a/src/game/mario_misc.c b/src/game/mario_misc.c index 2557e9e5..f68f5d04 100644 --- a/src/game/mario_misc.c +++ b/src/game/mario_misc.c @@ -100,7 +100,7 @@ Gfx *geo_draw_mario_head_goddard(s32 callContext, struct GraphNode *node, Mat4 * return gfx; } -static void bhvToadMessage_faded(void) { +static void toad_message_faded(void) { if (gCurrentObject->oDistanceToMario > 700.0f) { gCurrentObject->oToadMessageRecentlyTalked = 0; } @@ -109,7 +109,7 @@ static void bhvToadMessage_faded(void) { } } -static void bhvToadMessage_opaque(void) { +static void toad_message_opaque(void) { if (gCurrentObject->oDistanceToMario > 700.0f) { gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING; } else { @@ -124,8 +124,8 @@ static void bhvToadMessage_opaque(void) { } } -static void bhvToadMessage_talking(void) { - if (obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG, gCurrentObject->oToadMessageDialogId) +static void toad_message_talking(void) { + if (cur_obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG, gCurrentObject->oToadMessageDialogId) != 0) { gCurrentObject->oToadMessageRecentlyTalked = 1; gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING; @@ -146,42 +146,42 @@ static void bhvToadMessage_talking(void) { } } -static void bhvToadMessage_opacifying(void) { +static void toad_message_opacifying(void) { if ((gCurrentObject->oOpacity += 6) == 255) { gCurrentObject->oToadMessageState = TOAD_MESSAGE_OPAQUE; } } -static void bhvToadMessage_fading(void) { +static void toad_message_fading(void) { if ((gCurrentObject->oOpacity -= 6) == 81) { gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADED; } } -void bhvToadMessage_loop(void) { +void bhv_toad_message_loop(void) { if (gCurrentObject->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) { gCurrentObject->oInteractionSubtype = 0; switch (gCurrentObject->oToadMessageState) { case TOAD_MESSAGE_FADED: - bhvToadMessage_faded(); + toad_message_faded(); break; case TOAD_MESSAGE_OPAQUE: - bhvToadMessage_opaque(); + toad_message_opaque(); break; case TOAD_MESSAGE_OPACIFYING: - bhvToadMessage_opacifying(); + toad_message_opacifying(); break; case TOAD_MESSAGE_FADING: - bhvToadMessage_fading(); + toad_message_fading(); break; case TOAD_MESSAGE_TALKING: - bhvToadMessage_talking(); + toad_message_talking(); break; } } } -void bhvToadMessage_init(void) { +void bhv_toad_message_init(void) { s32 saveFlags = save_file_get_flags(); s32 starCount = save_file_get_total_star_count(gCurrSaveFileNum - 1, 0, 24); s32 dialogId = (gCurrentObject->oBehParams >> 24) & 0xFF; @@ -213,11 +213,11 @@ void bhvToadMessage_init(void) { gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADED; gCurrentObject->oOpacity = 81; } else { - mark_object_for_deletion(gCurrentObject); + obj_mark_for_deletion(gCurrentObject); } } -static void bhvUnlockDoorStar_spawn_particle(s16 angleOffset) { +static void star_door_unlock_spawn_particles(s16 angleOffset) { struct Object *sparkleParticle = spawn_object(gCurrentObject, 0, bhvSparkleSpawn); sparkleParticle->oPosX += @@ -228,7 +228,7 @@ static void bhvUnlockDoorStar_spawn_particle(s16 angleOffset) { sparkleParticle->oPosY -= gCurrentObject->oUnlockDoorStarTimer * 10.0f; } -void bhvUnlockDoorStar_init(void) { +void bhv_unlock_door_star_init(void) { gCurrentObject->oUnlockDoorStarState = UNLOCK_DOOR_STAR_RISING; gCurrentObject->oUnlockDoorStarTimer = 0; gCurrentObject->oUnlockDoorStarYawVel = 0x1000; @@ -236,10 +236,10 @@ void bhvUnlockDoorStar_init(void) { gCurrentObject->oPosY += 160.0f; gCurrentObject->oPosZ += 30.0f * coss(gMarioState->faceAngle[1] - 0x4000); gCurrentObject->oMoveAngleYaw = 0x7800; - scale_object(gCurrentObject, 0.5f); + obj_scale(gCurrentObject, 0.5f); } -void bhvUnlockDoorStar_loop(void) { +void bhv_unlock_door_star_loop(void) { UNUSED u8 unused1[4]; s16 prevYaw = gCurrentObject->oMoveAngleYaw; UNUSED u8 unused2[4]; @@ -253,7 +253,7 @@ void bhvUnlockDoorStar_loop(void) { gCurrentObject->oPosY += 3.4f; // Raise the star up in the air gCurrentObject->oMoveAngleYaw += gCurrentObject->oUnlockDoorStarYawVel; // Apply yaw velocity - scale_object(gCurrentObject, gCurrentObject->oUnlockDoorStarTimer / 50.0f + obj_scale(gCurrentObject, gCurrentObject->oUnlockDoorStarTimer / 50.0f + 0.5f); // Scale the star to be bigger if (++gCurrentObject->oUnlockDoorStarTimer == 30) { gCurrentObject->oUnlockDoorStarTimer = 0; @@ -266,7 +266,7 @@ void bhvUnlockDoorStar_loop(void) { if (++gCurrentObject->oUnlockDoorStarTimer == 30) { play_sound(SOUND_MENU_STAR_SOUND, gCurrentObject->header.gfx.cameraToObject); // Play final sound - obj_hide(); // Hide the object + cur_obj_hide(); // Hide the object gCurrentObject->oUnlockDoorStarTimer = 0; gCurrentObject ->oUnlockDoorStarState++; // Sets state to UNLOCK_DOOR_STAR_SPAWNING_PARTICLES @@ -274,8 +274,8 @@ void bhvUnlockDoorStar_loop(void) { break; case UNLOCK_DOOR_STAR_SPAWNING_PARTICLES: // Spawn two particles, opposite sides of the star. - bhvUnlockDoorStar_spawn_particle(0); - bhvUnlockDoorStar_spawn_particle(0x8000); + star_door_unlock_spawn_particles(0); + star_door_unlock_spawn_particles(0x8000); if (gCurrentObject->oUnlockDoorStarTimer++ == 20) { gCurrentObject->oUnlockDoorStarTimer = 0; gCurrentObject->oUnlockDoorStarState++; // Sets state to UNLOCK_DOOR_STAR_DONE @@ -284,7 +284,7 @@ void bhvUnlockDoorStar_loop(void) { case UNLOCK_DOOR_STAR_DONE: // The object stays loaded for an additional 50 frames so that the // sound doesn't immediately stop. if (gCurrentObject->oUnlockDoorStarTimer++ == 50) { - mark_object_for_deletion(gCurrentObject); + obj_mark_for_deletion(gCurrentObject); } break; } diff --git a/src/game/mario_misc.h b/src/game/mario_misc.h index 2465ac93..7b4ed951 100644 --- a/src/game/mario_misc.h +++ b/src/game/mario_misc.h @@ -7,10 +7,10 @@ extern struct GraphNodeObject gMirrorMario; extern struct MarioBodyState gBodyStates[2]; extern Gfx *geo_draw_mario_head_goddard(s32 a, struct GraphNode *b, Mat4 *c); -extern void bhvToadMessage_loop(void); -extern void bhvToadMessage_init(void); -extern void bhvUnlockDoorStar_init(void); -extern void bhvUnlockDoorStar_loop(void); +extern void bhv_toad_message_loop(void); +extern void bhv_toad_message_init(void); +extern void bhv_unlock_door_star_init(void); +extern void bhv_unlock_door_star_loop(void); extern Gfx *geo_mirror_mario_set_alpha(s32 a, struct GraphNode *b, UNUSED Mat4 *c); extern Gfx *geo_switch_mario_stand_run(s32 run, struct GraphNode *node, UNUSED Mat4 *c); extern Gfx *geo_switch_mario_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *c); diff --git a/src/game/mario_step.c b/src/game/mario_step.c index e3f5e588..e40ed68d 100644 --- a/src/game/mario_step.c +++ b/src/game/mario_step.c @@ -21,9 +21,9 @@ struct Surface gWaterSurfacePseudoFloor = { * to be used for the beta trampoline. Its return value * is used by set_mario_y_vel_based_on_fspeed as a constant * addition to Mario's Y velocity. Given the closeness of - * this function to nop_80254E50, it is probable that this + * this function to stub_mario_step_2, it is probable that this * was intended to check whether a trampoline had made itself - * known through nop_80254E50 and whether Mario was on it, + * known through stub_mario_step_2 and whether Mario was on it, * and if so return a higher value than 0. */ f32 get_additive_y_vel_for_jumps(void) { @@ -33,13 +33,13 @@ f32 get_additive_y_vel_for_jumps(void) { /** * Does nothing, but takes in a MarioState. This is only ever * called by update_mario_inputs, which is called as part of Mario's - * update routine. Due to its proximity to nop_80254E50, an + * update routine. Due to its proximity to stub_mario_step_2, an * incomplete trampoline function, and get_additive_y_vel_for_jumps, * a potentially trampoline-related function, it is plausible that * this could be used for checking if Mario was on the trampoline. * It could, for example, make him bounce. */ -void nop_80254E3C(UNUSED struct MarioState *x) { +void stub_mario_step_1(UNUSED struct MarioState *x) { } /** @@ -49,7 +49,7 @@ void nop_80254E3C(UNUSED struct MarioState *x) { * by the trampoline to make itself known to get_additive_y_vel_for_jumps, * or to set a variable with its intended additive Y vel. */ -void nop_80254E50(void) { +void stub_mario_step_2(void) { } void transfer_bully_speed(struct BullyCollisionData *obj1, struct BullyCollisionData *obj2) { diff --git a/src/game/mario_step.h b/src/game/mario_step.h index 5f2ebf57..3842ca50 100644 --- a/src/game/mario_step.h +++ b/src/game/mario_step.h @@ -6,8 +6,8 @@ extern struct Surface gWaterSurfacePseudoFloor; extern f32 get_additive_y_vel_for_jumps(void); -extern void nop_80254E3C(struct MarioState *); -extern void nop_80254E50(void); +extern void stub_mario_step_1(struct MarioState *); +extern void stub_mario_step_2(void); extern void mario_bonk_reflection(struct MarioState *, u32); extern u32 mario_update_quicksand(struct MarioState *, f32); diff --git a/src/game/memory.c b/src/game/memory.c index 00ad881d..a01869e3 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -329,7 +329,7 @@ void *load_segment_decompress(s32 segment, u8 *srcStart, u8 *srcEnd) { return dest; } -void *func_80278304(u32 segment, u8 *srcStart, u8 *srcEnd) { +void *load_segment_decompress_heap(u32 segment, u8 *srcStart, u8 *srcEnd) { UNUSED void *dest = NULL; u32 compSize = ALIGN16(srcEnd - srcStart); u8 *compressed = main_pool_alloc(compSize, MEMORY_POOL_RIGHT); @@ -538,7 +538,7 @@ void func_80278A78(struct MarioAnimation *a, void *b, struct Animation *target) a->targetAnim = target; } -s32 func_80278AD4(struct MarioAnimation *a, u32 index) { +s32 load_patchable_table(struct MarioAnimation *a, u32 index) { s32 ret = FALSE; struct MarioAnimDmaRelatedThing *sp20 = a->animDmaTable; u8 *addr; diff --git a/src/game/memory.h b/src/game/memory.h index d47d2476..588ceb3a 100644 --- a/src/game/memory.h +++ b/src/game/memory.h @@ -40,7 +40,7 @@ u32 main_pool_pop_state(void); void *load_segment(s32 segment, u8 *srcStart, u8 *srcEnd, u32 side); void *load_to_fixed_pool_addr(u8 *destAddr, u8 *srcStart, u8 *srcEnd); void *load_segment_decompress(s32 segment, u8 *srcStart, u8 *srcEnd); -void *func_80278304(u32 segment, u8 *srcStart, u8 *srcEnd); +void *load_segment_decompress_heap(u32 segment, u8 *srcStart, u8 *srcEnd); void load_engine_code_segment(void); struct AllocOnlyPool *alloc_only_pool_init(u32 size, u32 side); @@ -53,6 +53,6 @@ void mem_pool_free(struct MemoryPool *pool, void *addr); void *alloc_display_list(u32 size); void func_80278A78(struct MarioAnimation *a, void *b, struct Animation *target); -s32 func_80278AD4(struct MarioAnimation *a, u32 b); +s32 load_patchable_table(struct MarioAnimation *a, u32 b); #endif diff --git a/src/game/obj_behaviors.c b/src/game/obj_behaviors.c index acc06692..f12f45b7 100644 --- a/src/game/obj_behaviors.c +++ b/src/game/obj_behaviors.c @@ -78,7 +78,7 @@ void set_yoshi_as_not_dead(void) { } /** - * An unused geo function. Bears strong similarity to Geo18_802B7D44, and relates something + * An unused geo function. Bears strong similarity to geo_bits_bowser_coloring, and relates something * of the opacity of an object to something else. Perhaps like, giving a parent object the same * opacity? */ @@ -395,10 +395,10 @@ void obj_splash(s32 waterY, s32 objY) { // Spawns waves if near surface of water and plays a noise if entering. if ((f32)(waterY + 30) > o->oPosY && o->oPosY > (f32)(waterY - 30)) { - spawn_object(o, MODEL_WATER_WAVES_SURF, bhvObjectWaterWave); + spawn_object(o, MODEL_IDLE_WATER_WAVE, bhvObjectWaterWave); if (o->oVelY < -20.0f) { - PlaySound2(SOUND_OBJ_DIVING_INTO_WATER); + cur_obj_play_sound_2(SOUND_OBJ_DIVING_INTO_WATER); } } @@ -739,7 +739,7 @@ s32 obj_lava_death(void) { } if ((o->oTimer % 8) == 0) { - PlaySound2(SOUND_OBJ_BULLY_EXPLODE_2); + cur_obj_play_sound_2(SOUND_OBJ_BULLY_EXPLODE_2); deathSmoke = spawn_object(o, MODEL_SMOKE, bhvBobombBullyDeathSmoke); deathSmoke->oPosX += RandomFloat() * 20.0f; deathSmoke->oPosY += RandomFloat() * 20.0f; diff --git a/src/game/obj_behaviors.h b/src/game/obj_behaviors.h index 244f41f0..b12a5202 100644 --- a/src/game/obj_behaviors.h +++ b/src/game/obj_behaviors.h @@ -11,48 +11,48 @@ extern u8 bob_seg7_metal_ball_path1[]; void set_yoshi_as_not_dead(void); -s32 CoinStep(s16 *collisionFlagsPtr); -void MovingCoinFlickerLoop(void); -void CoinCollected(void); +s32 coin_step(s16 *collisionFlagsPtr); +void moving_coin_flicker(void); +void coin_collected(void); void bhv_moving_yellow_coin_init(void); void bhv_moving_yellow_coin_loop(void); void bhv_moving_blue_coin_init(void); void bhv_moving_blue_coin_loop(void); void bhv_blue_coin_sliding_jumping_init(void); -void func_802E540C(void); /* likely unused */ -void func_802E54DC(void); /* likely unused */ +void blue_coin_sliding_away_from_mario(void); /* likely unused */ +void blue_coin_sliding_slow_down(void); /* likely unused */ void bhv_blue_coin_sliding_loop(void); /* likely unused */ void bhv_blue_coin_jumping_loop(void); /* likely unused */ void bhv_seaweed_init(void); void bhv_seaweed_bundle_init(void); void bhv_bobomb_init(void); -void func_802E5B7C(void); -void BobombExplodeLoop(void); -void CheckBobombInteractions(void); -void BobombPatrolLoop(void); -void BobombChaseMarioLoop(void); -void BobombLaunchedLoop(void); -void GenericBobombFreeLoop(void); -void StationaryBobombFreeLoop(void); -void BobombFreeLoop(void); -void BobombHeldLoop(void); -void BobombDroppedLoop(void); -void BobombThrownLoop(void); -void ObjRandomBlink(s32 *blinkTimer); +void bobomb_spawn_coin(void); +void bobomb_act_explode(void); +void bobomb_check_interactions(void); +void bobomb_act_patrol(void); +void bobomb_act_chase_mario(void); +void bobomb_act_launched(void); +void generic_bobomb_free_loop(void); +void stationary_bobomb_free_loop(void); +void bobomb_free_loop(void); +void bobomb_held_loop(void); +void bobomb_dropped_loop(void); +void bobomb_thrown_loop(void); +void curr_obj_random_blink(s32 *blinkTimer); void bhv_bobomb_loop(void); void bhv_bobomb_fuse_smoke_init(void); void bhv_bobomb_buddy_init(void); -void BobombBuddyIdleLoop(void); -void BobombBuddyCannonLoop(s16 arg0, s16 arg1); -void BobombBuddyTalkLoop(void); -void BobombBuddyTurnToTalkLoop(void); -void BobombBuddyActionLoop(void); +void bobomb_buddy_act_idle(void); +void bobomb_buddy_cannon_dialog(s16 arg0, s16 arg1); +void bobomb_buddy_act_talk(void); +void bobomb_buddy_act_turn_to_talk(void); +void bobomb_buddy_actions(void); void bhv_bobomb_buddy_loop(void); void bhv_cannon_closed_init(void); -void CannonTrapDoorOpeningLoop(void); +void cannon_door_act_opening(void); void bhv_cannon_closed_loop(void); void bhv_whirlpool_init(void); -void func_802E70A8(void); +void whirlpool_set_hitbox(void); void WhirlpoolOrientGraph(void); void bhv_whirlpool_loop(void); void bhv_jet_stream_loop(void); @@ -61,23 +61,23 @@ void bhv_homing_amp_loop(void); void bhv_circling_amp_init(void); void bhv_circling_amp_loop(void); void bhv_butterfly_init(void); -void ButterflyStep(s32 speed); -void CalculateButterflyAngle(void); -void ButterflyRestingLoop(void); -void ButterflyFollowMarioLoop(void); -void ButterflyReturnHomeLoop(void); +void butterfly_step(s32 speed); +void butterfly_calculate_angle(void); +void butterfly_act_rest(void); +void butterfly_act_follow_mario(void); +void butterfly_act_return_home(void); void bhv_butterfly_loop(void); void bhv_hoot_init(void); -f32 HootFindNextFloor(struct FloorGeometry **arg0, f32 arg1); -void HootFloorBounce(void); -void HootFreeStep(s16 arg0, s32 arg1); -void PlayerSetHootYaw(void); -void HootCarryStep(s32 arg0, UNUSED f32 arg1, UNUSED f32 arg2); -void HootSurfaceCollision(f32 arg0, UNUSED f32 arg1, f32 arg2); -void HootAscentLoop(f32 arg0, f32 arg1); -void HootActionLoop(void); -void HootTurnToHome(void); -void HootAwakeLoop(void); +f32 hoot_find_next_floor(struct FloorGeometry **arg0, f32 arg1); +void hoot_floor_bounce(void); +void hoot_free_step(s16 arg0, s32 arg1); +void hoot_player_set_yaw(void); +void hoot_carry_step(s32 arg0, UNUSED f32 arg1, UNUSED f32 arg2); +void hoot_surface_collision(f32 arg0, UNUSED f32 arg1, f32 arg2); +void hoot_act_ascent(f32 arg0, f32 arg1); +void hoot_action_loop(void); +void hoot_turn_to_home(void); +void hoot_awake_loop(void); void bhv_hoot_loop(void); void bhv_beta_holdable_object_init(void); /* unused */ void bhv_beta_holdable_object_loop(void); /* unused */ @@ -94,40 +94,40 @@ void bhv_respawner_loop(void); void create_respawner(s32 arg0, const BehaviorScript *behToSpawn, s32 minSpawnDist); void bhv_small_bully_init(void); void bhv_big_bully_init(void); -void BullyCheckMarioCollision(void); -void BullyChaseMarioLoop(void); -void BullyKnockbackLoop(void); -void BullyBackUpLoop(void); -void BullyBackUpCheck(s16 arg0); -void PlayBullyStompingSound(void); -void BullyStep(void); -void BullySpawnCoin(void); -void BullyLavaDeath(void); +void bully_check_mario_collision(void); +void bully_act_chase_mario(void); +void bully_act_knockback(void); +void bully_act_back_up(void); +void bully_backup_check(s16 arg0); +void bully_play_stomping_sound(void); +void bully_step(void); +void bully_spawn_coin(void); +void bully_act_level_death(void); void bhv_bully_loop(void); -void BigBullySpawnMinion(s32 arg0, s32 arg1, s32 arg2, s16 arg3); +void big_bully_spawn_minion(s32 arg0, s32 arg1, s32 arg2, s16 arg3); void bhv_big_bully_with_minions_init(void); -void BigBullyWithMinionsLavaDeath(void); +void big_bully_spawn_star(void); void bhv_big_bully_with_minions_loop(void); -f32 WaterRingCalcMarioDistInFront(void); -void WaterRingInit(void); +f32 water_ring_calc_mario_dist(void); +void water_ring_init(void); void bhv_jet_stream_water_ring_init(void); -void CheckWaterRingCollection(f32 avgScale, struct Object* ringManager); -void SetWaterRingScale(f32 avgScale); -void WaterRingCollectedLoop(void); -void JetStreamWaterRingNotCollectedLoop(void); +void water_ring_check_collection(f32 avgScale, struct Object* ringManager); +void water_ring_set_scale(f32 avgScale); +void water_ring_act_collected(void); +void water_ring_act_not_collected(void); void bhv_jet_stream_water_ring_loop(void); -void Unknown802EB8A4(void); /* unused */ -void JetStreamRingSpawnerActiveLoop(void); +void spawn_manta_ray_ring_manager(void); /* unused */ +void water_ring_spawner_act_inactive(void); void bhv_jet_stream_ring_spawner_loop(void); void bhv_manta_ray_water_ring_init(void); -void MantaRayWaterRingNotCollectedLoop(void); +void manta_water_ring_act_not_collected(void); void bhv_manta_ray_water_ring_loop(void); void bhv_bowser_bomb_loop(void); void bhv_bowser_bomb_explosion_loop(void); void bhv_bowser_bomb_smoke_loop(void); void bhv_celebration_star_init(void); -void CelebrationStarSpinAroundMarioLoop(void); -void CelebrationStarFaceCameraLoop(void); +void celeb_star_act_spin_around_mario(void); +void celeb_star_act_face_camera(void); void bhv_celebration_star_loop(void); void bhv_celebration_star_sparkle_loop(void); void bhv_star_key_collection_puff_spawner_loop(void); @@ -140,17 +140,17 @@ void bhv_large_bomp_loop(void); void bhv_wf_sliding_platform_init(void); void bhv_wf_sliding_platform_loop(void); void bhv_moneybag_init(void); -void MoneybagCheckMarioCollision(void); -void MoneybagJump(s8 collisionFlags); -void MoneybagMoveAroundLoop(void); -void MoneybagReturnHomeLoop(void); -void MoneybagDisappearLoop(void); -void MoneybagDeathLoop(void); +void moneybag_check_mario_collision(void); +void moneybag_jump(s8 collisionFlags); +void moneybag_act_move_around(void); +void moneybag_act_return_home(void); +void moneybag_act_disappear(void); +void moneybag_act_death(void); void bhv_moneybag_loop(void); void bhv_moneybag_hidden_loop(void); void bhv_bowling_ball_init(void); -void func_802EDA14(void); -void func_802EDA6C(void); +void bowling_ball_set_hitbox(void); +void bowling_ball_set_waypoints(void); void bhv_bowling_ball_roll_loop(void); void bhv_bowling_ball_initializeLoop(void); void bhv_bowling_ball_loop(void); @@ -164,6 +164,6 @@ void bhv_free_bowling_ball_roll_loop(void); /* likely unused */ void bhv_free_bowling_ball_loop(void); /* likely unused */ void bhv_rr_cruiser_wing_init(void); void bhv_rr_cruiser_wing_loop(void); -extern void create_star(f32, f32, f32); +extern void spawn_default_star(f32, f32, f32); #endif /* _OBJ_BEHAVIORS_H */ diff --git a/src/game/obj_behaviors_2.c b/src/game/obj_behaviors_2.c index 5040c03f..e7bd7057 100644 --- a/src/game/obj_behaviors_2.c +++ b/src/game/obj_behaviors_2.c @@ -147,7 +147,7 @@ static s16 obj_get_pitch_from_vel(void) { */ static s32 obj_update_race_proposition_dialog(s16 dialogID) { s32 dialogResponse = - obj_update_dialog_with_cutscene(2, DIALOG_UNK2_FLAG_0 | DIALOG_UNK2_LEAVE_TIME_STOP_ENABLED, CUTSCENE_RACE_DIALOG, dialogID); + cur_obj_update_dialog_with_cutscene(2, DIALOG_UNK2_FLAG_0 | DIALOG_UNK2_LEAVE_TIME_STOP_ENABLED, CUTSCENE_RACE_DIALOG, dialogID); if (dialogResponse == 2) { set_mario_npc_dialog(0); @@ -347,9 +347,9 @@ static void func_802F8D78(f32 arg0, f32 arg1) { static void obj_rotate_yaw_and_bounce_off_walls(s16 targetYaw, s16 turnAmount) { if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { - targetYaw = obj_reflect_move_angle_off_wall(); + targetYaw = cur_obj_reflect_move_angle_off_wall(); } - obj_rotate_yaw_toward(targetYaw, turnAmount); + cur_obj_rotate_yaw_toward(targetYaw, turnAmount); } static s16 obj_get_pitch_to_home(f32 latDistToHome) { @@ -386,23 +386,23 @@ static s32 clamp_f32(f32 *value, f32 minimum, f32 maximum) { } static void func_802F927C(s32 arg0) { - set_obj_animation_and_sound_state(arg0); - func_8029F728(); + cur_obj_init_animation_with_sound(arg0); + cur_obj_extend_animation_if_at_end(); } static s32 func_802F92B0(s32 arg0) { - set_obj_animation_and_sound_state(arg0); - return func_8029F788(); + cur_obj_init_animation_with_sound(arg0); + return cur_obj_check_if_near_animation_end(); } static s32 func_802F92EC(s32 arg0, s32 arg1) { - set_obj_animation_and_sound_state(arg0); - return obj_check_anim_frame(arg1); + cur_obj_init_animation_with_sound(arg0); + return cur_obj_check_anim_frame(arg1); } static s32 func_802F932C(s32 arg0) { - if (func_8029F828()) { - set_obj_animation_and_sound_state(arg0); + if (cur_obj_check_if_at_animation_end()) { + cur_obj_init_animation_with_sound(arg0); return TRUE; } return FALSE; @@ -415,8 +415,8 @@ static s32 func_802F9378(s8 arg0, s8 arg1, u32 sound) { val04 = 1; } - if (obj_check_anim_frame_in_range(arg0, val04) || obj_check_anim_frame_in_range(arg1, val04)) { - PlaySound2(sound); + if (cur_obj_check_anim_frame_in_range(arg0, val04) || cur_obj_check_anim_frame_in_range(arg1, val04)) { + cur_obj_play_sound_2(sound); return TRUE; } @@ -642,7 +642,7 @@ static s32 obj_resolve_object_collisions(s32 *targetYaw) { static s32 obj_bounce_off_walls_edges_objects(s32 *targetYaw) { if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { - *targetYaw = obj_reflect_move_angle_off_wall(); + *targetYaw = cur_obj_reflect_move_angle_off_wall(); } else if (o->oMoveFlags & OBJ_MOVE_HIT_EDGE) { *targetYaw = (s16)(o->oMoveAngleYaw + 0x8000); } else if (!obj_resolve_object_collisions(targetYaw)) { @@ -655,7 +655,7 @@ static s32 obj_bounce_off_walls_edges_objects(s32 *targetYaw) { static s32 obj_resolve_collisions_and_turn(s16 targetYaw, s16 turnSpeed) { obj_resolve_object_collisions(NULL); - if (obj_rotate_yaw_toward(targetYaw, turnSpeed)) { + if (cur_obj_rotate_yaw_toward(targetYaw, turnSpeed)) { return FALSE; } else { return TRUE; @@ -670,31 +670,31 @@ static void obj_die_if_health_non_positive(void) { if (o->oHealth <= 0) { if (o->oDeathSound == 0) { - func_802A3034(SOUND_OBJ_DEFAULT_DEATH); + spawn_mist_particles_with_sound(SOUND_OBJ_DEFAULT_DEATH); } else if (o->oDeathSound > 0) { #ifdef VERSION_EU new_var = o->oDeathSound; - func_802A3034(new_var); + spawn_mist_particles_with_sound(new_var); #else - func_802A3034(o->oDeathSound); + spawn_mist_particles_with_sound(o->oDeathSound); #endif } else { - func_802A3004(); + spawn_mist_particles(); } if ((s32)o->oNumLootCoins < 0) { spawn_object(o, MODEL_BLUE_COIN, bhvMrIBlueCoin); } else { - spawn_object_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); + obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); } // This doesn't do anything - spawn_object_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); + obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); if (o->oHealth < 0) { - obj_hide(); - obj_become_intangible(); + cur_obj_hide(); + cur_obj_become_intangible(); } else { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } } } @@ -721,11 +721,11 @@ static void obj_set_knockback_action(s32 attackType) { } o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; - o->oMoveAngleYaw = angle_to_object(gMarioObject, o); + o->oMoveAngleYaw = obj_angle_to_object(gMarioObject, o); } static void obj_set_squished_action(void) { - PlaySound2(SOUND_OBJ_STOMPED); + cur_obj_play_sound_2(SOUND_OBJ_STOMPED); o->oAction = OBJ_ACT_SQUISHED; } @@ -738,9 +738,9 @@ static s32 obj_die_if_above_lava_and_health_non_positive(void) { } else if (!(o->oMoveFlags & OBJ_MOVE_ABOVE_LAVA)) { if (o->oMoveFlags & OBJ_MOVE_ENTERED_WATER) { if (o->oWallHitboxRadius < 200.0f) { - PlaySound2(SOUND_OBJ_DIVING_INTO_WATER); + cur_obj_play_sound_2(SOUND_OBJ_DIVING_INTO_WATER); } else { - PlaySound2(SOUND_OBJ_DIVING_IN_WATER); + cur_obj_play_sound_2(SOUND_OBJ_DIVING_IN_WATER); } } return FALSE; @@ -754,7 +754,7 @@ static s32 obj_handle_attacks(struct ObjectHitbox *hitbox, s32 attackedMarioActi u8 *attackHandlers) { s32 attackType; - set_object_hitbox(o, hitbox); + obj_set_hitbox(o, hitbox); //! Die immediately if above lava if (obj_die_if_above_lava_and_health_non_positive()) { @@ -816,10 +816,10 @@ static s32 obj_handle_attacks(struct ObjectHitbox *hitbox, s32 attackedMarioActi } static void obj_act_knockback(UNUSED f32 baseScale) { - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->header.gfx.unk38.curAnim != NULL) { - func_8029F728(); + cur_obj_extend_animation_if_at_end(); } //! Dies immediately if above lava @@ -829,16 +829,16 @@ static void obj_act_knockback(UNUSED f32 baseScale) { obj_die_if_health_non_positive(); } - obj_move_standard(-78); + cur_obj_move_standard(-78); } static void obj_act_squished(f32 baseScale) { f32 targetScaleY = baseScale * 0.3f; - obj_update_floor_and_walls(); + cur_obj_update_floor_and_walls(); if (o->header.gfx.unk38.curAnim != NULL) { - func_8029F728(); + cur_obj_extend_animation_if_at_end(); } if (approach_f32_ptr(&o->header.gfx.scale[1], targetScaleY, baseScale * 0.14f)) { @@ -850,14 +850,14 @@ static void obj_act_squished(f32 baseScale) { } o->oForwardVel = 0.0f; - obj_move_standard(-78); + cur_obj_move_standard(-78); } static s32 obj_update_standard_actions(f32 scale) { if (o->oAction < 100) { return TRUE; } else { - obj_become_intangible(); + cur_obj_become_intangible(); switch (o->oAction) { case OBJ_ACT_HORIZONTAL_KNOCKBACK: @@ -877,7 +877,7 @@ static s32 obj_update_standard_actions(f32 scale) { static s32 obj_check_attacks(struct ObjectHitbox *hitbox, s32 attackedMarioAction) { s32 attackType; - set_object_hitbox(o, hitbox); + obj_set_hitbox(o, hitbox); //! Dies immediately if above lava if (obj_die_if_above_lava_and_health_non_positive()) { @@ -901,15 +901,15 @@ static s32 obj_check_attacks(struct ObjectHitbox *hitbox, s32 attackedMarioActio } static s32 obj_move_for_one_second(s32 endAction) { - obj_update_floor_and_walls(); - func_8029F728(); + cur_obj_update_floor_and_walls(); + cur_obj_extend_animation_if_at_end(); if (o->oTimer > 30) { o->oAction = endAction; return TRUE; } - obj_move_standard(-78); + cur_obj_move_standard(-78); return FALSE; } diff --git a/src/game/object_collision.c b/src/game/object_collision.c index f66fb35f..5c83526a 100644 --- a/src/game/object_collision.c +++ b/src/game/object_collision.c @@ -7,7 +7,7 @@ #include "object_list_processor.h" #include "interaction.h" -struct Object *Unknown802C8460(struct Object *a) { +struct Object *debug_print_obj_collision(struct Object *a) { struct Object *sp24; UNUSED s32 unused; s32 i; @@ -22,7 +22,7 @@ struct Object *Unknown802C8460(struct Object *a) { return NULL; } -int func_802C8504(struct Object *a, struct Object *b) { +int detect_object_hitbox_overlap(struct Object *a, struct Object *b) { f32 sp3C = a->oPosY - a->hitboxDownOffset; f32 sp38 = b->oPosY - b->hitboxDownOffset; f32 dx = a->oPosX - b->oPosX; @@ -59,7 +59,7 @@ int func_802C8504(struct Object *a, struct Object *b) { //! no return value } -int func_802C870C(struct Object *a, struct Object *b) { +int detect_object_hurtbox_overlap(struct Object *a, struct Object *b) { f32 sp3C = a->oPosY - a->hitboxDownOffset; f32 sp38 = b->oPosY - b->hitboxDownOffset; f32 sp34 = a->oPosX - b->oPosX; @@ -91,7 +91,7 @@ int func_802C870C(struct Object *a, struct Object *b) { //! no return value } -void func_802C88A8(struct Object *a) { +void clear_object_collision(struct Object *a) { struct Object *sp4 = (struct Object *) a->header.next; while (sp4 != a) { @@ -104,12 +104,12 @@ void func_802C88A8(struct Object *a) { } } -void func_802C8918(struct Object *a, struct Object *b, struct Object *c) { +void check_collision_in_list(struct Object *a, struct Object *b, struct Object *c) { if (a->oIntangibleTimer == 0) { while (b != c) { if (b->oIntangibleTimer == 0) { - if (func_802C8504(a, b) && b->hurtboxRadius != 0.0f) { - func_802C870C(a, b); + if (detect_object_hitbox_overlap(a, b) && b->hurtboxRadius != 0.0f) { + detect_object_hurtbox_overlap(a, b); } } b = (struct Object *) b->header.next; @@ -117,50 +117,50 @@ void func_802C8918(struct Object *a, struct Object *b, struct Object *c) { } } -void func_802C89CC(void) { +void check_player_object_collision(void) { struct Object *sp1C = (struct Object *) &gObjectLists[OBJ_LIST_PLAYER]; struct Object *sp18 = (struct Object *) sp1C->header.next; while (sp18 != sp1C) { - func_802C8918(sp18, (struct Object *) sp18->header.next, sp1C); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_POLELIKE].next, + check_collision_in_list(sp18, (struct Object *) sp18->header.next, sp1C); + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_POLELIKE].next, (struct Object *) &gObjectLists[OBJ_LIST_POLELIKE]); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_LEVEL].next, + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_LEVEL].next, (struct Object *) &gObjectLists[OBJ_LIST_LEVEL]); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_GENACTOR].next, + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_GENACTOR].next, (struct Object *) &gObjectLists[OBJ_LIST_GENACTOR]); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_PUSHABLE].next, + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_PUSHABLE].next, (struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_SURFACE].next, + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_SURFACE].next, (struct Object *) &gObjectLists[OBJ_LIST_SURFACE]); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_DESTRUCTIVE].next, + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_DESTRUCTIVE].next, (struct Object *) &gObjectLists[OBJ_LIST_DESTRUCTIVE]); sp18 = (struct Object *) sp18->header.next; } } -void func_802C8AD4(void) { +void check_pushable_object_collision(void) { struct Object *sp1C = (struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]; struct Object *sp18 = (struct Object *) sp1C->header.next; while (sp18 != sp1C) { - func_802C8918(sp18, (struct Object *) sp18->header.next, sp1C); + check_collision_in_list(sp18, (struct Object *) sp18->header.next, sp1C); sp18 = (struct Object *) sp18->header.next; } } -void func_802C8B50(void) { +void check_destructive_object_collision(void) { struct Object *sp1C = (struct Object *) &gObjectLists[OBJ_LIST_DESTRUCTIVE]; struct Object *sp18 = (struct Object *) sp1C->header.next; while (sp18 != sp1C) { if (sp18->oDistanceToMario < 2000.0f && !(sp18->activeFlags & ACTIVE_FLAG_UNK9)) { - func_802C8918(sp18, (struct Object *) sp18->header.next, sp1C); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_GENACTOR].next, + check_collision_in_list(sp18, (struct Object *) sp18->header.next, sp1C); + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_GENACTOR].next, (struct Object *) &gObjectLists[OBJ_LIST_GENACTOR]); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_PUSHABLE].next, + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_PUSHABLE].next, (struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]); - func_802C8918(sp18, (struct Object *) gObjectLists[OBJ_LIST_SURFACE].next, + check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_SURFACE].next, (struct Object *) &gObjectLists[OBJ_LIST_SURFACE]); } sp18 = (struct Object *) sp18->header.next; @@ -168,14 +168,14 @@ void func_802C8B50(void) { } void detect_object_collisions(void) { - func_802C88A8((struct Object *) &gObjectLists[OBJ_LIST_POLELIKE]); - func_802C88A8((struct Object *) &gObjectLists[OBJ_LIST_PLAYER]); - func_802C88A8((struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]); - func_802C88A8((struct Object *) &gObjectLists[OBJ_LIST_GENACTOR]); - func_802C88A8((struct Object *) &gObjectLists[OBJ_LIST_LEVEL]); - func_802C88A8((struct Object *) &gObjectLists[OBJ_LIST_SURFACE]); - func_802C88A8((struct Object *) &gObjectLists[OBJ_LIST_DESTRUCTIVE]); - func_802C89CC(); - func_802C8B50(); - func_802C8AD4(); + clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_POLELIKE]); + clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_PLAYER]); + clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]); + clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_GENACTOR]); + clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_LEVEL]); + clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_SURFACE]); + clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_DESTRUCTIVE]); + check_player_object_collision(); + check_destructive_object_collision(); + check_pushable_object_collision(); } diff --git a/src/game/object_collision.h b/src/game/object_collision.h index 842f0845..0ecacab1 100644 --- a/src/game/object_collision.h +++ b/src/game/object_collision.h @@ -3,14 +3,14 @@ #include "types.h" -// extern ? Unknown802C8460(?); -// extern ? func_802C8504(?); -// extern ? func_802C870C(?); -// extern ? func_802C88A8(?); -// extern ? func_802C8918(?); -// extern ? func_802C89CC(?); -// extern ? func_802C8AD4(?); -// extern ? func_802C8B50(?); +// extern ? debug_print_obj_collision(?); +// extern ? detect_object_hitbox_overlap(?); +// extern ? detect_object_hurtbox_overlap(?); +// extern ? clear_object_collision(?); +// extern ? check_collision_in_list(?); +// extern ? check_player_object_collision(?); +// extern ? check_pushable_object_collision(?); +// extern ? check_destructive_object_collision(?); extern void detect_object_collisions(void); #endif /* _OBJECT_COLLISION_H */ diff --git a/src/game/object_helpers.c b/src/game/object_helpers.c index 838360da..4829858f 100644 --- a/src/game/object_helpers.c +++ b/src/game/object_helpers.c @@ -36,35 +36,35 @@ static s8 sLevelsWithRooms[] = { LEVEL_BBH, LEVEL_CASTLE, LEVEL_HMC, -1 }; s32 sGrabReleaseState; // These can be static: -extern void func_8029D704(Mat4, Mat4, Mat4); -extern void func_8029EA0C(struct Object *); -extern void translate_object_local(struct Object *, s16, s16); -extern void copy_object_pos(struct Object *, struct Object *); -extern void copy_object_angle(struct Object *, struct Object *); -extern struct Object *obj_find_nearest_object_with_behavior(const BehaviorScript *, f32 *); -extern void obj_move_y(f32, f32, f32); +extern void create_transformation_from_matrices(Mat4, Mat4, Mat4); +extern void obj_set_gfx_pos_from_pos(struct Object *); +extern void obj_translate_local(struct Object *, s16, s16); +extern void obj_copy_pos(struct Object *, struct Object *); +extern void obj_copy_angle(struct Object *, struct Object *); +extern struct Object *cur_obj_find_nearest_object_with_behavior(const BehaviorScript *, f32 *); +extern void cur_obj_move_y(f32, f32, f32); static s32 clear_move_flag(u32 *, s32); -extern void func_802AA618(s32, s32, f32); +extern void spawn_mist_particles_variable(s32, s32, f32); extern void spawn_triangle_break_particles(s32, s32, f32, s32); #define o gCurrentObject -Gfx *Geo18_8029D890(s32 run, UNUSED struct GraphNode *node, f32 mtx[4][4]) { +Gfx *geo_update_projectile_pos_from_parent(s32 run, UNUSED struct GraphNode *node, f32 mtx[4][4]) { Mat4 sp20; struct Object *sp1C; if (run == TRUE) { sp1C = (struct Object *) gCurGraphNodeObject; // TODO: change global type to Object pointer if (sp1C->prevObj) { - func_8029D704(sp20, mtx, gCurGraphNodeCamera->matrixPtr); - func_8029D558(sp20, sp1C->prevObj); - func_8029EA0C(sp1C->prevObj); + create_transformation_from_matrices(sp20, mtx, gCurGraphNodeCamera->matrixPtr); + obj_update_pos_from_parent_transformation(sp20, sp1C->prevObj); + obj_set_gfx_pos_from_pos(sp1C->prevObj); } } return NULL; } -Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED void *context) { +Gfx *geo_update_layer_transparency(s32 run, struct GraphNode *node, UNUSED void *context) { Gfx *sp3C, *sp38; struct Object *sp34; struct GraphNodeGenerated *sp30; @@ -211,7 +211,7 @@ Gfx *geo_switch_area(s32 run, struct GraphNode *node) { return NULL; } -void func_8029D558(Mat4 a0, struct Object *a1) { +void obj_update_pos_from_parent_transformation(Mat4 a0, struct Object *a1) { f32 spC, sp8, sp4; spC = a1->oParentRelativePosX; @@ -223,7 +223,7 @@ void func_8029D558(Mat4 a0, struct Object *a1) { a1->oPosZ = spC * a0[0][2] + sp8 * a0[1][2] + sp4 * a0[2][2] + a0[3][2]; } -void apply_object_scale_to_matrix(struct Object *obj, Mat4 dst, Mat4 src) { +void obj_apply_scale_to_matrix(struct Object *obj, Mat4 dst, Mat4 src) { dst[0][0] = src[0][0] * obj->header.gfx.scale[0]; dst[1][0] = src[1][0] * obj->header.gfx.scale[1]; dst[2][0] = src[2][0] * obj->header.gfx.scale[2]; @@ -245,7 +245,7 @@ void apply_object_scale_to_matrix(struct Object *obj, Mat4 dst, Mat4 src) { dst[3][3] = src[3][3]; } -void func_8029D704(Mat4 a0, Mat4 a1, Mat4 a2) { +void create_transformation_from_matrices(Mat4 a0, Mat4 a1, Mat4 a2) { f32 spC, sp8, sp4; spC = a2[3][0] * a2[0][0] + a2[3][1] * a2[0][1] + a2[3][2] * a2[0][2]; @@ -274,7 +274,7 @@ void func_8029D704(Mat4 a0, Mat4 a1, Mat4 a2) { a0[3][3] = 1.0f; } -void set_object_held_state(struct Object *obj, const BehaviorScript *heldBehavior) { +void obj_set_held_state(struct Object *obj, const BehaviorScript *heldBehavior) { obj->parentObj = o; if (obj->oFlags & OBJ_FLAG_HOLDABLE) { @@ -310,7 +310,7 @@ f32 dist_between_objects(struct Object *obj1, struct Object *obj2) { return sqrtf(dx * dx + dy * dy + dz * dz); } -void obj_forward_vel_approach_upward(f32 target, f32 increment) { +void cur_obj_forward_vel_approach_upward(f32 target, f32 increment) { if (o->oForwardVel >= target) { o->oForwardVel = target; } else { @@ -378,7 +378,7 @@ s16 approach_s16_symmetric(s16 value, s16 target, s16 increment) { return value; } -s32 obj_rotate_yaw_toward(s16 target, s16 increment) { +s32 cur_obj_rotate_yaw_toward(s16 target, s16 increment) { s16 startYaw; startYaw = (s16) o->oMoveAngleYaw; @@ -391,7 +391,7 @@ s32 obj_rotate_yaw_toward(s16 target, s16 increment) { } } -s16 angle_to_object(struct Object *obj1, struct Object *obj2) { +s16 obj_angle_to_object(struct Object *obj1, struct Object *obj2) { f32 z1, x1, z2, x2; s16 angle; @@ -436,26 +436,26 @@ s16 obj_turn_toward_object(struct Object *obj, struct Object *target, s16 angleI return targetAngle; } -void set_object_parent_relative_pos(struct Object *obj, s16 relX, s16 relY, s16 relZ) { +void obj_set_parent_relative_pos(struct Object *obj, s16 relX, s16 relY, s16 relZ) { obj->oParentRelativePosX = relX; obj->oParentRelativePosY = relY; obj->oParentRelativePosZ = relZ; } -void set_object_pos(struct Object *obj, s16 x, s16 y, s16 z) { +void obj_set_pos(struct Object *obj, s16 x, s16 y, s16 z) { obj->oPosX = x; obj->oPosY = y; obj->oPosZ = z; } -void set_object_angle(struct Object *a0, s16 pitch, s16 yaw, s16 roll) { - a0->oFaceAnglePitch = pitch; - a0->oFaceAngleYaw = yaw; - a0->oFaceAngleRoll = roll; +void obj_set_angle(struct Object *obj, s16 pitch, s16 yaw, s16 roll) { + obj->oFaceAnglePitch = pitch; + obj->oFaceAngleYaw = yaw; + obj->oFaceAngleRoll = roll; - a0->oMoveAnglePitch = pitch; - a0->oMoveAngleYaw = yaw; - a0->oMoveAngleRoll = roll; + obj->oMoveAnglePitch = pitch; + obj->oMoveAngleYaw = yaw; + obj->oMoveAngleRoll = roll; } /* @@ -466,8 +466,8 @@ struct Object *spawn_object_abs_with_rot(struct Object *parent, s16 uselessArg, s16 x, s16 y, s16 z, s16 rx, s16 ry, s16 rz) { // 'uselessArg' is unused in the function spawn_object_at_origin() struct Object *newObj = spawn_object_at_origin(parent, uselessArg, model, behavior); - set_object_pos(newObj, x, y, z); - set_object_angle(newObj, rx, ry, rz); + obj_set_pos(newObj, x, y, z); + obj_set_angle(newObj, rx, ry, rz); return newObj; } @@ -482,53 +482,53 @@ struct Object *spawn_object_rel_with_rot(struct Object *parent, u32 model, s16 yOff, s16 zOff, s16 rx, s16 ry, UNUSED s16 rz) { struct Object *newObj = spawn_object_at_origin(parent, 0, model, behavior); newObj->oFlags |= OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT; - set_object_parent_relative_pos(newObj, xOff, yOff, zOff); - set_object_angle(newObj, rx, ry, zOff); // Nice typo you got there Nintendo. + obj_set_parent_relative_pos(newObj, xOff, yOff, zOff); + obj_set_angle(newObj, rx, ry, zOff); // Nice typo you got there Nintendo. return newObj; } -struct Object *Unknown8029E330(struct Object *sp20, s32 model, const BehaviorScript *sp28) { +struct Object *spawn_obj_with_transform_flags(struct Object *sp20, s32 model, const BehaviorScript *sp28) { struct Object *sp1C = spawn_object(sp20, model, sp28); sp1C->oFlags |= OBJ_FLAG_0020 | OBJ_FLAG_0800; return sp1C; } -struct Object *spawn_water_splash(struct Object *parent, struct WaterSplashParams *params) { +struct Object *spawn_water_droplet(struct Object *parent, struct WaterDropletParams *params) { f32 randomScale; struct Object *newObj = spawn_object(parent, params->model, params->behavior); - if (params->flags & WATER_SPLASH_FLAG_RAND_ANGLE) { + if (params->flags & WATER_DROPLET_FLAG_RAND_ANGLE) { newObj->oMoveAngleYaw = RandomU16(); } - if (params->flags & WATER_SPLASH_FLAG_RAND_ANGLE_INCR_PLUS_8000) { + if (params->flags & WATER_DROPLET_FLAG_RAND_ANGLE_INCR_PLUS_8000) { newObj->oMoveAngleYaw = (s16)(newObj->oMoveAngleYaw + 0x8000) + (s16) random_f32_around_zero(params->moveAngleRange); } - if (params->flags & WATER_SPLASH_FLAG_RAND_ANGLE_INCR) { + if (params->flags & WATER_DROPLET_FLAG_RAND_ANGLE_INCR) { newObj->oMoveAngleYaw = (s16) newObj->oMoveAngleYaw + (s16) random_f32_around_zero(params->moveAngleRange); } - if (params->flags & WATER_SPLASH_FLAG_SET_Y_TO_WATER_LEVEL) { + if (params->flags & WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL) { newObj->oPosY = find_water_level(newObj->oPosX, newObj->oPosZ); } - if (params->flags & WATER_SPLASH_FLAG_RAND_OFFSET_XZ) { - translate_object_xz_random(newObj, params->moveRange); + if (params->flags & WATER_DROPLET_FLAG_RAND_OFFSET_XZ) { + obj_translate_xz_random(newObj, params->moveRange); } - if (params->flags & WATER_SPLASH_FLAG_RAND_OFFSET_XYZ) { - translate_object_xyz_random(newObj, params->moveRange); + if (params->flags & WATER_DROPLET_FLAG_RAND_OFFSET_XYZ) { + obj_translate_xyz_random(newObj, params->moveRange); } newObj->oForwardVel = RandomFloat() * params->randForwardVelScale + params->randForwardVelOffset; newObj->oVelY = RandomFloat() * params->randYVelScale + params->randYVelOffset; randomScale = RandomFloat() * params->randSizeScale + params->randSizeOffset; - scale_object(newObj, randomScale); + obj_scale(newObj, randomScale); return newObj; } @@ -555,7 +555,7 @@ struct Object *spawn_object(struct Object *parent, s32 model, const BehaviorScri struct Object *obj; obj = spawn_object_at_origin(parent, 0, model, behavior); - copy_object_pos_and_angle(obj, parent); + obj_copy_pos_and_angle(obj, parent); return obj; } @@ -567,7 +567,7 @@ struct Object *try_to_spawn_object(s16 offsetY, f32 scale, struct Object *parent if (gFreeObjectList.next != NULL) { obj = spawn_object(parent, model, behavior); obj->oPosY += offsetY; - scale_object(obj, scale); + obj_scale(obj, scale); return obj; } else { return NULL; @@ -578,15 +578,15 @@ struct Object *spawn_object_with_scale(struct Object *parent, s32 model, const B struct Object *obj; obj = spawn_object_at_origin(parent, 0, model, behavior); - copy_object_pos_and_angle(obj, parent); - scale_object(obj, scale); + obj_copy_pos_and_angle(obj, parent); + obj_scale(obj, scale); return obj; } -static void build_relative_object_transform(struct Object *obj) { - build_object_transform_from_pos_and_angle(obj, O_PARENT_RELATIVE_POS_INDEX, O_FACE_ANGLE_INDEX); - translate_object_local(obj, O_POS_INDEX, O_PARENT_RELATIVE_POS_INDEX); +static void obj_build_relative_transform(struct Object *obj) { + obj_build_transform_from_pos_and_angle(obj, O_PARENT_RELATIVE_POS_INDEX, O_FACE_ANGLE_INDEX); + obj_translate_local(obj, O_POS_INDEX, O_PARENT_RELATIVE_POS_INDEX); } struct Object *spawn_object_relative(s16 behaviorParam, s16 relativePosX, s16 relativePosY, @@ -594,9 +594,9 @@ struct Object *spawn_object_relative(s16 behaviorParam, s16 relativePosX, s16 re const BehaviorScript *behavior) { struct Object *obj = spawn_object_at_origin(parent, 0, model, behavior); - copy_object_pos_and_angle(obj, parent); - set_object_parent_relative_pos(obj, relativePosX, relativePosY, relativePosZ); - build_relative_object_transform(obj); + obj_copy_pos_and_angle(obj, parent); + obj_set_parent_relative_pos(obj, relativePosX, relativePosY, relativePosZ); + obj_build_relative_transform(obj); obj->oBehParams2ndByte = behaviorParam; obj->oBehParams = (behaviorParam & 0xFF) << 16; @@ -611,33 +611,33 @@ struct Object *spawn_object_relative_with_scale(s16 behaviorParam, s16 relativeP obj = spawn_object_relative(behaviorParam, relativePosX, relativePosY, relativePosZ, parent, model, behavior); - scale_object(obj, scale); + obj_scale(obj, scale); return obj; } -void obj_move_using_vel(void) { +void cur_obj_move_using_vel(void) { o->oPosX += o->oVelX; o->oPosY += o->oVelY; o->oPosZ += o->oVelZ; } -void copy_object_graph_y_offset(struct Object *dst, struct Object *src) { +void obj_copy_graph_y_offset(struct Object *dst, struct Object *src) { dst->oGraphYOffset = src->oGraphYOffset; } -void copy_object_pos_and_angle(struct Object *dst, struct Object *src) { - copy_object_pos(dst, src); - copy_object_angle(dst, src); +void obj_copy_pos_and_angle(struct Object *dst, struct Object *src) { + obj_copy_pos(dst, src); + obj_copy_angle(dst, src); } -void copy_object_pos(struct Object *dst, struct Object *src) { +void obj_copy_pos(struct Object *dst, struct Object *src) { dst->oPosX = src->oPosX; dst->oPosY = src->oPosY; dst->oPosZ = src->oPosZ; } -void copy_object_angle(struct Object *dst, struct Object *src) { +void obj_copy_angle(struct Object *dst, struct Object *src) { dst->oMoveAnglePitch = src->oMoveAnglePitch; dst->oMoveAngleYaw = src->oMoveAngleYaw; dst->oMoveAngleRoll = src->oMoveAngleRoll; @@ -647,17 +647,15 @@ void copy_object_angle(struct Object *dst, struct Object *src) { dst->oFaceAngleRoll = src->oFaceAngleRoll; } -void func_8029EA0C(struct Object *a0) { - a0->header.gfx.pos[0] = a0->oPosX; - a0->header.gfx.pos[1] = a0->oPosY; - a0->header.gfx.pos[2] = a0->oPosZ; +void obj_set_gfx_pos_from_pos(struct Object *obj) { + obj->header.gfx.pos[0] = obj->oPosX; + obj->header.gfx.pos[1] = obj->oPosY; + obj->header.gfx.pos[2] = obj->oPosZ; } -void Unknown8029EA34(struct Object *sp20, u32 sp24) { - struct Animation **sp1C; - - sp1C = o->oAnimations; - geo_obj_init_animation(&sp20->header.gfx, sp24 + sp1C); +void obj_init_animation(struct Object *obj, s32 animIndex) { + struct Animation **anims = o->oAnimations; + geo_obj_init_animation(&obj->header.gfx, &anims[animIndex]); } /** @@ -690,7 +688,7 @@ void linear_mtxf_transpose_mul_vec3f(Mat4 m, Vec3f dst, Vec3f v) { } } -void apply_scale_to_object_transform(struct Object *obj) { +void obj_apply_scale_to_transform(struct Object *obj) { f32 scaleX, scaleY, scaleZ; scaleX = obj->header.gfx.scale[0]; @@ -710,82 +708,83 @@ void apply_scale_to_object_transform(struct Object *obj) { obj->transform[2][2] *= scaleZ; } -void copy_object_scale(struct Object *dst, struct Object *src) { +void obj_copy_scale(struct Object *dst, struct Object *src) { dst->header.gfx.scale[0] = src->header.gfx.scale[0]; dst->header.gfx.scale[1] = src->header.gfx.scale[1]; dst->header.gfx.scale[2] = src->header.gfx.scale[2]; } -void scale_object_xyz(struct Object *obj, f32 xScale, f32 yScale, f32 zScale) { +void obj_scale_xyz(struct Object *obj, f32 xScale, f32 yScale, f32 zScale) { obj->header.gfx.scale[0] = xScale; obj->header.gfx.scale[1] = yScale; obj->header.gfx.scale[2] = zScale; } -void scale_object(struct Object *obj, f32 scale) { +void obj_scale(struct Object *obj, f32 scale) { obj->header.gfx.scale[0] = scale; obj->header.gfx.scale[1] = scale; obj->header.gfx.scale[2] = scale; } -void obj_scale(f32 scale) { +void cur_obj_scale(f32 scale) { o->header.gfx.scale[0] = scale; o->header.gfx.scale[1] = scale; o->header.gfx.scale[2] = scale; } -void SetObjAnimation(s32 arg0) { - struct Animation **sp1C = o->oAnimations; - geo_obj_init_animation(&o->header.gfx, sp1C + arg0); +void cur_obj_init_animation(s32 animIndex) { + struct Animation **anims = o->oAnimations; + geo_obj_init_animation(&o->header.gfx, &anims[animIndex]); } -void set_obj_animation_and_sound_state(s32 arg0) { - struct Animation **sp1C = o->oAnimations; - geo_obj_init_animation(&o->header.gfx, sp1C + arg0); - o->oSoundStateID = arg0; + +void cur_obj_init_animation_with_sound(s32 animIndex) { + struct Animation **anims = o->oAnimations; + geo_obj_init_animation(&o->header.gfx, &anims[animIndex]); + o->oSoundStateID = animIndex; } -void func_8029ED98(u32 a0, f32 a1) { - struct Animation **sp1C = o->oAnimations; - s32 sp18 = (s32)(a1 * 65536.0f); - geo_obj_init_animation_accel(&o->header.gfx, sp1C + a0, sp18); - o->oSoundStateID = a0; +void cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel) { + struct Animation **anims = o->oAnimations; + s32 animAccel = (s32)(accel * 65536.0f); + geo_obj_init_animation_accel(&o->header.gfx, &anims[animIndex], animAccel); + o->oSoundStateID = animIndex; } -void func_8029EE20(struct Object *a0, struct Animation **a1, u32 a2) { - struct Animation **sp1C = a1; - a0->oAnimations = a1; - geo_obj_init_animation(&a0->header.gfx, sp1C + a2); - a0->oSoundStateID = a2; +void obj_init_animation_with_sound(struct Object *obj, struct Animation **animations, s32 animIndex) { + struct Animation **anims = animations; + obj->oAnimations = animations; + geo_obj_init_animation(&obj->header.gfx, &anims[animIndex]); + obj->oSoundStateID = animIndex; } -void obj_enable_rendering_and_become_tangible(struct Object *a0) { - a0->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE; - a0->oIntangibleTimer = 0; +void cur_obj_enable_rendering_and_become_tangible(struct Object *obj) { + obj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE; + obj->oIntangibleTimer = 0; } -void obj_enable_rendering(void) { +void cur_obj_enable_rendering(void) { o->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE; } -void obj_disable_rendering_and_become_intangible(struct Object *a0) { - a0->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE; - a0->oIntangibleTimer = -1; +void cur_obj_disable_rendering_and_become_intangible(struct Object *obj) { + obj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE; + obj->oIntangibleTimer = -1; } -void obj_disable_rendering(void) { +void cur_obj_disable_rendering(void) { o->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE; } -void obj_unhide(void) { +void cur_obj_unhide(void) { o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE; } -void obj_hide(void) { +void cur_obj_hide(void) { o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE; } -void obj_set_pos_relative(struct Object *other, f32 dleft, f32 dy, f32 dforward) { +void cur_obj_set_pos_relative(struct Object *other, f32 dleft, f32 dy, f32 dforward) { f32 facingZ = coss(other->oMoveAngleYaw); f32 facingX = sins(other->oMoveAngleYaw); @@ -799,28 +798,28 @@ void obj_set_pos_relative(struct Object *other, f32 dleft, f32 dy, f32 dforward) o->oPosZ = other->oPosZ + dz; } -void obj_set_pos_relative_to_parent(f32 dleft, f32 dy, f32 dforward) { - obj_set_pos_relative(o->parentObj, dleft, dy, dforward); +void cur_obj_set_pos_relative_to_parent(f32 dleft, f32 dy, f32 dforward) { + cur_obj_set_pos_relative(o->parentObj, dleft, dy, dforward); } -void obj_enable_rendering_2(void) { - obj_enable_rendering(); +void cur_obj_enable_rendering_2(void) { + cur_obj_enable_rendering(); } -void obj_unused_init_on_floor(void) { - obj_enable_rendering(); +void cur_obj_unused_init_on_floor(void) { + cur_obj_enable_rendering(); o->oPosY = find_floor_height(o->oPosX, o->oPosY, o->oPosZ); if (o->oPosY < -10000.0f) { - obj_set_pos_relative_to_parent(0, 0, -70); + cur_obj_set_pos_relative_to_parent(0, 0, -70); o->oPosY = find_floor_height(o->oPosX, o->oPosY, o->oPosZ); } } -void obj_set_facing_to_move_angles(struct Object *a0) { - a0->oFaceAnglePitch = a0->oMoveAnglePitch; - a0->oFaceAngleYaw = a0->oMoveAngleYaw; - a0->oFaceAngleRoll = a0->oMoveAngleRoll; +void obj_set_face_angle_to_move_angle(struct Object *obj) { + obj->oFaceAnglePitch = obj->oMoveAnglePitch; + obj->oFaceAngleYaw = obj->oMoveAngleYaw; + obj->oFaceAngleRoll = obj->oMoveAngleRoll; } u32 get_object_list_from_behavior(const BehaviorScript *behavior) { @@ -837,20 +836,20 @@ u32 get_object_list_from_behavior(const BehaviorScript *behavior) { return objectList; } -struct Object *obj_nearest_object_with_behavior(const BehaviorScript *behavior) { +struct Object *cur_obj_nearest_object_with_behavior(const BehaviorScript *behavior) { struct Object *obj; f32 dist; - obj = obj_find_nearest_object_with_behavior(behavior, &dist); + obj = cur_obj_find_nearest_object_with_behavior(behavior, &dist); return obj; } -f32 obj_dist_to_nearest_object_with_behavior(const BehaviorScript *behavior) { +f32 cur_obj_dist_to_nearest_object_with_behavior(const BehaviorScript *behavior) { struct Object *obj; f32 dist; - obj = obj_find_nearest_object_with_behavior(behavior, &dist); + obj = cur_obj_find_nearest_object_with_behavior(behavior, &dist); if (obj == NULL) { dist = 15000.0f; } @@ -858,7 +857,7 @@ f32 obj_dist_to_nearest_object_with_behavior(const BehaviorScript *behavior) { return dist; } -struct Object *obj_find_nearest_object_with_behavior(const BehaviorScript *behavior, f32 *dist) { +struct Object *cur_obj_find_nearest_object_with_behavior(const BehaviorScript *behavior, f32 *dist) { uintptr_t *behaviorAddr = segmented_to_virtual(behavior); struct Object *closestObj = NULL; struct Object *obj; @@ -926,7 +925,7 @@ s32 count_objects_with_behavior(const BehaviorScript *behavior) { return count; } -struct Object *obj_find_nearby_held_actor(const BehaviorScript *behavior, f32 maxDist) { +struct Object *cur_obj_find_nearby_held_actor(const BehaviorScript *behavior, f32 maxDist) { const BehaviorScript *behaviorAddr = segmented_to_virtual(behavior); struct ObjectNode *listHead; struct Object *obj; @@ -957,18 +956,18 @@ struct Object *obj_find_nearby_held_actor(const BehaviorScript *behavior, f32 ma return foundObj; } -static void obj_reset_timer_and_subaction(void) { +static void cur_obj_reset_timer_and_subaction(void) { o->oTimer = 0; o->oSubAction = 0; } -void obj_change_action(s32 action) { +void cur_obj_change_action(s32 action) { o->oAction = action; o->oPrevAction = action; - obj_reset_timer_and_subaction(); + cur_obj_reset_timer_and_subaction(); } -void func_8029F684(f32 f12, f32 f14) { +void cur_obj_set_vel_from_mario_vel(f32 f12, f32 f14) { f32 sp4 = gMarioStates[0].forwardVel; f32 sp0 = f12 * f14; @@ -979,20 +978,20 @@ void func_8029F684(f32 f12, f32 f14) { } } -BAD_RETURN(s16) func_8029F6F0(void) { +BAD_RETURN(s16) cur_obj_reverse_animation(void) { if (o->header.gfx.unk38.animFrame >= 0) { o->header.gfx.unk38.animFrame--; } } -BAD_RETURN(s32) func_8029F728(void) { +BAD_RETURN(s32) cur_obj_extend_animation_if_at_end(void) { s32 sp4 = o->header.gfx.unk38.animFrame; s32 sp0 = o->header.gfx.unk38.curAnim->unk08 - 2; if (sp4 == sp0) o->header.gfx.unk38.animFrame--; } -s32 func_8029F788(void) { +s32 cur_obj_check_if_near_animation_end(void) { u32 spC = (s32) o->header.gfx.unk38.curAnim->flags; s32 sp8 = o->header.gfx.unk38.animFrame; s32 sp4 = o->header.gfx.unk38.curAnim->unk08 - 2; @@ -1011,7 +1010,7 @@ s32 func_8029F788(void) { return sp0; } -s32 func_8029F828(void) { +s32 cur_obj_check_if_at_animation_end(void) { s32 sp4 = o->header.gfx.unk38.animFrame; s32 sp0 = o->header.gfx.unk38.curAnim->unk08 - 1; @@ -1022,7 +1021,7 @@ s32 func_8029F828(void) { } } -s32 obj_check_anim_frame(s32 frame) { +s32 cur_obj_check_anim_frame(s32 frame) { s32 animFrame = o->header.gfx.unk38.animFrame; if (animFrame == frame) { @@ -1032,7 +1031,7 @@ s32 obj_check_anim_frame(s32 frame) { } } -s32 obj_check_anim_frame_in_range(s32 startFrame, s32 rangeLength) { +s32 cur_obj_check_anim_frame_in_range(s32 startFrame, s32 rangeLength) { s32 animFrame = o->header.gfx.unk38.animFrame; if (animFrame >= startFrame && animFrame < startFrame + rangeLength) { @@ -1042,7 +1041,7 @@ s32 obj_check_anim_frame_in_range(s32 startFrame, s32 rangeLength) { } } -s32 Unknown8029F930(s16 *a0) { +s32 cur_obj_check_frame_prior_current_frame(s16 *a0) { s16 sp6 = o->header.gfx.unk38.animFrame; while (*a0 != -1) { @@ -1072,23 +1071,23 @@ s32 mario_is_dive_sliding(void) { } } -void func_8029FA1C(f32 sp18, s32 sp1C) { +void cur_obj_set_y_vel_and_animation(f32 sp18, s32 sp1C) { o->oVelY = sp18; - set_obj_animation_and_sound_state(sp1C); + cur_obj_init_animation_with_sound(sp1C); } -void func_8029FA5C(s32 sp18, s32 sp1C) { - obj_become_intangible(); - obj_disable_rendering(); +void cur_obj_unrender_and_reset_state(s32 sp18, s32 sp1C) { + cur_obj_become_intangible(); + cur_obj_disable_rendering(); if (sp18 >= 0) { - set_obj_animation_and_sound_state(sp18); + cur_obj_init_animation_with_sound(sp18); } o->oAction = sp1C; } -static void obj_move_after_thrown_or_dropped(f32 forwardVel, f32 velY) { +static void cur_obj_move_after_thrown_or_dropped(f32 forwardVel, f32 velY) { o->oMoveFlags = 0; o->oFloorHeight = find_floor_height(o->oPosX, o->oPosY + 160.0f, o->oPosZ); @@ -1096,7 +1095,7 @@ static void obj_move_after_thrown_or_dropped(f32 forwardVel, f32 velY) { o->oPosY = o->oFloorHeight; } else if (o->oFloorHeight < -10000.0f) { //! OoB failsafe - copy_object_pos(o, gMarioObject); + obj_copy_pos(o, gMarioObject); o->oFloorHeight = find_floor_height(o->oPosX, o->oPosY, o->oPosZ); } @@ -1104,48 +1103,48 @@ static void obj_move_after_thrown_or_dropped(f32 forwardVel, f32 velY) { o->oVelY = velY; if (o->oForwardVel != 0) { - obj_move_y(/*gravity*/ -4.0f, /*bounce*/ -0.1f, /*buoyancy*/ 2.0f); + cur_obj_move_y(/*gravity*/ -4.0f, /*bounce*/ -0.1f, /*buoyancy*/ 2.0f); } } -void obj_get_thrown_or_placed(f32 forwardVel, f32 velY, s32 thrownAction) { +void cur_obj_get_thrown_or_placed(f32 forwardVel, f32 velY, s32 thrownAction) { if (o->behavior == segmented_to_virtual(bhvBowser)) { // Interestingly, when bowser is thrown, he is offset slightly to // mario's right - obj_set_pos_relative_to_parent(-41.684f, 85.859f, 321.577f); + cur_obj_set_pos_relative_to_parent(-41.684f, 85.859f, 321.577f); } else { } - obj_become_tangible(); - obj_enable_rendering(); + cur_obj_become_tangible(); + cur_obj_enable_rendering(); o->oHeldState = HELD_FREE; if ((o->oInteractionSubtype & INT_SUBTYPE_HOLDABLE_NPC) || forwardVel == 0.0f) { - obj_move_after_thrown_or_dropped(0.0f, 0.0f); + cur_obj_move_after_thrown_or_dropped(0.0f, 0.0f); } else { o->oAction = thrownAction; - obj_move_after_thrown_or_dropped(forwardVel, velY); + cur_obj_move_after_thrown_or_dropped(forwardVel, velY); } } -void obj_get_dropped(void) { - obj_become_tangible(); - obj_enable_rendering(); +void cur_obj_get_dropped(void) { + cur_obj_become_tangible(); + cur_obj_enable_rendering(); o->oHeldState = HELD_FREE; - obj_move_after_thrown_or_dropped(0.0f, 0.0f); + cur_obj_move_after_thrown_or_dropped(0.0f, 0.0f); } -void obj_set_model(s32 a0) { - o->header.gfx.sharedChild = gLoadedGraphNodes[a0]; +void cur_obj_set_model(s32 modelID) { + o->header.gfx.sharedChild = gLoadedGraphNodes[modelID]; } void mario_set_flag(s32 flag) { gMarioStates[0].flags |= flag; } -s32 obj_clear_interact_status_flag(s32 flag) { +s32 cur_obj_clear_interact_status_flag(s32 flag) { if (o->oInteractStatus & flag) { o->oInteractStatus &= flag ^ ~(0); return TRUE; @@ -1156,7 +1155,7 @@ s32 obj_clear_interact_status_flag(s32 flag) { /** * Mark an object to be unloaded at the end of the frame. */ -void mark_object_for_deletion(struct Object *obj) { +void obj_mark_for_deletion(struct Object *obj) { //! This clears all activeFlags. Since some of these flags disable behavior, // setting it to 0 could potentially enable unexpected behavior. After an // object is marked for deletion, it still updates on that frame (I think), @@ -1164,32 +1163,32 @@ void mark_object_for_deletion(struct Object *obj) { obj->activeFlags = ACTIVE_FLAGS_DEACTIVATED; } -void obj_disable(void) { - obj_disable_rendering(); - obj_hide(); - obj_become_intangible(); +void cur_obj_disable(void) { + cur_obj_disable_rendering(); + cur_obj_hide(); + cur_obj_become_intangible(); } -void obj_become_intangible(void) { +void cur_obj_become_intangible(void) { // When the timer is negative, the object is intangible and the timer // doesn't count down o->oIntangibleTimer = -1; } -void obj_become_tangible(void) { +void cur_obj_become_tangible(void) { o->oIntangibleTimer = 0; } -void make_object_tangible(struct Object *obj) { +void obj_become_tangible(struct Object *obj) { obj->oIntangibleTimer = 0; } -void obj_update_floor_height(void) { +void cur_obj_update_floor_height(void) { struct Surface *floor; o->oFloorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor); } -struct Surface *obj_update_floor_height_and_get_floor(void) { +struct Surface *cur_obj_update_floor_height_and_get_floor(void) { struct Surface *floor; o->oFloorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor); return floor; @@ -1216,12 +1215,12 @@ static void apply_drag_to_value(f32 *value, f32 dragStrength) { } } -void obj_apply_drag_xz(f32 dragStrength) { +void cur_obj_apply_drag_xz(f32 dragStrength) { apply_drag_to_value(&o->oVelX, dragStrength); apply_drag_to_value(&o->oVelZ, dragStrength); } -static s32 obj_move_xz(f32 steepSlopeNormalY, s32 careAboutEdgesAndSteepSlopes) { +static s32 cur_obj_move_xz(f32 steepSlopeNormalY, s32 careAboutEdgesAndSteepSlopes) { struct Surface *intendedFloor; f32 intendedX = o->oPosX + o->oVelX; @@ -1280,7 +1279,7 @@ static s32 obj_move_xz(f32 steepSlopeNormalY, s32 careAboutEdgesAndSteepSlopes) return FALSE; } -static void obj_move_update_underwater_flags(void) { +static void cur_obj_move_update_underwater_flags(void) { f32 decelY = (f32)(sqrtf(o->oVelY * o->oVelY) * (o->oDragStrength * 7.0f)) / 100.0L; if (o->oVelY > 0) { @@ -1297,7 +1296,7 @@ static void obj_move_update_underwater_flags(void) { } } -static void obj_move_update_ground_air_flags(UNUSED f32 gravity, f32 bounce) { +static void cur_obj_move_update_ground_air_flags(UNUSED f32 gravity, f32 bounce) { o->oMoveFlags &= ~OBJ_MOVE_13; if (o->oPosY < o->oFloorHeight) { @@ -1332,7 +1331,7 @@ static void obj_move_update_ground_air_flags(UNUSED f32 gravity, f32 bounce) { o->oMoveFlags &= ~OBJ_MOVE_MASK_IN_WATER; } -static f32 obj_move_y_and_get_water_level(f32 gravity, f32 buoyancy) { +static f32 cur_obj_move_y_and_get_water_level(f32 gravity, f32 buoyancy) { f32 waterLevel; o->oVelY += gravity + buoyancy; @@ -1350,7 +1349,7 @@ static f32 obj_move_y_and_get_water_level(f32 gravity, f32 buoyancy) { return waterLevel; } -void obj_move_y(f32 gravity, f32 bounce, f32 buoyancy) { +void cur_obj_move_y(f32 gravity, f32 bounce, f32 buoyancy) { f32 waterLevel; o->oMoveFlags &= ~OBJ_MOVE_LEFT_GROUND; @@ -1363,12 +1362,12 @@ void obj_move_y(f32 gravity, f32 bounce, f32 buoyancy) { } if (!(o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER)) { - waterLevel = obj_move_y_and_get_water_level(gravity, 0.0f); + waterLevel = cur_obj_move_y_and_get_water_level(gravity, 0.0f); if (o->oPosY > waterLevel) { //! We only handle floor collision if the object does not enter // water. This allows e.g. coins to clip through floors if they // enter water on the same frame. - obj_move_update_ground_air_flags(gravity, bounce); + cur_obj_move_update_ground_air_flags(gravity, bounce); } else { o->oMoveFlags |= OBJ_MOVE_ENTERED_WATER; o->oMoveFlags &= ~OBJ_MOVE_MASK_ON_GROUND; @@ -1376,9 +1375,9 @@ void obj_move_y(f32 gravity, f32 bounce, f32 buoyancy) { } else { o->oMoveFlags &= ~OBJ_MOVE_ENTERED_WATER; - waterLevel = obj_move_y_and_get_water_level(gravity, buoyancy); + waterLevel = cur_obj_move_y_and_get_water_level(gravity, buoyancy); if (o->oPosY < waterLevel) { - obj_move_update_underwater_flags(); + cur_obj_move_update_underwater_flags(); } else { if (o->oPosY < o->oFloorHeight) { o->oPosY = o->oFloorHeight; @@ -1399,7 +1398,7 @@ void obj_move_y(f32 gravity, f32 bounce, f32 buoyancy) { } } -static void nop_802A0964(void) { +static void stub_obj_helpers_1(void) { } static s32 clear_move_flag(u32 *bitSet, s32 flag) { @@ -1411,7 +1410,7 @@ static s32 clear_move_flag(u32 *bitSet, s32 flag) { } } -void obj_unused_resolve_wall_collisions(f32 offsetY, f32 radius) { +void cur_obj_unused_resolve_wall_collisions(f32 offsetY, f32 radius) { if (radius > 0.1L) { f32_find_wall_collision(&o->oPosX, &o->oPosY, &o->oPosZ, offsetY, radius); } @@ -1431,7 +1430,7 @@ s16 abs_angle_diff(s16 x0, s16 x1) { return diff; } -void obj_move_xz_using_fvel_and_yaw(void) { +void cur_obj_move_xz_using_fvel_and_yaw(void) { o->oVelX = o->oForwardVel * sins(o->oMoveAngleYaw); o->oVelZ = o->oForwardVel * coss(o->oMoveAngleYaw); @@ -1439,7 +1438,7 @@ void obj_move_xz_using_fvel_and_yaw(void) { o->oPosZ += o->oVelZ; } -void obj_move_y_with_terminal_vel(void) { +void cur_obj_move_y_with_terminal_vel(void) { if (o->oVelY < -70.0f) { o->oVelY = -70.0f; } @@ -1447,12 +1446,12 @@ void obj_move_y_with_terminal_vel(void) { o->oPosY += o->oVelY; } -void obj_compute_vel_xz(void) { +void cur_obj_compute_vel_xz(void) { o->oVelX = o->oForwardVel * sins(o->oMoveAngleYaw); o->oVelZ = o->oForwardVel * coss(o->oMoveAngleYaw); } -f32 func_802A0BF4(f32 value, f32 center, f32 zeroThreshold, f32 increment) { +f32 increment_velocity_toward_range(f32 value, f32 center, f32 zeroThreshold, f32 increment) { f32 relative; if ((relative = value - center) > 0) { if (relative < zeroThreshold) { @@ -1469,7 +1468,7 @@ f32 func_802A0BF4(f32 value, f32 center, f32 zeroThreshold, f32 increment) { } } -s32 are_objects_collided(struct Object *obj1, struct Object *obj2) { +s32 obj_check_if_collided_with_object(struct Object *obj1, struct Object *obj2) { s32 i; for (i = 0; i < obj1->numCollidedObjs; i++) { if (obj1->collidedObjs[i] == obj2) { @@ -1480,15 +1479,15 @@ s32 are_objects_collided(struct Object *obj1, struct Object *obj2) { return FALSE; } -void obj_set_behavior(const BehaviorScript *behavior) { +void cur_obj_set_behavior(const BehaviorScript *behavior) { o->behavior = segmented_to_virtual(behavior); } -void set_object_behavior(struct Object *obj, const BehaviorScript *behavior) { +void obj_set_behavior(struct Object *obj, const BehaviorScript *behavior) { obj->behavior = segmented_to_virtual(behavior); } -s32 obj_has_behavior(const BehaviorScript *behavior) { +s32 cur_obj_has_behavior(const BehaviorScript *behavior) { if (o->behavior == segmented_to_virtual(behavior)) { return TRUE; } else { @@ -1496,7 +1495,7 @@ s32 obj_has_behavior(const BehaviorScript *behavior) { } } -s32 object_has_behavior(struct Object *obj, const BehaviorScript *behavior) { +s32 obj_has_behavior(struct Object *obj, const BehaviorScript *behavior) { if (obj->behavior == segmented_to_virtual(behavior)) { return TRUE; } else { @@ -1504,7 +1503,7 @@ s32 object_has_behavior(struct Object *obj, const BehaviorScript *behavior) { } } -f32 obj_lateral_dist_from_mario_to_home(void) { +f32 cur_obj_lateral_dist_from_mario_to_home(void) { f32 dist; f32 dx = o->oHomeX - gMarioObject->oPosX; f32 dz = o->oHomeZ - gMarioObject->oPosZ; @@ -1513,7 +1512,7 @@ f32 obj_lateral_dist_from_mario_to_home(void) { return dist; } -f32 obj_lateral_dist_to_home(void) { +f32 cur_obj_lateral_dist_to_home(void) { f32 dist; f32 dx = o->oHomeX - o->oPosX; f32 dz = o->oHomeZ - o->oPosZ; @@ -1522,7 +1521,7 @@ f32 obj_lateral_dist_to_home(void) { return dist; } -s32 obj_outside_home_square(f32 halfLength) { +s32 cur_obj_outside_home_square(f32 halfLength) { if (o->oHomeX - halfLength > o->oPosX) { return TRUE; } @@ -1542,7 +1541,7 @@ s32 obj_outside_home_square(f32 halfLength) { return 0; } -s32 obj_outside_home_rectangle(f32 minX, f32 maxX, f32 minZ, f32 maxZ) { +s32 cur_obj_outside_home_rectangle(f32 minX, f32 maxX, f32 minZ, f32 maxZ) { if (o->oHomeX + minX > o->oPosX) { return TRUE; } @@ -1562,20 +1561,20 @@ s32 obj_outside_home_rectangle(f32 minX, f32 maxX, f32 minZ, f32 maxZ) { return FALSE; } -void obj_set_pos_to_home(void) { +void cur_obj_set_pos_to_home(void) { o->oPosX = o->oHomeX; o->oPosY = o->oHomeY; o->oPosZ = o->oHomeZ; } -void obj_set_pos_to_home_and_stop(void) { - obj_set_pos_to_home(); +void cur_obj_set_pos_to_home_and_stop(void) { + cur_obj_set_pos_to_home(); o->oForwardVel = 0; o->oVelY = 0; } -void obj_shake_y(f32 amount) { +void cur_obj_shake_y(f32 amount) { //! Technically could cause a bit of drift, but not much if (o->oTimer % 2 == 0) { o->oPosY += amount; @@ -1584,32 +1583,32 @@ void obj_shake_y(f32 amount) { } } -void obj_start_cam_event(UNUSED struct Object *obj, s32 cameraEvent) { +void cur_obj_start_cam_event(UNUSED struct Object *obj, s32 cameraEvent) { gPlayerCameraState->cameraEvent = (s16) cameraEvent; gSecondCameraFocus = o; } -void Unknown802A11E4(UNUSED s32 sp0, UNUSED s32 sp4, f32 sp8) { +void set_mario_interact_hoot_if_in_range(UNUSED s32 sp0, UNUSED s32 sp4, f32 sp8) { if (o->oDistanceToMario < sp8) { gMarioObject->oInteractStatus = 1; } } -void obj_set_billboard(struct Object *a0) { - a0->header.gfx.node.flags |= GRAPH_RENDER_BILLBOARD; +void obj_set_billboard(struct Object *obj) { + obj->header.gfx.node.flags |= GRAPH_RENDER_BILLBOARD; } -void obj_set_hitbox_radius_and_height(f32 radius, f32 height) { +void cur_obj_set_hitbox_radius_and_height(f32 radius, f32 height) { o->hitboxRadius = radius; o->hitboxHeight = height; } -void obj_set_hurtbox_radius_and_height(f32 radius, f32 height) { +void cur_obj_set_hurtbox_radius_and_height(f32 radius, f32 height) { o->hurtboxRadius = radius; o->hurtboxHeight = height; } -static void spawn_object_loot_coins(struct Object *obj, s32 numCoins, f32 sp30, +static void obj_spawn_loot_coins(struct Object *obj, s32 numCoins, f32 sp30, const BehaviorScript *coinBehavior, s16 posJitter, s16 model) { s32 i; @@ -1630,21 +1629,21 @@ static void spawn_object_loot_coins(struct Object *obj, s32 numCoins, f32 sp30, obj->oNumLootCoins--; coin = spawn_object(obj, model, coinBehavior); - translate_object_xz_random(coin, posJitter); + obj_translate_xz_random(coin, posJitter); coin->oPosY = spawnHeight; coin->oCoinUnk110 = sp30; } } -void spawn_object_loot_blue_coins(struct Object *obj, s32 numCoins, f32 sp28, s16 posJitter) { - spawn_object_loot_coins(obj, numCoins, sp28, bhvBlueCoinJumping, posJitter, MODEL_BLUE_COIN); +void obj_spawn_loot_blue_coins(struct Object *obj, s32 numCoins, f32 sp28, s16 posJitter) { + obj_spawn_loot_coins(obj, numCoins, sp28, bhvBlueCoinJumping, posJitter, MODEL_BLUE_COIN); } -void spawn_object_loot_yellow_coins(struct Object *obj, s32 numCoins, f32 sp28) { - spawn_object_loot_coins(obj, numCoins, sp28, bhvSingleCoinGetsSpawned, 0, MODEL_YELLOW_COIN); +void obj_spawn_loot_yellow_coins(struct Object *obj, s32 numCoins, f32 sp28) { + obj_spawn_loot_coins(obj, numCoins, sp28, bhvSingleCoinGetsSpawned, 0, MODEL_YELLOW_COIN); } -void obj_spawn_loot_coin_at_mario_pos(void) { +void cur_obj_spawn_loot_coin_at_mario_pos(void) { struct Object *coin; if (o->oNumLootCoins <= 0) { return; @@ -1655,10 +1654,10 @@ void obj_spawn_loot_coin_at_mario_pos(void) { coin = spawn_object(o, MODEL_YELLOW_COIN, bhvSingleCoinGetsSpawned); coin->oVelY = 30.0f; - copy_object_pos(coin, gMarioObject); + obj_copy_pos(coin, gMarioObject); } -f32 obj_abs_y_dist_to_home(void) { +f32 cur_obj_abs_y_dist_to_home(void) { f32 dist = o->oHomeY - o->oPosY; if (dist < 0) { @@ -1668,7 +1667,7 @@ f32 obj_abs_y_dist_to_home(void) { return dist; } -s32 Unknown802A1548() { +s32 cur_obj_advance_looping_anim() { s32 spC = o->header.gfx.unk38.animFrame; s32 sp8 = o->header.gfx.unk38.curAnim->unk08; s32 sp4; @@ -1686,7 +1685,7 @@ s32 Unknown802A1548() { return sp4; } -static s32 obj_detect_steep_floor(s16 steepAngleDegrees) { +static s32 cur_obj_detect_steep_floor(s16 steepAngleDegrees) { struct Surface *intendedFloor; f32 intendedX, intendedFloorHeight, intendedZ; f32 deltaFloorHeight; @@ -1713,7 +1712,7 @@ static s32 obj_detect_steep_floor(s16 steepAngleDegrees) { return 0; } -s32 obj_resolve_wall_collisions(void) { +s32 cur_obj_resolve_wall_collisions(void) { s32 numCollisions; struct Surface *wall; struct WallCollisionData collisionData; @@ -1747,8 +1746,8 @@ s32 obj_resolve_wall_collisions(void) { return 0; } -static void obj_update_floor(void) { - struct Surface *floor = obj_update_floor_height_and_get_floor(); +static void cur_obj_update_floor(void) { + struct Surface *floor = cur_obj_update_floor_height_and_get_floor(); o->oFloor = floor; if (floor != NULL) { @@ -1770,7 +1769,7 @@ static void obj_update_floor(void) { } } -static void obj_update_floor_and_resolve_wall_collisions(s16 steepSlopeDegrees) { +static void cur_obj_update_floor_and_resolve_wall_collisions(s16 steepSlopeDegrees) { #ifdef VERSION_JP o->oMoveFlags &= ~OBJ_MOVE_ABOVE_LAVA; #else @@ -1778,7 +1777,7 @@ static void obj_update_floor_and_resolve_wall_collisions(s16 steepSlopeDegrees) #endif if (o->activeFlags & (ACTIVE_FLAG_FAR_AWAY | ACTIVE_FLAG_IN_DIFFERENT_ROOM)) { - obj_update_floor(); + cur_obj_update_floor(); o->oMoveFlags &= ~OBJ_MOVE_MASK_HIT_WALL_OR_IN_WATER; if (o->oPosY > o->oFloorHeight) { @@ -1786,27 +1785,27 @@ static void obj_update_floor_and_resolve_wall_collisions(s16 steepSlopeDegrees) } } else { o->oMoveFlags &= ~OBJ_MOVE_HIT_WALL; - if (obj_resolve_wall_collisions()) { + if (cur_obj_resolve_wall_collisions()) { o->oMoveFlags |= OBJ_MOVE_HIT_WALL; } - obj_update_floor(); + cur_obj_update_floor(); if (o->oPosY > o->oFloorHeight) { o->oMoveFlags |= OBJ_MOVE_IN_AIR; } - if (obj_detect_steep_floor(steepSlopeDegrees)) { + if (cur_obj_detect_steep_floor(steepSlopeDegrees)) { o->oMoveFlags |= OBJ_MOVE_HIT_WALL; } } } -void obj_update_floor_and_walls(void) { - obj_update_floor_and_resolve_wall_collisions(60); +void cur_obj_update_floor_and_walls(void) { + cur_obj_update_floor_and_resolve_wall_collisions(60); } -void obj_move_standard(s16 steepSlopeAngleDegrees) { +void cur_obj_move_standard(s16 steepSlopeAngleDegrees) { f32 gravity = o->oGravity; f32 bounce = o->oBounce; f32 buoyancy = o->oBuoyancy; @@ -1830,11 +1829,11 @@ void obj_move_standard(s16 steepSlopeAngleDegrees) { steepSlopeNormalY = coss(steepSlopeAngleDegrees * (0x10000 / 360)); - obj_compute_vel_xz(); - obj_apply_drag_xz(dragStrength); + cur_obj_compute_vel_xz(); + cur_obj_apply_drag_xz(dragStrength); - obj_move_xz(steepSlopeNormalY, careAboutEdgesAndSteepSlopes); - obj_move_y(gravity, bounce, buoyancy); + cur_obj_move_xz(steepSlopeNormalY, careAboutEdgesAndSteepSlopes); + cur_obj_move_y(gravity, bounce, buoyancy); if (o->oForwardVel < 0) { negativeSpeed = TRUE; @@ -1846,7 +1845,7 @@ void obj_move_standard(s16 steepSlopeAngleDegrees) { } } -static s32 obj_within_12k_bounds(void) { +static s32 cur_obj_within_12k_bounds(void) { if (o->oPosX < -12000.0f || 12000.0f < o->oPosX) { return FALSE; } @@ -1862,8 +1861,8 @@ static s32 obj_within_12k_bounds(void) { return TRUE; } -void obj_move_using_vel_and_gravity(void) { - if (obj_within_12k_bounds()) { +void cur_obj_move_using_vel_and_gravity(void) { + if (cur_obj_within_12k_bounds()) { o->oPosX += o->oVelX; o->oPosZ += o->oVelZ; o->oVelY += o->oGravity; //! No terminal velocity @@ -1871,12 +1870,12 @@ void obj_move_using_vel_and_gravity(void) { } } -void obj_move_using_fvel_and_gravity(void) { - obj_compute_vel_xz(); - obj_move_using_vel_and_gravity(); //! No terminal velocity +void cur_obj_move_using_fvel_and_gravity(void) { + cur_obj_compute_vel_xz(); + cur_obj_move_using_vel_and_gravity(); //! No terminal velocity } -void set_object_pos_relative(struct Object *obj, struct Object *other, f32 dleft, f32 dy, +void obj_set_pos_relative(struct Object *obj, struct Object *other, f32 dleft, f32 dy, f32 dforward) { f32 facingZ = coss(other->oMoveAngleYaw); f32 facingX = sins(other->oMoveAngleYaw); @@ -1891,7 +1890,7 @@ void set_object_pos_relative(struct Object *obj, struct Object *other, f32 dleft obj->oPosZ = other->oPosZ + dz; } -s16 obj_angle_to_home(void) { +s16 cur_obj_angle_to_home(void) { s16 angle; f32 dx = o->oHomeX - o->oPosX; f32 dz = o->oHomeZ - o->oPosZ; @@ -1900,7 +1899,7 @@ s16 obj_angle_to_home(void) { return angle; } -void func_802A2008(struct Object *a0, struct Object *a1) { +void obj_set_gfx_pos_at_obj_pos(struct Object *a0, struct Object *a1) { a0->header.gfx.pos[0] = a1->oPosX; a0->header.gfx.pos[1] = a1->oPosY + a1->oGraphYOffset; a0->header.gfx.pos[2] = a1->oPosZ; @@ -1914,7 +1913,7 @@ void func_802A2008(struct Object *a0, struct Object *a1) { * Transform the vector at localTranslateIndex into the object's local * coordinates, and then add it to the vector at posIndex. */ -void translate_object_local(struct Object *obj, s16 posIndex, s16 localTranslateIndex) { +void obj_translate_local(struct Object *obj, s16 posIndex, s16 localTranslateIndex) { f32 dx = obj->rawData.asF32[localTranslateIndex + 0]; f32 dy = obj->rawData.asF32[localTranslateIndex + 1]; f32 dz = obj->rawData.asF32[localTranslateIndex + 2]; @@ -1927,7 +1926,7 @@ void translate_object_local(struct Object *obj, s16 posIndex, s16 localTranslate obj->transform[0][2] * dx + obj->transform[1][2] * dy + obj->transform[2][2] * dz; } -void build_object_transform_from_pos_and_angle(struct Object *obj, s16 posIndex, s16 angleIndex) { +void obj_build_transform_from_pos_and_angle(struct Object *obj, s16 posIndex, s16 angleIndex) { f32 translate[3]; s16 rotation[3]; @@ -1942,24 +1941,24 @@ void build_object_transform_from_pos_and_angle(struct Object *obj, s16 posIndex, mtxf_rotate_zxy_and_translate(obj->transform, translate, rotation); } -void func_802A2270(struct Object *obj) { +void obj_set_throw_matrix_from_transform(struct Object *obj) { if (obj->oFlags & OBJ_FLAG_0020) { - build_object_transform_from_pos_and_angle(obj, O_POS_INDEX, O_FACE_ANGLE_INDEX); - apply_scale_to_object_transform(obj); + obj_build_transform_from_pos_and_angle(obj, O_POS_INDEX, O_FACE_ANGLE_INDEX); + obj_apply_scale_to_transform(obj); } obj->header.gfx.throwMatrix = obj->transform; //! Sets scale of gCurrentObject instead of obj. Not exploitable since this // function is only called with obj = gCurrentObject - obj_scale(1.0f); + cur_obj_scale(1.0f); } -void build_object_transform_relative_to_parent(struct Object *obj) { +void obj_build_transform_relative_to_parent(struct Object *obj) { struct Object *parent = obj->parentObj; - build_object_transform_from_pos_and_angle(obj, O_PARENT_RELATIVE_POS_INDEX, O_FACE_ANGLE_INDEX); - apply_scale_to_object_transform(obj); + obj_build_transform_from_pos_and_angle(obj, O_PARENT_RELATIVE_POS_INDEX, O_FACE_ANGLE_INDEX); + obj_apply_scale_to_transform(obj); mtxf_mul(obj->transform, obj->transform, parent->transform); obj->oPosX = obj->transform[3][0]; @@ -1970,10 +1969,10 @@ void build_object_transform_relative_to_parent(struct Object *obj) { //! Sets scale of gCurrentObject instead of obj. Not exploitable since this // function is only called with obj = gCurrentObject - obj_scale(1.0f); + cur_obj_scale(1.0f); } -void Unknown802A2380(struct Object *a0) { +void obj_create_transform_from_self(struct Object *a0) { a0->oFlags &= ~OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT; a0->oFlags |= OBJ_FLAG_0800; @@ -1982,25 +1981,25 @@ void Unknown802A2380(struct Object *a0) { a0->transform[3][2] = a0->oPosZ; } -void obj_rotate_move_angle_using_vel(void) { +void cur_obj_rotate_move_angle_using_vel(void) { o->oMoveAnglePitch += o->oAngleVelPitch; o->oMoveAngleYaw += o->oAngleVelYaw; o->oMoveAngleRoll += o->oAngleVelRoll; } -void obj_rotate_face_angle_using_vel(void) { +void cur_obj_rotate_face_angle_using_vel(void) { o->oFaceAnglePitch += o->oAngleVelPitch; o->oFaceAngleYaw += o->oAngleVelYaw; o->oFaceAngleRoll += o->oAngleVelRoll; } -void obj_set_face_angle_to_move_angle(void) { +void cur_obj_set_face_angle_to_move_angle(void) { o->oFaceAnglePitch = o->oMoveAnglePitch; o->oFaceAngleYaw = o->oMoveAngleYaw; o->oFaceAngleRoll = o->oMoveAngleRoll; } -s32 obj_follow_path(UNUSED s32 unusedArg) { +s32 cur_obj_follow_path(UNUSED s32 unusedArg) { struct Waypoint *startWaypoint; struct Waypoint *lastWaypoint; struct Waypoint *targetWaypoint; @@ -2064,23 +2063,23 @@ f32 random_f32_around_zero(f32 diameter) { return RandomFloat() * diameter - diameter / 2; } -void scale_object_random(struct Object *obj, f32 rangeLength, f32 minScale) { +void obj_scale_random(struct Object *obj, f32 rangeLength, f32 minScale) { f32 scale = RandomFloat() * rangeLength + minScale; - scale_object_xyz(obj, scale, scale, scale); + obj_scale_xyz(obj, scale, scale, scale); } -void translate_object_xyz_random(struct Object *obj, f32 rangeLength) { +void obj_translate_xyz_random(struct Object *obj, f32 rangeLength) { obj->oPosX += RandomFloat() * rangeLength - rangeLength * 0.5f; obj->oPosY += RandomFloat() * rangeLength - rangeLength * 0.5f; obj->oPosZ += RandomFloat() * rangeLength - rangeLength * 0.5f; } -void translate_object_xz_random(struct Object *obj, f32 rangeLength) { +void obj_translate_xz_random(struct Object *obj, f32 rangeLength) { obj->oPosX += RandomFloat() * rangeLength - rangeLength * 0.5f; obj->oPosZ += RandomFloat() * rangeLength - rangeLength * 0.5f; } -static void func_802A297C(struct Object *a0) { +static void obj_build_vel_from_transform(struct Object *a0) { f32 spC = a0->oUnkC0; f32 sp8 = a0->oUnkBC; f32 sp4 = a0->oForwardVel; @@ -2090,9 +2089,9 @@ static void func_802A297C(struct Object *a0) { a0->oVelZ = a0->transform[0][2] * spC + a0->transform[1][2] * sp8 + a0->transform[2][2] * sp4; } -void func_802A2A38(void) { - build_object_transform_from_pos_and_angle(o, O_PARENT_RELATIVE_POS_INDEX, O_MOVE_ANGLE_INDEX); - func_802A297C(o); +void cur_obj_set_pos_via_transform(void) { + obj_build_transform_from_pos_and_angle(o, O_PARENT_RELATIVE_POS_INDEX, O_MOVE_ANGLE_INDEX); + obj_build_vel_from_transform(o); o->oPosX += o->oVelX; o->oPosY += o->oVelY; o->oPosZ += o->oVelZ; @@ -2157,18 +2156,18 @@ struct Object_test /*0x25C*/ void *respawnInfo; }; -s16 obj_reflect_move_angle_off_wall(void) { +s16 cur_obj_reflect_move_angle_off_wall(void) { s16 angle = ((struct Object_test*)o)->rawData.moving.special.WallAngle - (s16) ((struct Object_test*)o)->rawData.moving.MoveAngleYaw + (s16) ((struct Object_test*)o)->rawData.moving.special.WallAngle +0x8000; return angle; } #else -s16 obj_reflect_move_angle_off_wall(void) { +s16 cur_obj_reflect_move_angle_off_wall(void) { s16 angle = o->oWallAngle - ((s16) o->oMoveAngleYaw - (s16) o->oWallAngle) + 0x8000; return angle; } #endif -void obj_spawn_particles(struct SpawnParticlesInfo *info) { +void cur_obj_spawn_particles(struct SpawnParticlesInfo *info) { struct Object *particle; s32 i; f32 scale; @@ -2199,11 +2198,11 @@ void obj_spawn_particles(struct SpawnParticlesInfo *info) { particle->oForwardVel = RandomFloat() * info->forwardVelRange + info->forwardVelBase; particle->oVelY = RandomFloat() * info->velYRange + info->velYBase; - scale_object_xyz(particle, scale, scale, scale); + obj_scale_xyz(particle, scale, scale, scale); } } -void set_object_hitbox(struct Object *obj, struct ObjectHitbox *hitbox) { +void obj_set_hitbox(struct Object *obj, struct ObjectHitbox *hitbox) { if (!(obj->oFlags & OBJ_FLAG_30)) { obj->oFlags |= OBJ_FLAG_30; @@ -2212,7 +2211,7 @@ void set_object_hitbox(struct Object *obj, struct ObjectHitbox *hitbox) { obj->oHealth = hitbox->health; obj->oNumLootCoins = hitbox->numLootCoins; - obj_become_tangible(); + cur_obj_become_tangible(); } obj->hitboxRadius = obj->header.gfx.scale[0] * hitbox->radius; @@ -2246,7 +2245,7 @@ s32 absi(s32 a0) { } } -s32 obj_wait_then_blink(s32 timeUntilBlinking, s32 numBlinks) { +s32 cur_obj_wait_then_blink(s32 timeUntilBlinking, s32 numBlinks) { s32 done = FALSE; s32 timeBlinking; @@ -2264,7 +2263,7 @@ s32 obj_wait_then_blink(s32 timeUntilBlinking, s32 numBlinks) { return done; } -s32 obj_is_mario_ground_pounding_platform(void) { +s32 cur_obj_is_mario_ground_pounding_platform(void) { if (gMarioObject->platform == o) { if (gMarioStates[0].action == ACT_GROUND_POUND_LAND) { return TRUE; @@ -2274,16 +2273,16 @@ s32 obj_is_mario_ground_pounding_platform(void) { return FALSE; } -void func_802A3004(void) { - func_802AA618(0, 0, 46.0f); +void spawn_mist_particles(void) { + spawn_mist_particles_variable(0, 0, 46.0f); } -void func_802A3034(s32 sp18) { - func_802AA618(0, 0, 46.0f); +void spawn_mist_particles_with_sound(s32 sp18) { + spawn_mist_particles_variable(0, 0, 46.0f); create_sound_spawner(sp18); } -void obj_push_mario_away(f32 radius) { +void cur_obj_push_mario_away(f32 radius) { f32 marioRelX = gMarioObject->oPosX - o->oPosX; f32 marioRelZ = gMarioObject->oPosZ - o->oPosZ; f32 marioDist = sqrtf(sqr(marioRelX) + sqr(marioRelZ)); @@ -2296,7 +2295,7 @@ void obj_push_mario_away(f32 radius) { } } -void obj_push_mario_away_from_cylinder(f32 radius, f32 extentY) { +void cur_obj_push_mario_away_from_cylinder(f32 radius, f32 extentY) { f32 marioRelY = gMarioObject->oPosY - o->oPosY; if (marioRelY < 0) { @@ -2304,33 +2303,33 @@ void obj_push_mario_away_from_cylinder(f32 radius, f32 extentY) { } if (marioRelY < extentY) { - obj_push_mario_away(radius); + cur_obj_push_mario_away(radius); } } -void BehDustSmokeLoop(void) { +void bhv_dust_smoke_loop(void) { o->oPosX += o->oVelX; o->oPosY += o->oVelY; o->oPosZ += o->oVelZ; if (o->oSmokeTimer == 10) { - mark_object_for_deletion(o); + obj_mark_for_deletion(o); } o->oSmokeTimer++; } -static void nop_802A3294(void) { +static void stub_obj_helpers_2(void) { } -s32 func_802A32A4(s8 *a0) { +s32 cur_obj_set_direction_table(s8 *a0) { o->oToxBoxUnk1AC = a0; o->oToxBoxUnk1B0 = 0; return *(s8 *) o->oToxBoxUnk1AC; } -s32 func_802A32E0(void) { +s32 cur_obj_progress_direction_table(void) { s8 spF; s8 *sp8 = o->oToxBoxUnk1AC; s32 sp4 = o->oToxBoxUnk1B0 + 1; @@ -2346,10 +2345,10 @@ s32 func_802A32E0(void) { return spF; } -void nop_802A3380(UNUSED s32 sp0, UNUSED s32 sp4) { +void stub_obj_helpers_3(UNUSED s32 sp0, UNUSED s32 sp4) { } -void func_802A3398(s32 a0, s32 a1, f32 sp10, f32 sp14) { +void cur_obj_scale_over_time(s32 a0, s32 a1, f32 sp10, f32 sp14) { f32 sp4 = sp14 - sp10; f32 sp0 = (f32) o->oTimer / a1; @@ -2366,17 +2365,17 @@ void func_802A3398(s32 a0, s32 a1, f32 sp10, f32 sp14) { } } -void func_802A3470(void) { +void cur_obj_set_pos_to_home_with_debug(void) { o->oPosX = o->oHomeX + gDebugInfo[5][0]; o->oPosY = o->oHomeY + gDebugInfo[5][1]; o->oPosZ = o->oHomeZ + gDebugInfo[5][2]; - obj_scale(gDebugInfo[5][3] / 100.0f + 1.0l); + cur_obj_scale(gDebugInfo[5][3] / 100.0f + 1.0l); } -void nop_802A3544(void) { +void stub_obj_helpers_4(void) { } -s32 obj_is_mario_on_platform(void) { +s32 cur_obj_is_mario_on_platform(void) { if (gMarioObject->platform == o) { return TRUE; } else { @@ -2384,7 +2383,7 @@ s32 obj_is_mario_on_platform(void) { } } -s32 obj_shake_y_until(s32 cycles, s32 amount) { +s32 cur_obj_shake_y_until(s32 cycles, s32 amount) { if (o->oTimer % 2 != 0) { o->oPosY -= amount; } else { @@ -2398,7 +2397,7 @@ s32 obj_shake_y_until(s32 cycles, s32 amount) { } } -s32 func_802A362C(s32 a0) { +s32 cur_obj_move_up_and_down(s32 a0) { if (a0 >= 4 || a0 < 0) { return 1; } @@ -2407,12 +2406,12 @@ s32 func_802A362C(s32 a0) { return 0; } -void obj_call_action_function(void (*actionFunctions[])(void)) { +void cur_obj_call_action_function(void (*actionFunctions[])(void)) { void (*actionFunction)(void) = actionFunctions[o->oAction]; actionFunction(); } -static struct Object *func_802A36D8(s32 sp20, s32 sp24) { +static struct Object *spawn_star_with_no_lvl_exit(s32 sp20, s32 sp24) { struct Object *sp1C = spawn_object(o, MODEL_STAR, bhvSpawnedStarNoLevelExit); sp1C->oSparkleSpawnUnk1B0 = sp24; sp1C->oBehParams = o->oBehParams; @@ -2424,15 +2423,15 @@ static struct Object *func_802A36D8(s32 sp20, s32 sp24) { // old unused initializer for 2d star spawn behavior. // speculation: was 2d spawn handler from spaceworld 1995. // uses behavior parameters not used in the current sparkle code. -void Unknown802A3750(void) { - func_802A36D8(0, 0); +void spawn_base_star_with_no_lvl_exit(void) { + spawn_star_with_no_lvl_exit(0, 0); } -s32 func_802A377C(s32 a0) { +s32 bit_shift_left(s32 a0) { return D_8032F0A4[a0]; } -s32 obj_mario_far_away(void) { +s32 cur_obj_mario_far_away(void) { f32 dx = o->oHomeX - gMarioObject->oPosX; f32 dy = o->oHomeY - gMarioObject->oPosY; f32 dz = o->oHomeZ - gMarioObject->oPosZ; @@ -2445,7 +2444,7 @@ s32 obj_mario_far_away(void) { } } -s32 obj_is_mario_moving_fast_or_in_air(s32 speedThreshold) { +s32 is_mario_moving_fast_or_in_air(s32 speedThreshold) { if (gMarioStates[0].forwardVel > speedThreshold) { return TRUE; } @@ -2457,7 +2456,7 @@ s32 obj_is_mario_moving_fast_or_in_air(s32 speedThreshold) { } } -s32 item_in_array(s8 item, s8 *array) { +s32 is_item_in_array(s8 item, s8 *array) { while (*array != -1) { if (*array == item) { return TRUE; @@ -2469,14 +2468,14 @@ s32 item_in_array(s8 item, s8 *array) { return FALSE; } -static void nop_802A3968(void) { +static void stub_obj_helpers_5(void) { } void bhv_init_room(void) { struct Surface *floor; f32 floorHeight; - if (item_in_array(gCurrLevelNum, sLevelsWithRooms)) { + if (is_item_in_array(gCurrLevelNum, sLevelsWithRooms)) { floorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor); if (floor != NULL) { @@ -2497,7 +2496,7 @@ void bhv_init_room(void) { } } -void obj_enable_rendering_if_mario_in_room(void) { +void cur_obj_enable_rendering_if_mario_in_room(void) { register s32 marioInRoom; if (o->oRoom != -1 && gMarioCurrentRoom != 0) { @@ -2512,21 +2511,21 @@ void obj_enable_rendering_if_mario_in_room(void) { } if (marioInRoom) { - obj_enable_rendering(); + cur_obj_enable_rendering(); o->activeFlags &= ~ACTIVE_FLAG_IN_DIFFERENT_ROOM; gNumRoomedObjectsInMarioRoom++; } else { - obj_disable_rendering(); + cur_obj_disable_rendering(); o->activeFlags |= ACTIVE_FLAG_IN_DIFFERENT_ROOM; gNumRoomedObjectsNotInMarioRoom++; } } } -s32 obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox *hitbox, s32 deathSound, s32 noLootCoins) { +s32 cur_obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox *hitbox, s32 deathSound, s32 noLootCoins) { s32 interacted = FALSE; - set_object_hitbox(o, hitbox); + obj_set_hitbox(o, hitbox); if (noLootCoins) { o->oNumLootCoins = 0; @@ -2534,9 +2533,9 @@ s32 obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox *hitbox, s32 deathSou if (o->oInteractStatus & INT_STATUS_INTERACTED) { if (o->oInteractStatus & INT_STATUS_WAS_ATTACKED) { - func_802A3004(); - spawn_object_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); - mark_object_for_deletion(o); + spawn_mist_particles(); + obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); + obj_mark_for_deletion(o); create_sound_spawner(deathSound); } else { interacted = TRUE; @@ -2547,39 +2546,40 @@ s32 obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox *hitbox, s32 deathSou return interacted; } -void func_802A3C98(f32 sp18, s32 sp1C) { - func_802AA618(0, 0, sp18); + +void obj_explode_and_spawn_coins(f32 sp18, s32 sp1C) { + spawn_mist_particles_variable(0, 0, sp18); spawn_triangle_break_particles(30, 138, 3.0f, 4); - mark_object_for_deletion(o); + obj_mark_for_deletion(o); if (sp1C == 1) { - spawn_object_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); + obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f); } else if (sp1C == 2) { - spawn_object_loot_blue_coins(o, o->oNumLootCoins, 20.0f, 150); + obj_spawn_loot_blue_coins(o, o->oNumLootCoins, 20.0f, 150); } } -void set_object_collision_data(struct Object *obj, const void *segAddr) { +void obj_set_collision_data(struct Object *obj, const void *segAddr) { obj->collisionData = segmented_to_virtual(segAddr); } -void obj_if_hit_wall_bounce_away(void) { +void cur_obj_if_hit_wall_bounce_away(void) { if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { o->oMoveAngleYaw = o->oWallAngle; } } -s32 obj_hide_if_mario_far_away_y(f32 distY) { +s32 cur_obj_hide_if_mario_far_away_y(f32 distY) { if (absf(o->oPosY - gMarioObject->oPosY) < distY) { - obj_unhide(); + cur_obj_unhide(); return FALSE; } else { - obj_hide(); + cur_obj_hide(); return TRUE; } } -Gfx *Geo18_802A45E4(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) { +Gfx *geo_offset_klepto_held_object(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) { if (run == TRUE) { ((struct GraphNodeTranslationRotation *) node->next)->translation[0] = 300; ((struct GraphNodeTranslationRotation *) node->next)->translation[1] = 300; @@ -2589,7 +2589,7 @@ Gfx *Geo18_802A45E4(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) { return NULL; } -s32 Unknown802A3E84(s32 a0, struct GraphNode *a1, UNUSED s32 sp8) { +s32 geo_offset_klepto_debug(s32 a0, struct GraphNode *a1, UNUSED s32 sp8) { if (a0 == 1) { ((struct GraphNode_802A45E4 *) a1->next)->unk18 = gDebugInfo[4][0]; ((struct GraphNode_802A45E4 *) a1->next)->unk1A = gDebugInfo[4][1]; @@ -2602,8 +2602,8 @@ s32 Unknown802A3E84(s32 a0, struct GraphNode *a1, UNUSED s32 sp8) { return 0; } -s32 obj_is_hidden(struct Object *a0) { - if (a0->header.gfx.node.flags & GRAPH_RENDER_INVISIBLE) { +s32 obj_is_hidden(struct Object *obj) { + if (obj->header.gfx.node.flags & GRAPH_RENDER_INVISIBLE) { return TRUE; } else { return FALSE; @@ -2626,13 +2626,13 @@ void clear_time_stop_flags(s32 flag) { gTimeStopState = gTimeStopState & (flag ^ 0xFFFFFFFF); } -s32 func_802A3FF8(f32 radius, f32 height, UNUSED s32 unused) { +s32 cur_obj_can_mario_activate_textbox(f32 radius, f32 height, UNUSED s32 unused) { f32 latDistToMario; UNUSED s16 angleFromMario; if (o->oDistanceToMario < 1500.0f) { latDistToMario = lateral_dist_between_objects(o, gMarioObject); - angleFromMario = angle_to_object(gMarioObject, o); + angleFromMario = obj_angle_to_object(gMarioObject, o); if (latDistToMario < radius && o->oPosY < gMarioObject->oPosY + 160.0f && gMarioObject->oPosY < o->oPosY + height && !(gMarioStates[0].action & ACT_FLAG_AIR) @@ -2644,11 +2644,12 @@ s32 func_802A3FF8(f32 radius, f32 height, UNUSED s32 unused) { return FALSE; } -s32 obj_is_mario_in_range_and_ready_to_speak(f32 radius, f32 height) { - return func_802A3FF8(radius, height, 0x1000); +s32 cur_obj_can_mario_activate_textbox_2(f32 radius, f32 height) { + // The last argument here is unused. When this function is called directly the argument is always set to 0x7FFF. + return cur_obj_can_mario_activate_textbox(radius, height, 0x1000); } -static void obj_end_dialog(s32 dialogFlags, s32 dialogResult) { +static void cur_obj_end_dialog(s32 dialogFlags, s32 dialogResult) { o->oDialogResponse = dialogResult; o->oDialogState++; @@ -2657,7 +2658,7 @@ static void obj_end_dialog(s32 dialogFlags, s32 dialogResult) { } } -s32 obj_update_dialog(s32 actionArg, s32 dialogFlags, s32 dialogID, UNUSED s32 unused) { +s32 cur_obj_update_dialog(s32 actionArg, s32 dialogFlags, s32 dialogID, UNUSED s32 unused) { s32 dialogResponse = 0; UNUSED s32 doneTurning = TRUE; @@ -2706,14 +2707,14 @@ s32 obj_update_dialog(s32 actionArg, s32 dialogFlags, s32 dialogID, UNUSED s32 u case DIALOG_UNK1_AWAIT_DIALOG: if (dialogFlags & DIALOG_UNK1_FLAG_RESPONSE) { if (gDialogResponse != 0) { - obj_end_dialog(dialogFlags, gDialogResponse); + cur_obj_end_dialog(dialogFlags, gDialogResponse); } } else if (dialogFlags & DIALOG_UNK1_FLAG_DEFAULT) { if (get_dialog_id() == -1) { - obj_end_dialog(dialogFlags, 3); + cur_obj_end_dialog(dialogFlags, 3); } } else { - obj_end_dialog(dialogFlags, 3); + cur_obj_end_dialog(dialogFlags, 3); } break; @@ -2734,7 +2735,7 @@ s32 obj_update_dialog(s32 actionArg, s32 dialogFlags, s32 dialogID, UNUSED s32 u return dialogResponse; } -s32 obj_update_dialog_with_cutscene(s32 actionArg, s32 dialogFlags, s32 cutsceneTable, s32 dialogID) { +s32 cur_obj_update_dialog_with_cutscene(s32 actionArg, s32 dialogFlags, s32 cutsceneTable, s32 dialogID) { s32 dialogResponse = 0; s32 doneTurning = TRUE; @@ -2768,7 +2769,7 @@ s32 obj_update_dialog_with_cutscene(s32 actionArg, s32 dialogFlags, s32 cutscene case DIALOG_UNK2_TURN_AND_INTERRUPT_MARIO_ACTION: if (dialogFlags & DIALOG_UNK2_FLAG_0) { - doneTurning = obj_rotate_yaw_toward(angle_to_object(o, gMarioObject), 0x800); + doneTurning = cur_obj_rotate_yaw_toward(obj_angle_to_object(o, gMarioObject), 0x800); if (o->oDialogResponse >= 0x21) { doneTurning = TRUE; } @@ -2812,15 +2813,15 @@ s32 obj_update_dialog_with_cutscene(s32 actionArg, s32 dialogFlags, s32 cutscene return dialogResponse; } -s32 obj_has_model(u16 a0) { - if (o->header.gfx.sharedChild == gLoadedGraphNodes[a0]) { +s32 cur_obj_has_model(u16 modelID) { + if (o->header.gfx.sharedChild == gLoadedGraphNodes[modelID]) { return TRUE; } else { return FALSE; } } -void obj_align_gfx_with_floor(void) { +void cur_obj_align_gfx_with_floor(void) { struct Surface *floor; Vec3f floorNormal; Vec3f position; @@ -2852,11 +2853,11 @@ s32 mario_is_within_rectangle(s16 minX, s16 maxX, s16 minZ, s16 maxZ) { return TRUE; } -void ShakeScreen(s32 shake) { +void cur_obj_shake_screen(s32 shake) { set_camera_shake_from_point(shake, o->oPosX, o->oPosY, o->oPosZ); } -s32 attack_collided_non_mario_object(struct Object *obj) { +s32 obj_attack_collided_from_other_object(struct Object *obj) { s32 numCollidedObjs; struct Object *other; s32 touchedOtherObject = FALSE; @@ -2875,7 +2876,7 @@ s32 attack_collided_non_mario_object(struct Object *obj) { return touchedOtherObject; } -s32 obj_was_attacked_or_ground_pounded(void) { +s32 cur_obj_was_attacked_or_ground_pounded(void) { s32 attacked = FALSE; if ((o->oInteractStatus & INT_STATUS_INTERACTED) @@ -2883,7 +2884,7 @@ s32 obj_was_attacked_or_ground_pounded(void) { attacked = TRUE; } - if (obj_is_mario_ground_pounding_platform()) { + if (cur_obj_is_mario_ground_pounding_platform()) { attacked = TRUE; } @@ -2891,30 +2892,30 @@ s32 obj_was_attacked_or_ground_pounded(void) { return attacked; } -void copy_object_behavior_params(struct Object *dst, struct Object *src) { +void obj_copy_behavior_params(struct Object *dst, struct Object *src) { dst->oBehParams = src->oBehParams; dst->oBehParams2ndByte = src->oBehParams2ndByte; } -void func_802A4A70(s32 sp18, s32 sp1C) { - set_obj_animation_and_sound_state(sp18); - o->header.gfx.unk38.animFrame = sp1C; +void cur_obj_init_animation_and_anim_frame(s32 animIndex, s32 animFrame) { + cur_obj_init_animation_with_sound(animIndex); + o->header.gfx.unk38.animFrame = animFrame; } -s32 func_802A4AB0(s32 sp18) { - set_obj_animation_and_sound_state(sp18); - return func_8029F788(); +s32 cur_obj_init_animation_and_check_if_near_end(s32 animIndex) { + cur_obj_init_animation_with_sound(animIndex); + return cur_obj_check_if_near_animation_end(); } -void func_802A4AEC(s32 sp18) { - set_obj_animation_and_sound_state(sp18); - func_8029F728(); +void cur_obj_init_animation_and_extend_if_at_end(s32 animIndex) { + cur_obj_init_animation_with_sound(animIndex); + cur_obj_extend_animation_if_at_end(); } -s32 obj_check_grabbed_mario(void) { +s32 cur_obj_check_grabbed_mario(void) { if (o->oInteractStatus & INT_STATUS_GRABBED_MARIO) { o->oKingBobombUnk88 = 1; - obj_become_intangible(); + cur_obj_become_intangible(); return TRUE; } @@ -2963,9 +2964,9 @@ s32 player_performed_grab_escape_action(void) { } #endif -void obj_unused_play_footstep_sound(s32 animFrame1, s32 animFrame2, s32 sound) { - if (obj_check_anim_frame(animFrame1) || obj_check_anim_frame(animFrame2)) { - PlaySound2(sound); +void cur_obj_unused_play_footstep_sound(s32 animFrame1, s32 animFrame2, s32 sound) { + if (cur_obj_check_anim_frame(animFrame1) || cur_obj_check_anim_frame(animFrame2)) { + cur_obj_play_sound_2(sound); } } @@ -2979,7 +2980,7 @@ void disable_time_stop_including_mario(void) { o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP; } -s32 obj_check_interacted(void) { +s32 cur_obj_check_interacted(void) { if (o->oInteractStatus & INT_STATUS_INTERACTED) { o->oInteractStatus = 0; return TRUE; @@ -2988,7 +2989,7 @@ s32 obj_check_interacted(void) { } } -void obj_spawn_loot_blue_coin(void) { +void cur_obj_spawn_loot_blue_coin(void) { if (o->oNumLootCoins >= 5) { spawn_object(o, MODEL_BLUE_COIN, bhvMrIBlueCoin); o->oNumLootCoins -= 5; @@ -2996,10 +2997,10 @@ void obj_spawn_loot_blue_coin(void) { } #ifndef VERSION_JP -void obj_spawn_star_at_y_offset(f32 targetX, f32 targetY, f32 targetZ, f32 offsetY) { +void cur_obj_spawn_star_at_y_offset(f32 targetX, f32 targetY, f32 targetZ, f32 offsetY) { f32 objectPosY = o->oPosY; o->oPosY += offsetY + gDebugInfo[5][0]; - create_star(targetX, targetY, targetZ); + spawn_default_star(targetX, targetY, targetZ); o->oPosY = objectPosY; } #endif diff --git a/src/game/object_helpers.h b/src/game/object_helpers.h index b2eee9a1..56c75a85 100644 --- a/src/game/object_helpers.h +++ b/src/game/object_helpers.h @@ -14,21 +14,21 @@ struct ChainSegment s16 roll; }; -#define WATER_SPLASH_FLAG_RAND_ANGLE 0x02 -#define WATER_SPLASH_FLAG_RAND_OFFSET_XZ 0x04 -#define WATER_SPLASH_FLAG_RAND_OFFSET_XYZ 0x08 -#define WATER_SPLASH_FLAG_SET_Y_TO_WATER_LEVEL 0x20 -#define WATER_SPLASH_FLAG_RAND_ANGLE_INCR_PLUS_8000 0x40 -#define WATER_SPLASH_FLAG_RAND_ANGLE_INCR 0x80 +#define WATER_DROPLET_FLAG_RAND_ANGLE 0x02 +#define WATER_DROPLET_FLAG_RAND_OFFSET_XZ 0x04 // Unused +#define WATER_DROPLET_FLAG_RAND_OFFSET_XYZ 0x08 // Unused +#define WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL 0x20 +#define WATER_DROPLET_FLAG_RAND_ANGLE_INCR_PLUS_8000 0x40 +#define WATER_DROPLET_FLAG_RAND_ANGLE_INCR 0x80 // Unused -// Call spawn_water_splash with this struct to spawn an object. -struct WaterSplashParams +// Call spawn_water_droplet with this struct to spawn an object. +struct WaterDropletParams { - s16 flags; // spawn flags, see WATER_SPLASH_FLAG_* defines above + s16 flags; // Droplet spawn flags, see defines above s16 model; const BehaviorScript *behavior; - s16 moveAngleRange; // only used for flags 0x40 & 0x80 - s16 moveRange; // only used for flags 0x04 & 0x08 + s16 moveAngleRange; // Only used for RAND_ANGLE_INCR flags + s16 moveRange; // Only used for RAND_OFFSET flags f32 randForwardVelOffset; f32 randForwardVelScale; f32 randYVelOffset; @@ -120,7 +120,7 @@ extern void* D_060576FC; // extern ? D_8032F738; // extern ? D_8032F728; // extern ? D_8032F754; -extern s8 dddStatus; +extern s8 gDddPaintingStatus; // extern ? D_8035FEE8; // extern ? sCageUkikiPath; // extern ? sUkikiActions; @@ -164,8 +164,8 @@ extern s8 dddStatus; // extern ? D_80336704; // extern ? D_8033670C; -extern Gfx *Geo18_8029D890(s32 run, UNUSED struct GraphNode *node, f32 mtx[4][4]); -extern Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED void *context); +extern Gfx *geo_update_projectile_pos_from_parent(s32 run, UNUSED struct GraphNode *node, f32 mtx[4][4]); +extern Gfx *geo_update_layer_transparency(s32 run, struct GraphNode *node, UNUSED void *context); #ifdef AVOID_UB extern Gfx *geo_switch_anim_state(s32 run, struct GraphNode *node, void *context); extern Gfx *geo_switch_area(s32 run, struct GraphNode *node, void *context); @@ -173,163 +173,163 @@ extern Gfx *geo_switch_area(s32 run, struct GraphNode *node, void *context); extern Gfx *geo_switch_anim_state(s32 run, struct GraphNode *node); extern Gfx *geo_switch_area(s32 run, struct GraphNode *node); #endif -extern void func_8029D558(Mat4, struct Object *); -void apply_object_scale_to_matrix(struct Object *, Mat4, Mat4); -extern void func_8029D704(Mat4,Mat4,Mat4); -void set_object_held_state(struct Object *, const BehaviorScript *); +extern void obj_update_pos_from_parent_transformation(Mat4, struct Object *); +void obj_apply_scale_to_matrix(struct Object *, Mat4, Mat4); +extern void create_transformation_from_matrices(Mat4,Mat4,Mat4); +void obj_set_held_state(struct Object *, const BehaviorScript *); extern f32 lateral_dist_between_objects(struct Object *, struct Object *); extern f32 dist_between_objects(struct Object *, struct Object *); -extern void obj_forward_vel_approach_upward(f32,f32); +extern void cur_obj_forward_vel_approach_upward(f32,f32); extern s32 approach_f32_signed(f32*,f32,f32); extern f32 approach_f32_symmetric(f32,f32,f32); extern s16 approach_s16_symmetric(s16 arg0, s16 arg1, s16 arg2); -extern s32 obj_rotate_yaw_toward(s16,s16); -extern s16 angle_to_object(struct Object *, struct Object *); +extern s32 cur_obj_rotate_yaw_toward(s16,s16); +extern s16 obj_angle_to_object(struct Object *, struct Object *); extern s16 obj_turn_toward_object(struct Object *, struct Object *, s16, s16); -extern void set_object_parent_relative_pos(struct Object*,s16,s16,s16); -extern void set_object_pos(struct Object*,s16,s16,s16); -extern void set_object_angle(struct Object*,s16,s16,s16); +extern void obj_set_parent_relative_pos(struct Object*,s16,s16,s16); +extern void obj_set_pos(struct Object*,s16,s16,s16); +extern void obj_set_angle(struct Object*,s16,s16,s16); extern struct Object *spawn_object_abs_with_rot(struct Object *, s16, u32, const BehaviorScript *, s16, s16, s16, s16, s16, s16); extern struct Object *spawn_object_rel_with_rot(struct Object *sp20, u32 sp24, const BehaviorScript *sp28, s16 sp2E, s16 sp32, s16 sp36, s16 sp3A, s16 sp3E, s16 sp42); -// extern ? Unknown8029E330(?); -extern struct Object *spawn_water_splash(struct Object *, struct WaterSplashParams *); +// extern ? spawn_obj_with_transform_flags(?); +extern struct Object *spawn_water_droplet(struct Object *, struct WaterDropletParams *); extern struct Object *spawn_object_at_origin(struct Object *, s32, u32, const BehaviorScript *); extern struct Object *spawn_object(struct Object *, s32, const BehaviorScript *); extern struct Object* try_to_spawn_object(s16,f32,struct Object*,s32,const BehaviorScript *); extern struct Object* spawn_object_with_scale(struct Object*,s32,const BehaviorScript *,f32); -// extern ? build_relative_object_transform(?); +// extern ? obj_build_relative_transform(?); extern struct Object* spawn_object_relative(s16, s16, s16, s16, struct Object *, s32, const BehaviorScript *); extern struct Object* spawn_object_relative_with_scale(s16,s16,s16,s16,f32,struct Object *,s32,const BehaviorScript *); -// extern ? obj_move_using_vel(?); -extern void copy_object_graph_y_offset(struct Object*,struct Object*); -extern void copy_object_pos_and_angle(struct Object *, struct Object *); -extern void copy_object_pos(struct Object*,struct Object*); -// extern ? copy_object_angle(?); -extern void func_8029EA0C(struct Object*); -// extern ? Unknown8029EA34(?); +// extern ? cur_obj_move_using_vel(?); +extern void obj_copy_graph_y_offset(struct Object*,struct Object*); +extern void obj_copy_pos_and_angle(struct Object *, struct Object *); +extern void obj_copy_pos(struct Object*,struct Object*); +// extern ? obj_copy_angle(?); +extern void obj_set_gfx_pos_from_pos(struct Object*); +// extern ? spawn_obj_with_transform_flags(?); extern void linear_mtxf_mul_vec3f(f32 [4][4], Vec3f, Vec3f); extern void linear_mtxf_transpose_mul_vec3f(f32 [4][4], Vec3f, Vec3f); -// extern ? apply_scale_to_object_transform(?); -void copy_object_scale(struct Object *toObj, struct Object *fromObj); -extern void scale_object_xyz(struct Object* obj, f32 xScale, f32 yScale, f32 zScale); -extern void scale_object(struct Object *, f32); -extern void obj_scale(f32); -extern void set_obj_animation_and_sound_state(s32); -extern void func_8029ED98(u32, f32); -extern void SetObjAnimation(s32 arg0); -void func_8029EE20(struct Object *a0, struct Animation **a1, u32 a2); +// extern ? obj_apply_scale_to_transform(?); +void obj_copy_scale(struct Object *toObj, struct Object *fromObj); +extern void obj_scale_xyz(struct Object* obj, f32 xScale, f32 yScale, f32 zScale); +extern void obj_scale(struct Object *, f32); +extern void cur_obj_scale(f32); +extern void cur_obj_init_animation_with_sound(s32); +extern void cur_obj_init_animation_with_accel_and_sound(s32, f32); +extern void cur_obj_init_animation(s32 arg0); +void obj_init_animation_with_sound(struct Object *a0, struct Animation **a1, s32 a2); // extern ? obj_enable_rendering_and_become_tangible(?); -extern void obj_enable_rendering(void); +extern void cur_obj_enable_rendering(void); // extern ? obj_disable_rendering_and_become_intangible(?); -extern void obj_disable_rendering(void); -extern void obj_unhide(void); -extern void obj_hide(void); -extern void obj_set_pos_relative(struct Object *MarioObj, f32, f32, f32); -// extern ? obj_set_pos_relative_to_parent(?); -extern void obj_enable_rendering_2(void); +extern void cur_obj_disable_rendering(void); +extern void cur_obj_unhide(void); +extern void cur_obj_hide(void); +extern void cur_obj_set_pos_relative(struct Object *MarioObj, f32, f32, f32); +// extern ? cur_obj_set_pos_relative_to_parent(?); +extern void cur_obj_enable_rendering_2(void); // extern ? obj_unused_init_on_floor(?); -extern void obj_set_facing_to_move_angles(struct Object *); +extern void obj_set_face_angle_to_move_angle(struct Object *); u32 get_object_list_from_behavior(const BehaviorScript *behavior); -extern struct Object *obj_nearest_object_with_behavior(const BehaviorScript *); -f32 obj_dist_to_nearest_object_with_behavior(const BehaviorScript*); -extern struct Object *obj_find_nearest_object_with_behavior(const BehaviorScript *, f32 *); +extern struct Object *cur_obj_nearest_object_with_behavior(const BehaviorScript *); +f32 cur_obj_dist_to_nearest_object_with_behavior(const BehaviorScript*); +extern struct Object *cur_obj_find_nearest_object_with_behavior(const BehaviorScript *, f32 *); extern struct Object *find_unimportant_object(void); // extern ? count_unimportant_objects(?); extern s32 count_objects_with_behavior(const BehaviorScript *behavior); -struct Object* obj_find_nearby_held_actor(const BehaviorScript *,f32); +struct Object* cur_obj_find_nearby_held_actor(const BehaviorScript *,f32); // extern ? obj_reset_timer_and_subaction(?); -void obj_change_action(s32); -void func_8029F684(f32,f32); -BAD_RETURN(s16) func_8029F6F0(void); -extern BAD_RETURN(s32) func_8029F728(void); -extern s32 func_8029F788(void); -extern s32 func_8029F828(void); -extern s32 obj_check_anim_frame(s32); -extern s32 obj_check_anim_frame_in_range(s32, s32); -// extern ? Unknown8029F930(?); +void cur_obj_change_action(s32); +void cur_obj_set_vel_from_mario_vel(f32,f32); +BAD_RETURN(s16) cur_obj_reverse_animation(void); +extern BAD_RETURN(s32) cur_obj_extend_animation_if_at_end(void); +extern s32 cur_obj_check_if_near_animation_end(void); +extern s32 cur_obj_check_if_at_animation_end(void); +extern s32 cur_obj_check_anim_frame(s32); +extern s32 cur_obj_check_anim_frame_in_range(s32, s32); +// extern ? cur_obj_check_frame_prior_current_frame(?); s32 mario_is_in_air_action(void); s32 mario_is_dive_sliding(void); -void func_8029FA1C(f32,s32); -void func_8029FA5C(s32,s32); +void cur_obj_set_y_vel_and_animation(f32,s32); +void cur_obj_unrender_and_reset_state(s32,s32); // extern ? obj_move_after_thrown_or_dropped(?); -void obj_get_thrown_or_placed(f32,f32,s32); -extern void obj_get_dropped(void); -extern void obj_set_model(s32); +void cur_obj_get_thrown_or_placed(f32,f32,s32); +extern void cur_obj_get_dropped(void); +extern void cur_obj_set_model(s32); // extern ? mario_set_flag(?); -s32 obj_clear_interact_status_flag(s32); -extern void mark_object_for_deletion(struct Object *); -void obj_disable(void); -extern void obj_become_intangible(void); -extern void obj_become_tangible(void); -void make_object_tangible(struct Object*); -void obj_update_floor_height(void); -struct Surface* obj_update_floor_height_and_get_floor(void); +s32 cur_obj_clear_interact_status_flag(s32); +extern void obj_mark_for_deletion(struct Object *); +void cur_obj_disable(void); +extern void cur_obj_become_intangible(void); +extern void cur_obj_become_tangible(void); +extern void obj_become_tangible(struct Object*); +void cur_obj_update_floor_height(void); +struct Surface* cur_obj_update_floor_height_and_get_floor(void); // extern ? apply_drag_to_value(?); -void obj_apply_drag_xz(f32); -// extern ? obj_move_xz(?); -// extern ? obj_move_update_underwater_flags(?); -// extern ? obj_move_update_ground_air_flags(?); -// extern ? obj_move_y_and_get_water_level(?); -void obj_move_y(f32,f32,f32); +void cur_obj_apply_drag_xz(f32); +// extern ? cur_obj_move_xz(?); +// extern ? cur_obj_move_update_underwater_flags(?); +// extern ? cur_obj_move_update_ground_air_flags(?); +// extern ? cur_obj_move_y_and_get_water_level(?); +void cur_obj_move_y(f32,f32,f32); // extern ? clear_move_flag(?); -// extern ? obj_unused_resolve_wall_collisions(?); +// extern ? cur_obj_unused_resolve_wall_collisions(?); extern s16 abs_angle_diff(s16, s16); -extern void obj_move_xz_using_fvel_and_yaw(void); -extern void obj_move_y_with_terminal_vel(void); -void obj_compute_vel_xz(void); -f32 func_802A0BF4(f32,f32,f32,f32); -extern s32 are_objects_collided(struct Object *, struct Object *); -void obj_set_behavior(const BehaviorScript *); -void set_object_behavior(struct Object *, const BehaviorScript *); -extern s32 obj_has_behavior(const BehaviorScript *); -s32 object_has_behavior(struct Object *, const BehaviorScript *); -f32 obj_lateral_dist_from_mario_to_home(void); -extern f32 obj_lateral_dist_to_home(void); +extern void cur_obj_move_xz_using_fvel_and_yaw(void); +extern void cur_obj_move_y_with_terminal_vel(void); +void cur_obj_compute_vel_xz(void); +f32 increment_velocity_toward_range(f32,f32,f32,f32); +extern s32 obj_check_if_collided_with_object(struct Object *, struct Object *); +void cur_obj_set_behavior(const BehaviorScript *); +void obj_set_behavior(struct Object *, const BehaviorScript *); +extern s32 cur_obj_has_behavior(const BehaviorScript *); +s32 obj_has_behavior(struct Object *, const BehaviorScript *); +f32 cur_obj_lateral_dist_from_mario_to_home(void); +extern f32 cur_obj_lateral_dist_to_home(void); // extern ? obj_outside_home_square(?); // extern ? obj_outside_home_rectangle(?); -extern void obj_set_pos_to_home(void); -void obj_set_pos_to_home_and_stop(void); -extern void obj_shake_y(f32); -void obj_start_cam_event(struct Object *obj, s32 cameraEvent); -// extern ? Unknown802A11E4(?); +extern void cur_obj_set_pos_to_home(void); +void cur_obj_set_pos_to_home_and_stop(void); +extern void cur_obj_shake_y(f32); +void cur_obj_start_cam_event(struct Object *obj, s32 cameraEvent); +// extern ? set_mario_interact_hoot_if_in_range(?); void obj_set_billboard(struct Object *a0); -void obj_set_hitbox_radius_and_height(f32,f32); -void obj_set_hurtbox_radius_and_height(f32,f32); -// extern ? spawn_object_loot_coins(?); -// extern ? spawn_object_loot_blue_coins(?); -extern void spawn_object_loot_yellow_coins(struct Object *, s32, f32); -void obj_spawn_loot_coin_at_mario_pos(void); +void cur_obj_set_hitbox_radius_and_height(f32,f32); +void cur_obj_set_hurtbox_radius_and_height(f32,f32); +// extern ? obj_spawn_loot_coins(?); +// extern ? obj_spawn_loot_blue_coins(?); +extern void obj_spawn_loot_yellow_coins(struct Object *, s32, f32); +void cur_obj_spawn_loot_coin_at_mario_pos(void); // extern ? obj_abs_y_dist_to_home(?); -// extern ? Unknown802A1548(?); +// extern ? cur_obj_advance_looping_anim(?); // extern ? obj_detect_steep_floor(?); -s32 obj_resolve_wall_collisions(void); +s32 cur_obj_resolve_wall_collisions(void); // extern ? obj_update_floor(?); // extern ? obj_update_floor_and_resolve_wall_collisions(?); -extern void obj_update_floor_and_walls(void); -extern void obj_move_standard(s16); +extern void cur_obj_update_floor_and_walls(void); +extern void cur_obj_move_standard(s16); // extern ? obj_within_12k_bounds(?); -void obj_move_using_vel_and_gravity(void); -void obj_move_using_fvel_and_gravity(void); +void cur_obj_move_using_vel_and_gravity(void); +void cur_obj_move_using_fvel_and_gravity(void); // extern ? set_object_pos_relative(?); -s16 obj_angle_to_home(void); -void func_802A2008(struct Object*,struct Object*); -extern void translate_object_local(struct Object*,s16,s16); -extern void build_object_transform_from_pos_and_angle(struct Object *, s16, s16); -extern void func_802A2270(struct Object *); -extern void build_object_transform_relative_to_parent(struct Object *); -// extern ? Unknown802A2380(?); +s16 cur_obj_angle_to_home(void); +void obj_set_gfx_pos_at_obj_pos(struct Object*,struct Object*); +extern void obj_translate_local(struct Object*,s16,s16); +extern void obj_build_transform_from_pos_and_angle(struct Object *, s16, s16); +extern void obj_set_throw_matrix_from_transform(struct Object *); +extern void obj_build_transform_relative_to_parent(struct Object *); +// extern ? obj_create_transform_from_self(?); // extern ? obj_rotate_move_angle_using_vel(?); -void obj_rotate_face_angle_using_vel(void); +void cur_obj_rotate_face_angle_using_vel(void); // extern ? obj_set_face_angle_to_move_angle(?); -extern s32 obj_follow_path(UNUSED s32); +extern s32 cur_obj_follow_path(UNUSED s32); extern void chain_segment_init(struct ChainSegment *); extern f32 random_f32_around_zero(f32); -void scale_object_random(struct Object*,f32,f32); -extern void translate_object_xyz_random(struct Object *, f32); -extern void translate_object_xz_random(struct Object *, f32); -// extern ? func_802A297C(?); -void func_802A2A38(void); -void obj_spawn_particles(struct SpawnParticlesInfo *sp28); -extern s16 obj_reflect_move_angle_off_wall(void); +void obj_scale_random(struct Object*,f32,f32); +extern void obj_translate_xyz_random(struct Object *, f32); +extern void obj_translate_xz_random(struct Object *, f32); +// extern ? obj_build_vel_from_transform(?); +void cur_obj_set_pos_via_transform(void); +void cur_obj_spawn_particles(struct SpawnParticlesInfo *sp28); +extern s16 cur_obj_reflect_move_angle_off_wall(void); #endif /* OBJECT_HELPERS_H */ diff --git a/src/game/object_helpers2.h b/src/game/object_helpers2.h index 8ae5f759..86bc18fd 100644 --- a/src/game/object_helpers2.h +++ b/src/game/object_helpers2.h @@ -24,71 +24,71 @@ struct GraphNode_802A45E4 { /*0x22*/ s16 unk22; }; -extern void set_object_hitbox(struct Object* obj, struct ObjectHitbox *arg1); +extern void obj_set_hitbox(struct Object* obj, struct ObjectHitbox *arg1); s32 signum_positive(s32); extern f32 absf(f32); extern s32 absi(s32 a0); -s32 obj_wait_then_blink(s32 a0, s32 a1); -s32 obj_is_mario_ground_pounding_platform(void); -extern void func_802A3004(void); -extern void func_802A3034(s32 sp18); -void obj_push_mario_away(f32); -void obj_push_mario_away_from_cylinder(f32 sp20, f32 sp24); -// extern ? BehDustSmokeLoop(?); -s32 func_802A32A4(s8*); -s32 func_802A32E0(void); -// extern ? nop_802A3380(?); -extern void func_802A3398(s32,s32,f32,f32); -void func_802A3470(void); -extern s32 obj_is_mario_on_platform(void); +s32 cur_obj_wait_then_blink(s32 a0, s32 a1); +s32 cur_obj_is_mario_ground_pounding_platform(void); +extern void spawn_mist_particles(void); +extern void spawn_mist_particles_with_sound(s32 sp18); +void cur_obj_push_mario_away(f32); +void cur_obj_push_mario_away_from_cylinder(f32 sp20, f32 sp24); +// extern ? bhv_dust_smoke_loop(?); +s32 cur_obj_set_direction_table(s8*); +s32 cur_obj_progress_direction_table(void); +// extern ? stub_obj_helpers_3(?); +extern void cur_obj_scale_over_time(s32,s32,f32,f32); +void cur_obj_set_pos_to_home_with_debug(void); +extern s32 cur_obj_is_mario_on_platform(void); // extern ? obj_shake_y_until(?); -s32 func_802A362C(s32); -void obj_call_action_function(void(*[])(void)); -// extern ? func_802A36D8(?); -// extern ? Unknown802A3750(?); -s32 func_802A377C(s32); -s32 obj_mario_far_away(void); -s32 obj_is_mario_moving_fast_or_in_air(s32); -s32 item_in_array(s8,s8*); +s32 cur_obj_move_up_and_down(s32); +void cur_obj_call_action_function(void(*[])(void)); +// extern ? spawn_star_with_no_lvl_exit(?); +// extern ? spawn_base_star_with_no_lvl_exit(?); +s32 bit_shift_left(s32); +s32 cur_obj_mario_far_away(void); +s32 is_mario_moving_fast_or_in_air(s32); +s32 is_item_in_array(s8,s8*); extern void bhv_init_room(void); // 802A3978 -extern void obj_enable_rendering_if_mario_in_room(void); -s32 obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox*,s32,s32); -void func_802A3C98(f32 sp18, s32 sp1C); -void set_object_collision_data(struct Object*, const void*); -void obj_if_hit_wall_bounce_away(void); -s32 obj_hide_if_mario_far_away_y(f32); -extern Gfx *Geo18_802A45E4(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]); -// extern ? Unknown802A3E84(?); +extern void cur_obj_enable_rendering_if_mario_in_room(void); +s32 cur_obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox*,s32,s32); +void obj_explode_and_spawn_coins(f32 sp18, s32 sp1C); +void obj_set_collision_data(struct Object*, const void*); +void cur_obj_if_hit_wall_bounce_away(void); +s32 cur_obj_hide_if_mario_far_away_y(f32); +extern Gfx *geo_offset_klepto_held_object(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]); +// extern ? geo_offset_klepto_debug(?); s32 obj_is_hidden(struct Object*); extern void enable_time_stop(void); extern void disable_time_stop(void); void set_time_stop_flags(s32); void clear_time_stop_flags(s32); -s32 func_802A3FF8(f32,f32,s32); -extern s32 obj_is_mario_in_range_and_ready_to_speak(f32 sp18, f32 sp1C); +s32 cur_obj_can_mario_activate_textbox(f32,f32,s32); +extern s32 cur_obj_can_mario_activate_textbox_2(f32 sp18, f32 sp1C); // extern ? obj_end_dialog(?); -s32 obj_update_dialog(s32 arg0, s32 dialogFlags, s32 dialogID, s32 unused); -s32 obj_update_dialog_with_cutscene(s32 arg0, s32 dialogFlags, s32 cutsceneTable, s32 dialogID); -s32 obj_has_model(u16); -extern void obj_align_gfx_with_floor(void); +s32 cur_obj_update_dialog(s32 arg0, s32 dialogFlags, s32 dialogID, s32 unused); +s32 cur_obj_update_dialog_with_cutscene(s32 arg0, s32 dialogFlags, s32 cutsceneTable, s32 dialogID); +s32 cur_obj_has_model(u16); +extern void cur_obj_align_gfx_with_floor(void); // extern ? mario_is_within_rectangle(?); -void ShakeScreen(s32 shake); -extern s32 attack_collided_non_mario_object(struct Object *obj); -s32 obj_was_attacked_or_ground_pounded(void); -void copy_object_behavior_params(struct Object*,struct Object*); -void func_802A4A70(s32,s32); -s32 func_802A4AB0(s32); -void func_802A4AEC(s32); -s32 obj_check_grabbed_mario(void); +void cur_obj_shake_screen(s32 shake); +extern s32 obj_attack_collided_from_other_object(struct Object *obj); +s32 cur_obj_was_attacked_or_ground_pounded(void); +void obj_copy_behavior_params(struct Object*,struct Object*); +void cur_obj_init_animation_and_anim_frame(s32,s32); +s32 cur_obj_init_animation_and_check_if_near_end(s32); +void cur_obj_init_animation_and_extend_if_at_end(s32); +s32 cur_obj_check_grabbed_mario(void); s32 player_performed_grab_escape_action(void); -// extern ? obj_unused_play_footstep_sound(?); +// extern ? cur_obj_unused_play_footstep_sound(?); // extern ? enable_time_stop_including_mario(?); extern void disable_time_stop_including_mario(void); -s32 obj_check_interacted(void); -void obj_spawn_loot_blue_coin(void); +s32 cur_obj_check_interacted(void); +void cur_obj_spawn_loot_blue_coin(void); #ifndef VERSION_JP -void obj_spawn_star_at_y_offset(f32 f12, f32 f14, f32 a2, f32 a3); +void cur_obj_spawn_star_at_y_offset(f32 f12, f32 f14, f32 a2, f32 a3); #endif #endif /* OBJECT_HELPERS2_H */ diff --git a/src/game/object_list_processor.c b/src/game/object_list_processor.c index f5e3d347..0839a85b 100644 --- a/src/game/object_list_processor.c +++ b/src/game/object_list_processor.c @@ -196,24 +196,24 @@ struct ParticleProperties { * A table mapping particle flags to various properties use when spawning a particle. */ struct ParticleProperties sParticleTypes[] = { - { PARTICLE_DUST, ACTIVE_PARTICLE_0, MODEL_MIST, bhvMarioDustGenerator }, - { PARTICLE_1, ACTIVE_PARTICLE_18, MODEL_NONE, bhvWallTinyStarParticleSpawn }, - { PARTICLE_4, ACTIVE_PARTICLE_4, MODEL_NONE, bhvPoundTinyStarParticleSpawn }, - { PARTICLE_SPARKLES, ACTIVE_PARTICLE_3, MODEL_SPARKLES, bhvSpecialTripleJumpSparkles }, - { PARTICLE_5, ACTIVE_PARTICLE_5, MODEL_BUBBLE, bhvBubbleMario }, - { PARTICLE_6, ACTIVE_PARTICLE_6, MODEL_WATER_SPLASH, bhvWaterSplash }, - { PARTICLE_7, ACTIVE_PARTICLE_7, MODEL_WATER_WAVES_SURF, bhvSurfaceWaves }, - { PARTICLE_9, ACTIVE_PARTICLE_9, MODEL_WHITE_PARTICLE_SMALL, bhvWaterWaves }, - { PARTICLE_10, ACTIVE_PARTICLE_10, MODEL_WATER_WAVES, bhvWaveTrailOnSurface }, - { PARTICLE_11, ACTIVE_PARTICLE_11, MODEL_RED_FLAME, bhvFlameMario }, - { PARTICLE_8, ACTIVE_PARTICLE_8, MODEL_NONE, bhvWavesGenerator }, - { PARTICLE_12, ACTIVE_PARTICLE_12, MODEL_NONE, bhvSurfaceWaveShrinking }, - { PARTICLE_LEAVES, ACTIVE_PARTICLE_13, MODEL_NONE, bhvSnowLeafParticleSpawn }, - { PARTICLE_14, ACTIVE_PARTICLE_16, MODEL_NONE, bhvGroundSnow }, - { PARTICLE_17, ACTIVE_PARTICLE_17, MODEL_NONE, bhvWaterMistSpawn }, - { PARTICLE_15, ACTIVE_PARTICLE_14, MODEL_NONE, bhvGroundSand }, - { PARTICLE_16, ACTIVE_PARTICLE_15, MODEL_NONE, bhvPoundWhitePuffs }, - { PARTICLE_18, ACTIVE_PARTICLE_19, MODEL_NONE, bhvPunchTinyTriangleSpawn }, + { PARTICLE_DUST, ACTIVE_PARTICLE_0, MODEL_MIST, bhvMarioDustGenerator }, + { PARTICLE_1, ACTIVE_PARTICLE_18, MODEL_NONE, bhvWallTinyStarParticleSpawn }, + { PARTICLE_4, ACTIVE_PARTICLE_4, MODEL_NONE, bhvPoundTinyStarParticleSpawn }, + { PARTICLE_SPARKLES, ACTIVE_PARTICLE_3, MODEL_SPARKLES, bhvSpecialTripleJumpSparkles }, + { PARTICLE_5, ACTIVE_PARTICLE_5, MODEL_BUBBLE, bhvBubbleMario }, + { PARTICLE_WATER_SPLASH, ACTIVE_PARTICLE_6, MODEL_WATER_SPLASH, bhvWaterSplash }, + { PARTICLE_IDLE_WATER_WAVE, ACTIVE_PARTICLE_IDLE_WATER_WAVE, MODEL_IDLE_WATER_WAVE, bhvIdleWaterWave }, + { PARTICLE_9, ACTIVE_PARTICLE_9, MODEL_WHITE_PARTICLE_SMALL, bhvWaterWaves }, + { PARTICLE_WAVE_TRAIL, ACTIVE_PARTICLE_WAVE_TRAIL, MODEL_WAVE_TRAIL, bhvWaveTrail }, + { PARTICLE_11, ACTIVE_PARTICLE_11, MODEL_RED_FLAME, bhvFlameMario }, + { PARTICLE_SHALLOW_WATER_WAVE, ACTIVE_PARTICLE_SHALLOW_WATER_WAVE, MODEL_NONE, bhvShallowWaterWave }, + { PARTICLE_SHALLOW_WATER_SPLASH, ACTIVE_PARTICLE_SHALLOW_WATER_SPLASH, MODEL_NONE, bhvShallowWaterSplash }, + { PARTICLE_LEAVES, ACTIVE_PARTICLE_13, MODEL_NONE, bhvSnowLeafParticleSpawn }, + { PARTICLE_14, ACTIVE_PARTICLE_16, MODEL_NONE, bhvGroundSnow }, + { PARTICLE_17, ACTIVE_PARTICLE_17, MODEL_NONE, bhvWaterMistSpawn }, + { PARTICLE_15, ACTIVE_PARTICLE_14, MODEL_NONE, bhvGroundSand }, + { PARTICLE_16, ACTIVE_PARTICLE_15, MODEL_NONE, bhvPoundWhitePuffs }, + { PARTICLE_18, ACTIVE_PARTICLE_19, MODEL_NONE, bhvPunchTinyTriangleSpawn }, { 0, 0, MODEL_NONE, NULL }, }; @@ -257,7 +257,7 @@ void spawn_particle(u32 activeParticleFlag, s16 model, const BehaviorScript *beh struct Object *particle; gCurrentObject->oActiveParticleFlags |= activeParticleFlag; particle = spawn_object_at_origin(gCurrentObject, 0, model, behavior); - copy_object_pos_and_angle(particle, gCurrentObject); + obj_copy_pos_and_angle(particle, gCurrentObject); } } @@ -519,7 +519,7 @@ void spawn_objects_from_info(UNUSED s32 unused, struct SpawnInfo *spawnInfo) { } } -void stub_8029CA50() { +void stub_obj_list_processor_1() { } /** @@ -545,7 +545,7 @@ void clear_objects(void) { clear_object_lists(gObjectListArray); stub_80385BF0(); - stub_8029CA50(); + stub_obj_list_processor_1(); for (i = 0; i < OBJECT_POOL_CAPACITY; i++) { gObjectPool[i].activeFlags = ACTIVE_FLAGS_DEACTIVATED; @@ -636,7 +636,7 @@ void update_objects(UNUSED s32 unused) { gCheckingSurfaceCollisionsForCamera = FALSE; reset_debug_objectinfo(); - stub_802CA5D0(); + stub_debug_5(); gObjectLists = gObjectListArray; diff --git a/src/game/paintings.c b/src/game/paintings.c index f34a0ed1..3977fca6 100644 --- a/src/game/paintings.c +++ b/src/game/paintings.c @@ -12,103 +12,259 @@ #include "segment2.h" #include "paintings.h" -s16 gPaintingMarioFloorType; -float gPaintingMarioXPos, gPaintingMarioYPos, gPaintingMarioZPos; -struct Thing *D_8035FFA0; -Vec3f *D_8035FFA4; -struct Painting *ripplingPainting; -s8 dddStatus; +/** + * @file paintings.c + * + * Implements the rippling painting effect. Paintings are GraphNodes that exist without being connected + * to any particular object. + * + * Paintings are defined in level data. Look at levels/castle_inside/painting.inc.c for examples. + * + * The ripple effect uses data that is split into several parts: + * The mesh positions are generated from a base mesh. See seg2_painting_triangle_mesh near the + * bottom of bin/segment2.c + * + * The lighting for the ripple is also generated from a base table, seg2_painting_mesh_neighbor_tris + * in bin/segment2.c + * + * Each painting's texture uses yet another table to map its texture to the mesh. + * These maps are in level data, see levels/castle_inside/painting.inc.c for example. + * + * Finally, each painting has two display lists, normal and rippling, which are defined in the same + * level data file as the Painting itself. See levels/castle_inside/painting.inc.c. + * + * + * Painting state machine: + * Paintings spawn in the PAINTING_IDLE state + * From IDLE, paintings can change to PAINTING_RIPPLE or PAINTING_ENTERED + * - This state checks for ENTERED because if mario waits long enough, a PROXIMITY painting could + * reset to IDLE + * + * Paintings in the PAINTING_RIPPLE state are passively rippling. + * For RIPPLE_TRIGGER_PROXIMITY paintings, this means mario bumped the wall in front of the + * painting. + * + * Paintings that use RIPPLE_TRIGGER_CONTINUOUS try to transition to this state as soon as possible, + * usually when mario enters the room. + * + * A PROXIMITY painting will automatically reset to IDLE if its ripple magnitude becomes small + * enough. + * + * Paintings in the PAINTING_ENTERED state have been entered by mario. + * A CONTINUOUS painting will automatically reset to RIPPLE if its ripple magnitude becomes small + * enough. + */ -struct Painting *hmcPaintings[] = { +/** + * Triggers a passive ripple on the left side of the painting. + */ +#define RIPPLE_LEFT 0x20 + +/** + * Triggers a passive ripple in the middle the painting. + */ +#define RIPPLE_MIDDLE 0x10 + +/** + * Triggers a passive ripple on the right side of the painting. + */ +#define RIPPLE_RIGHT 0x8 + +/** + * Triggers an entry ripple on the left side of the painting. + */ +#define ENTER_LEFT 0x4 + +/** + * Triggers an entry ripple in the middle of the painting. + */ +#define ENTER_MIDDLE 0x2 + +/** + * Triggers an entry ripple on the right side of the painting. + */ +#define ENTER_RIGHT 0x1 + +/** + * Use the 1/4th part of the painting that is nearest to mario's current floor. + */ +#define NEAREST_4TH 30 + +/** + * Use mario's relative x position. + * @see painting_mario_x + */ +#define MARIO_X 40 + +/** + * Use the x center of the painting. + */ +#define MIDDLE_X 50 + +/** + * Use mario's relative y position. + * @see painting_mario_y + */ +#define MARIO_Y 60 + +/** + * Use mario's relative z position. + * @see painting_mario_z + */ +#define MARIO_Z 70 + +/** + * Use the y center of the painting. + */ +#define MIDDLE_Y 80 + +/** + * Does nothing to the timer. + * Why -56 instead of false? Who knows. + */ +#define DONT_RESET -56 + +/** + * Reset the timer to 0. + */ +#define RESET_TIMER 100 + +/// A copy of the type of floor mario is standing on. +s16 gPaintingMarioFloorType; +// A copy of mario's position +f32 gPaintingMarioXPos, gPaintingMarioYPos, gPaintingMarioZPos; + +/** + * When a painting is rippling, this mesh is generated each frame using the Painting's parameters. + * + * This mesh only contains the vertex positions and normals. + * Paintings use an additional array to map textures to the mesh. + */ +struct PaintingMeshVertex *gPaintingMesh; + +/** + * The painting's surface normals, used to approximate each of the vertex normals (for gouraud shading). + */ +Vec3f *gPaintingTriNorms; + +/** + * The painting that is currently rippling. Only one painting can be rippling at once. + */ +struct Painting *gRipplingPainting; + +/** + * Whether the DDD painting is moved forward, should being moving backwards, or has already moved backwards. + */ +s8 gDddPaintingStatus; + +struct Painting *sHmcPaintings[] = { &cotmc_painting, NULL, }; -struct Painting *insideCastlePaintings[] = { +struct Painting *sInsideCastlePaintings[] = { &bob_painting, &ccm_painting, &wf_painting, &jrb_painting, &lll_painting, &ssl_painting, &hmc_painting, &ddd_painting, &wdw_painting, &thi_tiny_painting, &ttm_painting, &ttc_painting, &sl_painting, &thi_huge_painting, NULL, }; -struct Painting *ttmPaintings[] = { +struct Painting *sTtmPaintings[] = { &ttm_slide_painting, NULL, }; -struct Painting **paintingGroups[] = { - hmcPaintings, - insideCastlePaintings, - ttmPaintings, +struct Painting **sPaintingGroups[] = { + sHmcPaintings, + sInsideCastlePaintings, + sTtmPaintings, }; s16 gPaintingUpdateCounter = 1; s16 gLastPaintingUpdateCounter = 0; -void stopAllRippleExcept(s16 *idptr, struct Painting *paintingGroup[]) { +/** + * Stop paintings in paintingGroup from rippling if their id is different from *idptr. + */ +void stop_other_paintings(s16 *idptr, struct Painting *paintingGroup[]) { s16 index; s16 id = *idptr; index = 0; - while (paintingGroup[index] != NULL) // for each painting - { + while (paintingGroup[index] != NULL) { struct Painting *painting = segmented_to_virtual(paintingGroup[index]); + + // stop all rippling except for the selected painting if (painting->id != id) { - painting->rippleStatus = 0; // stop all rippling except for the selected painting + painting->state = 0; } index++; } } -float find_mario_y_position_on_painting(struct Painting *painting) { - //! unnecessary use of double constants - float marioYOffsetFromPainting = gPaintingMarioYPos - painting->vYPos + 50.0; +/** + * @return mario's y position inside the painting (bounded). + */ +f32 painting_mario_y(struct Painting *painting) { + //! Unnecessary use of double constants + // Add 50 to make the ripple closer to mario's center of mass. + f32 relY = gPaintingMarioYPos - painting->posY + 50.0; - if (marioYOffsetFromPainting < 0.0) { - marioYOffsetFromPainting = 0.0; // If Mario is below the bottom, return the bottom - } else if (marioYOffsetFromPainting - > painting->vSize) { // If Mario is above the top, return the top - marioYOffsetFromPainting = painting->vSize; + if (relY < 0.0) { + relY = 0.0; + } else if (relY > painting->size) { + relY = painting->size; } - return marioYOffsetFromPainting; + return relY; } -float find_mario_z_position_on_painting(struct Painting *painting) { - float marioZOffsetFromPainting = painting->vZPos - gPaintingMarioZPos; +/** + * @return mario's z position inside the painting (bounded). + */ +f32 painting_mario_z(struct Painting *painting) { + f32 relZ = painting->posZ - gPaintingMarioZPos; - if (marioZOffsetFromPainting < 0.0) { - marioZOffsetFromPainting = 0.0; // If Mario is past the left side, return the left side - } else if (marioZOffsetFromPainting > painting->vSize) { - marioZOffsetFromPainting = - painting->vSize; // If Mario is past the right side, return the right side + if (relZ < 0.0) { + relZ = 0.0; + } else if (relZ > painting->size) { + relZ = painting->size; } - return marioZOffsetFromPainting; + return relZ; } -float painting_find_vertical_ripple_location(struct Painting *painting, s8 rippleSpot) { - switch (rippleSpot) { +/** + * @return The y origin for the ripple, based on ySource. + * For floor paintings, the z-axis is treated as y. + */ +f32 painting_ripple_y(struct Painting *painting, s8 ySource) { + switch (ySource) { case MARIO_Y: - return find_mario_y_position_on_painting(painting); // normal vertical paintings + return painting_mario_y(painting); // normal wall paintings break; case MARIO_Z: - return find_mario_z_position_on_painting(painting); // horizontal paintings use X and Z + return painting_mario_z(painting); // floor paintings use X and Z break; case MIDDLE_Y: - return painting->vSize / 2.0; // some concentric ripples don't care about Mario + return painting->size / 2.0; // some concentric ripples don't care about Mario break; } } -float find_part_of_painting_near_mario(struct Painting *painting) { - float firstQuarter = painting->vSize / 4.0; // 1/4 of the way across the painting - float secondQuarter = painting->vSize / 2.0; // 1/2 of the way across the painting - float thirdQuarter = painting->vSize * 3.0 / 4.0; // 3/4 of the way across the painting +/** + * Return the quarter of the painting that is closest to the floor mario entered. + */ +f32 painting_nearest_4th(struct Painting *painting) { + f32 firstQuarter = painting->size / 4.0; // 1/4 of the way across the painting + f32 secondQuarter = painting->size / 2.0; // 1/2 of the way across the painting + f32 thirdQuarter = painting->size * 3.0 / 4.0; // 3/4 of the way across the painting - if (painting->floorEntered & STAND_LEFT) { + if (painting->floorEntered & RIPPLE_LEFT) { return firstQuarter; - } else if (painting->floorEntered & STAND_MIDDLE) { + } else if (painting->floorEntered & RIPPLE_MIDDLE) { return secondQuarter; - } else if (painting->floorEntered & STAND_RIGHT) { + } else if (painting->floorEntered & RIPPLE_RIGHT) { return thirdQuarter; + + // Same as ripple floors. } else if (painting->floorEntered & ENTER_LEFT) { return firstQuarter; } else if (painting->floorEntered & ENTER_MIDDLE) { @@ -118,718 +274,855 @@ float find_part_of_painting_near_mario(struct Painting *painting) { } } -float find_mario_x_position_on_painting(struct Painting *painting) { - float mario_x_offset_from_painting = gPaintingMarioXPos - painting->vXPos; +/** + * @return mario's x position inside the painting (bounded). + */ +f32 painting_mario_x(struct Painting *painting) { + f32 relX = gPaintingMarioXPos - painting->posX; - if (mario_x_offset_from_painting < 0.0) { - mario_x_offset_from_painting = 0.0; // If Mario is past the left side, return the left side - } else if (mario_x_offset_from_painting > painting->vSize) { - mario_x_offset_from_painting = - painting->vSize; // If Mario is past the right side, return the right side + if (relX < 0.0) { + relX = 0.0; + } else if (relX > painting->size) { + relX = painting->size; } - return mario_x_offset_from_painting; + return relX; } -float painting_find_horizontal_ripple_location(struct Painting *painting, s8 rippleSpot) { - switch (rippleSpot) { - case NEAR_MARIO_LATERALLY: // normal vertical paintings - return find_part_of_painting_near_mario(painting); +/** + * @return The x origin for the ripple, based on xSource. + */ +f32 painting_ripple_x(struct Painting *painting, s8 xSource) { + switch (xSource) { + case NEAREST_4TH: // normal wall paintings + return painting_nearest_4th(painting); break; case MARIO_X: // horizontally placed paintings use X and Z - return find_mario_x_position_on_painting(painting); + return painting_mario_x(painting); break; case MIDDLE_X: // concentric rippling may not care about Mario - return painting->vSize / 2.0; + return painting->size / 2.0; break; } } -void painting_set_ripple_type(s8 intendedStatus, struct Painting *painting, - struct Painting *paintingGroup[], s8 hRippleSpot, s8 vRippleSpot, - s8 resetTimer) { - stopAllRippleExcept(&painting->id, paintingGroup); // make sure no other paintings are rippling - switch (intendedStatus) // set the variables necessary for the given ripple status - { - case RIPPLE_STATE_IDLE: - painting->currRippleMag = painting->passiveRippleMag; - painting->rippleMagMultiplier = painting->passiveRippleMagMultiplier; - painting->currRippleRate = painting->passiveRippleRate; +/** + * Set the painting's state, causing it to start a passive ripple or a ripple from mario entering. + * + * @param state The state to enter + * @param painting,paintingGroup identifies the painting that is changing state + * @param xSource,ySource what to use for the x and y origin of the ripple + * @param resetTimer if 100, set the timer to 0 + */ +void painting_state(s8 state, struct Painting *painting, struct Painting *paintingGroup[], + s8 xSource, s8 ySource, s8 resetTimer) { + // make sure no other paintings are rippling + stop_other_paintings(&painting->id, paintingGroup); + + // use a different set of variables depending on the state + switch (state) { + case PAINTING_RIPPLE: + painting->currRippleMag = painting->passiveRippleMag; + painting->rippleDecay = painting->passiveRippleDecay; + painting->currRippleRate = painting->passiveRippleRate; painting->dispersionFactor = painting->passiveDispersionFactor; break; - case RIPPLE_STATE_ENTRY: - painting->currRippleMag = painting->entryRippleMag; - painting->rippleMagMultiplier = painting->entryRippleMagMultiplier; - painting->currRippleRate = painting->entryRippleRate; + + case PAINTING_ENTERED: + painting->currRippleMag = painting->entryRippleMag; + painting->rippleDecay = painting->entryRippleDecay; + painting->currRippleRate = painting->entryRippleRate; painting->dispersionFactor = painting->entryDispersionFactor; break; } - painting->rippleStatus = intendedStatus; - painting->horizontalRippleSpot = - painting_find_horizontal_ripple_location(painting, hRippleSpot); // find the ripple location - painting->verticalRippleSpot = painting_find_vertical_ripple_location(painting, vRippleSpot); + painting->state = state; + painting->rippleX = painting_ripple_x(painting, xSource); + painting->rippleY = painting_ripple_y(painting, ySource); gPaintingMarioYEntry = gPaintingMarioYPos; + + // Because true or false would be too simple... if (resetTimer == RESET_TIMER) { painting->rippleTimer = 0.0f; } - ripplingPainting = painting; + gRipplingPainting = painting; } -void vertical_proximity_ripple_painting_ripple( - struct Painting *painting, - struct Painting - *paintingGroup[]) // For paintings aligned vertically that follow RIPPLE_TRIGGER_PROXIMITY, set - // some flags depending on where Mario is -{ - if (painting->floorEntered & STAND_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); - } else if (painting->floorEntered & STAND_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); - } else if (painting->floorEntered & STAND_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); +/** + * Idle update function for wall paintings that use RIPPLE_TRIGGER_PROXIMITY. + */ +void wall_painting_proximity_idle(struct Painting *painting, struct Painting *paintingGroup[]) { + // Check for mario triggering a ripple + if (painting->floorEntered & RIPPLE_LEFT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_MIDDLE) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_RIGHT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); + + // Check for mario entering } else if (painting->floorEntered & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } else if (painting->floorEntered & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } else if (painting->floorEntered & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } } -void vertical_proximity_ripple_painting_ripple_if_mario_enters( - struct Painting *painting, - struct Painting *paintingGroup[]) // For paintings aligned vertically that follow - // RIPPLE_TRIGGER_PROXIMITY, set some flags if Mario enters -{ +/** + * Rippling update function for wall paintings that use RIPPLE_TRIGGER_PROXIMITY. + */ +void wall_painting_proximity_rippling(struct Painting *painting, struct Painting *paintingGroup[]) { if (painting->floorEntered & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } else if (painting->floorEntered & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } else if (painting->floorEntered & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } } -void vertical_continuous_ripple_painting_ripple( - struct Painting *painting, - struct Painting - *paintingGroup[]) // For paintings aligned vertically that follow RIPPLE_TRIGGER_CONTINUOUS (DDD - // only), set some flags depending on where Mario is -{ - if (painting->floorEntered & STAND_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, - RESET_TIMER); - } else if (painting->floorEntered & STAND_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, - RESET_TIMER); - } else if (painting->floorEntered & STAND_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, - RESET_TIMER); +/** + * Idle update function for wall paintings that use RIPPLE_TRIGGER_CONTINUOUS. + */ +void wall_painting_continuous_idle(struct Painting *painting, struct Painting *paintingGroup[]) { + // Check for mario triggering a ripple + if (painting->floorEntered & RIPPLE_LEFT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_MIDDLE) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_RIGHT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER); + + // Check for mario entering } else if (painting->floorEntered & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } else if (painting->floorEntered & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } else if (painting->floorEntered & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER); } } -void vertical_continuous_ripple_painting_ripple_if_mario_enters( - struct Painting *painting, - struct Painting - *paintingGroup[]) // For paintings aligned vertically that follow RIPPLE_TRIGGER_CONTINUOUS (DDD - // only), set some flags if Mario enters -{ +/** + * Rippling update function for wall paintings that use RIPPLE_TRIGGER_CONTINUOUS. + */ +void wall_painting_continuous_rippling(struct Painting *painting, struct Painting *paintingGroup[]) { if (painting->floorEntered & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, DONT_RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, DONT_RESET); } else if (painting->floorEntered & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, DONT_RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, DONT_RESET); } else if (painting->floorEntered & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, NEAR_MARIO_LATERALLY, - MARIO_Y, DONT_RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, DONT_RESET); } } -void horizontal_proximity_ripple_painting_ripple( - struct Painting *painting, - struct Painting - *paintingGroup[]) // For paintings aligned horizontally that follow RIPPLE_TRIGGER_PROXIMITY - // (these are not found in-game), set some flags depending on where Mario is -{ - if (painting->floorEntered & STAND_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); - } else if (painting->floorEntered & STAND_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); - } else if (painting->floorEntered & STAND_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); - } else if (painting->marioNewlyUnderPainting) { +/** + * Idle update function for floor paintings that use RIPPLE_TRIGGER_PROXIMITY. + * + * No floor paintings use RIPPLE_TRIGGER_PROXIMITY in the game. + */ +void floor_painting_proximity_idle(struct Painting *painting, struct Painting *paintingGroup[]) { + // Check for mario triggering a ripple + if (painting->floorEntered & RIPPLE_LEFT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_MIDDLE) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_RIGHT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); + + // Only check for mario entering if he jumped below the surface + } else if (painting->marioWentUnder) { if (painting->currFloor & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } else if (painting->currFloor & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } else if (painting->currFloor & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } } } -void horizontal_proximity_ripple_painting_ripple_if_mario_enters( - struct Painting *painting, - struct Painting - *paintingGroup[]) // For paintings aligned horizontally that follow RIPPLE_TRIGGER_PROXIMITY - // (these are not found in-game), set some flags if Mario enters -{ - if (painting->marioNewlyUnderPainting) { +/** + * Rippling update function for floor paintings that use RIPPLE_TRIGGER_PROXIMITY. + * + * No floor paintings use RIPPLE_TRIGGER_PROXIMITY in the game. + */ +void floor_painting_proximity_rippling(struct Painting *painting, struct Painting *paintingGroup[]) { + if (painting->marioWentUnder) { if (painting->currFloor & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } else if (painting->currFloor & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } else if (painting->currFloor & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } } } -void horizontal_continuous_ripple_painting_ripple( - struct Painting *painting, - struct Painting - *paintingGroup[]) // For paintings aligned horizontally that follow RIPPLE_TRIGGER_CONTINUOUS - // (HMC and CotMC), set some flags depending on where Mario is -{ - if (painting->floorEntered & STAND_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, - RESET_TIMER); - } else if (painting->floorEntered & STAND_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, - RESET_TIMER); - } else if (painting->floorEntered & STAND_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_IDLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, - RESET_TIMER); +/** + * Idle update function for floor paintings that use RIPPLE_TRIGGER_CONTINUOUS. + * + * Both floor paintings (HMC and CotMC) are hidden behind a door, which hides the ripple's start up. + * The floor just inside the doorway is RIPPLE_LEFT, so the painting starts rippling as soon as mario + * enters the room. + */ +void floor_painting_continuous_idle(struct Painting *painting, struct Painting *paintingGroup[]) { + // Check for mario triggering a ripple + if (painting->floorEntered & RIPPLE_LEFT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_MIDDLE) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER); + } else if (painting->floorEntered & RIPPLE_RIGHT) { + painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER); + + // Check for mario entering } else if (painting->currFloor & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } else if (painting->currFloor & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } else if (painting->currFloor & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER); } } -void horizontal_continuous_ripple_painting_ripple_if_mario_enters( - struct Painting *painting, - struct Painting - *paintingGroup[]) // For paintings aligned horizontally that follow RIPPLE_TRIGGER_CONTINUOUS - // (HMC and CotMC), set some flags if Mario enters -{ - if (painting->marioNewlyUnderPainting) { +/** + * Rippling update function for floor paintings that use RIPPLE_TRIGGER_CONTINUOUS. + */ +void floor_painting_continuous_rippling(struct Painting *painting, struct Painting *paintingGroup[]) { + if (painting->marioWentUnder) { if (painting->currFloor & ENTER_LEFT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - DONT_RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, DONT_RESET); } else if (painting->currFloor & ENTER_MIDDLE) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - DONT_RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, DONT_RESET); } else if (painting->currFloor & ENTER_RIGHT) { - painting_set_ripple_type(RIPPLE_STATE_ENTRY, painting, paintingGroup, MARIO_X, MARIO_Z, - DONT_RESET_TIMER); + painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, DONT_RESET); } } } +/** + * Check for mario entering one of the special floors associated with the painting. + */ void painting_update_floors(struct Painting *painting) { s16 paintingId = painting->id; - s8 leftSideStand = 0; - s8 middleStand = 0; - s8 rightSideStand = 0; - s8 leftSideEnter = 0; - s8 middleEnter = 0; - s8 rightSideEnter = 0; + s8 rippleLeft = 0; + s8 rippleMiddle = 0; + s8 rippleRight = 0; + s8 enterLeft = 0; + s8 enterMiddle = 0; + s8 enterRight = 0; /* The area in front of every painting in the game (except HMC and CotMC, which *\ |* act a little differently) is made up of 3 special floor triangles with special *| |* (unique) surface types. This code checks which surface Mario is currently on *| \* and sets a bitfield accordingly. */ - if (gPaintingMarioFloorType - == paintingId * 3 - + SURFACE_PAINTING_WOBBLE_A6) { // check if Mario's current floor is one of the - // special floors - leftSideStand = STAND_LEFT; + // check if Mario's current floor is one of the special floors + if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WOBBLE_A6) { + rippleLeft = RIPPLE_LEFT; } if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WOBBLE_A7) { - middleStand = STAND_MIDDLE; + rippleMiddle = RIPPLE_MIDDLE; } if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WOBBLE_A8) { - rightSideStand = STAND_RIGHT; + rippleRight = RIPPLE_RIGHT; } if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WARP_D3) { - leftSideEnter = ENTER_LEFT; + enterLeft = ENTER_LEFT; } if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WARP_D4) { - middleEnter = ENTER_MIDDLE; + enterMiddle = ENTER_MIDDLE; } if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WARP_D5) { - rightSideEnter = ENTER_RIGHT; + enterRight = ENTER_RIGHT; } painting->lastFloor = painting->currFloor; - painting->currFloor = leftSideStand + middleStand + rightSideStand + leftSideEnter + middleEnter - + rightSideEnter; // at most 1 of these will be nonzero; - painting->floorEntered = - (painting->lastFloor ^ painting->currFloor) - & painting->currFloor; // floorEntered is true iff currFloor is true and lastFloor is false - // (Mario just entered the floor on this frame) - painting->lastMarioUnderPainting = painting->currMarioUnderPainting; - if (gPaintingMarioYPos < painting->vYPos) { - painting->currMarioUnderPainting = 1; // If Mario is below the painting, set a variable + // at most 1 of these will be nonzero; + painting->currFloor = rippleLeft + rippleMiddle + rippleRight + enterLeft + enterMiddle + enterRight; + + // floorEntered is true iff currFloor is true and lastFloor is false + // (Mario just entered the floor on this frame) + painting->floorEntered = (painting->lastFloor ^ painting->currFloor) & painting->currFloor; + + painting->marioWasUnder = painting->marioIsUnder; + // Check if mario has fallen below the painting (used for floor paintings) + if (gPaintingMarioYPos < painting->posY) { + painting->marioIsUnder = TRUE; } else { - painting->currMarioUnderPainting = 0; // Otherwise, reset it + painting->marioIsUnder = FALSE; } - painting->marioNewlyUnderPainting = - (painting->lastMarioUnderPainting ^ painting->currMarioUnderPainting) - & painting->currMarioUnderPainting; // Again, marioNewlyUnderPainting is true iff he is under it - // this frame but wasn't last frame. + + // mario "went under" if he was not under last frame, but is under now + painting->marioWentUnder = (painting->marioWasUnder ^ painting->marioIsUnder) & painting->marioIsUnder; } -void painting_update_ripple_status(struct Painting *painting) { +/** + * Update the ripple's timer and magnitude, making it propagate outwards. + * + * Automatically changes the painting back to IDLE state (or RIPPLE for continuous paintings) if the + * ripple's magnitude becomes small enough. + */ +void painting_update_ripple_state(struct Painting *painting) { if (gPaintingUpdateCounter != gLastPaintingUpdateCounter) { - painting->currRippleMag *= painting->rippleMagMultiplier; - painting->rippleTimer += - 1.0; //! After ~6.47 days, paintings with RIPPLE_TRIGGER_CONTINUOUS will increment this to - //! 16777216 (1 << 24), at which point it will freeze (due to floating-point - //! imprecision?) and the painting will stop rippling. This happens to HMC, DDD, and - //! CotMC. This happens on Wii VC. Untested on N64 and Wii U VC. + painting->currRippleMag *= painting->rippleDecay; + + //! After ~6.47 days, paintings with RIPPLE_TRIGGER_CONTINUOUS will increment this to + //! 16777216 (1 << 24), at which point it will freeze (due to floating-point + //! imprecision?) and the painting will stop rippling. This happens to HMC, DDD, and + //! CotMC. This happens on Wii VC. Untested on N64 and Wii U VC. + painting->rippleTimer += 1.0; } if (painting->rippleTrigger == RIPPLE_TRIGGER_PROXIMITY) { - if (painting->currRippleMag <= 1.0) // if the painting is barely rippling, make it stop rippling - { - painting->rippleStatus = RIPPLE_STATE_NONE; - ripplingPainting = NULL; + // if the painting is barely rippling, make it stop rippling + if (painting->currRippleMag <= 1.0) { + painting->state = PAINTING_IDLE; + gRipplingPainting = NULL; } } else if (painting->rippleTrigger == RIPPLE_TRIGGER_CONTINUOUS) { - if (painting->rippleStatus == RIPPLE_STATE_ENTRY - && painting->currRippleMag - <= painting->passiveRippleMag) // if the painting is doing the entry ripple but the - // ripples are as small as those from the passive - // ripple, make it do a passive ripple - { - painting->rippleStatus = RIPPLE_STATE_IDLE; + // if the painting is doing the entry ripple but the ripples are as small as those from the + // passive ripple, make it do a passive ripple + // If mario goes below the surface but doesn't warp, the painting will eventually reset. + if (painting->state == PAINTING_ENTERED && painting->currRippleMag <= painting->passiveRippleMag) { + + painting->state = PAINTING_RIPPLE; painting->currRippleMag = painting->passiveRippleMag; - painting->rippleMagMultiplier = painting->passiveRippleMagMultiplier; + painting->rippleDecay = painting->passiveRippleDecay; painting->currRippleRate = painting->passiveRippleRate; painting->dispersionFactor = painting->passiveDispersionFactor; } } } -s16 painting_calculate_point_ripple(struct Painting *painting, float xpos, - float ypos) // note that xpos and ypos correspond to a point on the - // face of the painting, not actual axes -{ - float rippleMag = painting->currRippleMag; - float rippleRate = painting->currRippleRate; - float dispersionFactor = painting->dispersionFactor; - float rippleTimer = painting->rippleTimer; - float hRippleSpot = painting->horizontalRippleSpot; - float vRippleSpot = painting->verticalRippleSpot; - float distanceToRippleSpot; - float scaledDistance; +/** + * @return the ripple function at posX, posY + * note that posX and posY correspond to a point on the face of the painting, not actual axes + */ +s16 calculate_ripple_at_point(struct Painting *painting, f32 posX, f32 posY) { + /// Controls the peaks of the ripple. + f32 rippleMag = painting->currRippleMag; + /// Controls the ripple's frequency + f32 rippleRate = painting->currRippleRate; + /// Controls how fast the ripple spreads + f32 dispersionFactor = painting->dispersionFactor; + /// How far the ripple has spread + f32 rippleTimer = painting->rippleTimer; + /// x and y ripple origin + f32 rippleX = painting->rippleX; + f32 rippleY = painting->rippleY; - xpos *= painting->vSize / DEFAULT_HEIGHT; // scale x position of point by painting size - ypos *= painting->vSize / DEFAULT_HEIGHT; // scale y position of point by painting size - distanceToRippleSpot = - sqrtf((xpos - hRippleSpot) * (xpos - hRippleSpot) - + (ypos - vRippleSpot) * (ypos - vRippleSpot)); // distance from point to ripple spot - scaledDistance = - distanceToRippleSpot / dispersionFactor; // scale distance by dispersion factor so that ripples - // farther from the ripple spot are smaller - if (rippleTimer < scaledDistance) { - return 0; // if the ripple hasn't reached the point yet, make the point magnitude 0 + f32 distanceToOrigin; + f32 rippleDistance; + + posX *= painting->size / PAINTING_SIZE; + posY *= painting->size / PAINTING_SIZE; + distanceToOrigin = sqrtf((posX - rippleX) * (posX - rippleX) + (posY - rippleY) * (posY - rippleY)); + // A larger dispersionFactor makes the ripple spread slower + rippleDistance = distanceToOrigin / dispersionFactor; + if (rippleTimer < rippleDistance) { + // if the ripple hasn't reached the point yet, make the point magnitude 0 + return 0; } else { + // use a cosine wave to make the ripple go up and down, + // scaled by the painting's ripple magnitude + f32 rippleZ = rippleMag * cosf(rippleRate * (2 * M_PI) * (rippleTimer - rippleDistance)); - float rippleHeight = - rippleMag - * cosf(rippleRate * (2 * M_PI) - * (rippleTimer - - scaledDistance)); // use a cosine wave to make the ripple go up and down, and - // scale it by the painting's ripple magnitude - - return round_float(rippleHeight); // round it to an int and return it + // round it to an int and return it + return round_float(rippleZ); } } -s16 painting_conditionally_calculate_point_ripple(struct Painting *painting, s16 condition, - s16 xpos, s16 ypos) { - s16 rippleHeight = 0; +/** + * If movable, return the ripple function at (posX, posY) + * else return 0 + */ +s16 ripple_if_movable(struct Painting *painting, s16 movable, s16 posX, s16 posY) { + s16 rippleZ = 0; - if (condition) { - rippleHeight = painting_calculate_point_ripple(painting, xpos, ypos); + if (movable) { + rippleZ = calculate_ripple_at_point(painting, posX, posY); } - return rippleHeight; + return rippleZ; } -void Print1(struct Painting *painting, s16 *b, s16 c) { - s16 sp1E; +/** + * Allocates and generates a mesh for the rippling painting effect by modifying the passed in `mesh` + * based on the painting's current ripple state. + * + * The `mesh` table describes the location of mesh vertices, whether they move when rippling, and what + * triangles they belong to. + * + * The static mesh passed in is organized into two lists. This function only uses the first list, + * painting_calculate_triangle_normals below uses the second one. + * + * The first list describes the vertices in this format: + * numVertices + * v0 x, v0 y, movable + * ... + * vN x, vN y, movable + * Where x and y are from 0 to PAINTING_SIZE, movable is 0 or 1. + * + * The mesh used in game, seg2_painting_triangle_mesh, is in bin/segment2.c. + */ +void painting_generate_mesh(struct Painting *painting, s16 *mesh, s16 numTris) { + s16 i; - D_8035FFA0 = mem_pool_alloc(gEffectsMemoryPool, c * sizeof(struct Thing)); - if (D_8035FFA0 == NULL) { + gPaintingMesh = mem_pool_alloc(gEffectsMemoryPool, numTris * sizeof(struct PaintingMeshVertex)); + if (gPaintingMesh == NULL) { } - for (sp1E = 0; sp1E < c; sp1E++) { - D_8035FFA0[sp1E].unk0[0] = b[sp1E * 3 + 1]; - D_8035FFA0[sp1E].unk0[1] = b[sp1E * 3 + 2]; - D_8035FFA0[sp1E].unk0[2] = painting_conditionally_calculate_point_ripple( - painting, b[(sp1E + 1) * 3], D_8035FFA0[sp1E].unk0[0], D_8035FFA0[sp1E].unk0[1]); + // accesses are off by 1 since the first entry is the number of vertices + for (i = 0; i < numTris; i++) { + gPaintingMesh[i].pos[0] = mesh[i * 3 + 1]; + gPaintingMesh[i].pos[1] = mesh[i * 3 + 2]; + // The "z coordinate" of each vertex in the mesh is either 1 or 0. Instead of being an + // actual coordinate, it just determines whether the vertex moves + gPaintingMesh[i].pos[2] = ripple_if_movable(painting, mesh[i * 3 + 3], + gPaintingMesh[i].pos[0], gPaintingMesh[i].pos[1]); } } -void Print2(s16 *a, s16 b, s16 c) { - s16 sp46; +/** + * Calculate the surface normals of each triangle in the generated ripple mesh. + * + * The static mesh passed in is organized into two lists. This function uses the second list, + * painting_generate_mesh above uses the first one. + * + * The second list in `mesh` describes the mesh's triangles in this format: + * numTris + * tri0 v0, tri0 v1, tri0 v2 + * ... + * triN v0, triN v1, triN v2 + * Where each v0, v1, v2 is an index into the first list in `mesh`. + * + * The mesh used in game, seg2_painting_triangle_mesh, is in bin/segment2.c. + */ +void painting_calculate_triangle_normals(s16 *mesh, s16 numVtx, s16 numTris) { + s16 i; - D_8035FFA4 = mem_pool_alloc(gEffectsMemoryPool, c * sizeof(Vec3f)); - if (D_8035FFA4 == NULL) { + gPaintingTriNorms = mem_pool_alloc(gEffectsMemoryPool, numTris * sizeof(Vec3f)); + if (gPaintingTriNorms == NULL) { } - for (sp46 = 0; sp46 < c; sp46++) { - s16 sp44 = b * 3 + sp46 * 3 + 2; - s16 sp42 = a[sp44]; - s16 sp40 = a[sp44 + 1]; - s16 sp3E = a[sp44 + 2]; - f32 sp38 = D_8035FFA0[sp42].unk0[0]; - f32 sp34 = D_8035FFA0[sp42].unk0[1]; - f32 sp30 = D_8035FFA0[sp42].unk0[2]; - f32 sp2C = D_8035FFA0[sp40].unk0[0]; - f32 sp28 = D_8035FFA0[sp40].unk0[1]; - f32 sp24 = D_8035FFA0[sp40].unk0[2]; - f32 sp20 = D_8035FFA0[sp3E].unk0[0]; - f32 sp1C = D_8035FFA0[sp3E].unk0[1]; - f32 sp18 = D_8035FFA0[sp3E].unk0[2]; + for (i = 0; i < numTris; i++) { + s16 tri = numVtx * 3 + i * 3 + 2; // Add 2 because of the 2 length entries preceding the list + s16 v0 = mesh[tri]; + s16 v1 = mesh[tri + 1]; + s16 v2 = mesh[tri + 2]; - D_8035FFA4[sp46][0] = (sp28 - sp34) * (sp18 - sp24) - (sp24 - sp30) * (sp1C - sp28); - D_8035FFA4[sp46][1] = (sp24 - sp30) * (sp20 - sp2C) - (sp2C - sp38) * (sp18 - sp24); - D_8035FFA4[sp46][2] = (sp2C - sp38) * (sp1C - sp28) - (sp28 - sp34) * (sp20 - sp2C); + f32 x0 = gPaintingMesh[v0].pos[0]; + f32 y0 = gPaintingMesh[v0].pos[1]; + f32 z0 = gPaintingMesh[v0].pos[2]; + + f32 x1 = gPaintingMesh[v1].pos[0]; + f32 y1 = gPaintingMesh[v1].pos[1]; + f32 z1 = gPaintingMesh[v1].pos[2]; + + f32 x2 = gPaintingMesh[v2].pos[0]; + f32 y2 = gPaintingMesh[v2].pos[1]; + f32 z2 = gPaintingMesh[v2].pos[2]; + + // Cross product to find each triangle's normal vector + gPaintingTriNorms[i][0] = (y1 - y0) * (z2 - z1) - (z1 - z0) * (y2 - y1); + gPaintingTriNorms[i][1] = (z1 - z0) * (x2 - x1) - (x1 - x0) * (z2 - z1); + gPaintingTriNorms[i][2] = (x1 - x0) * (y2 - y1) - (y1 - y0) * (x2 - x1); } } -s8 small_float_to_byte(float decimal) // This function converts a decimal to a signed byte by - // multiplying it by 127 or 128 and rounding away from 0. -{ - s8 convertedFloat; +/** + * Rounds a floating-point component of a normal vector to an s8 by multiplying it by 127 or 128 and + * rounding away from 0. + */ +s8 normalize_component(f32 comp) { + s8 rounded; - if (decimal > 0.0) { - convertedFloat = decimal * 127.0 + 0.5; // round up - } else if (decimal < 0.0) { - convertedFloat = decimal * 128.0 - 0.5; // round down + if (comp > 0.0) { + rounded = comp * 127.0 + 0.5; // round up + } else if (comp < 0.0) { + rounded = comp * 128.0 - 0.5; // round down } else { - convertedFloat = 0; // don't round 0 + rounded = 0; // don't round 0 } - return convertedFloat; + return rounded; } -void func_802D39DC(s16 *a, s16 b) { +/** + * Approximates the painting mesh's vertex normals by averaging the normals of all triangles sharing a + * vertex. Used for gouraud lighting. + * + * After each triangle's surface normal is calculated, the `neighborTris` table describes which triangles + * each vertex should use when calculating the average normal vector. + * + * The table is a list of entries in this format: + * numNeighbors, tri0, tri1, ..., triN + * + * Where each 'tri' is an index into gPaintingTriNorms. + * Entry i in `neighborTris` corresponds to the vertex at gPaintingMesh[i] + * + * The table used in game, seg2_painting_mesh_neighbor_tris, is in bin/segment2.c. + */ +void painting_average_vertex_normals(s16 *neighborTris, s16 numVtx) { UNUSED s16 unused; - s16 sp34; - s16 index; - s16 index2; - s16 sp2E; - s16 sp2C = 0; + s16 tri; + s16 i; + s16 j; + s16 neighbors; + s16 entry = 0; - for (index = 0; index < b; index++) { - f32 sp28 = 0.0f; - f32 sp24 = 0.0f; - f32 sp20 = 0.0f; - f32 sp1C; + for (i = 0; i < numVtx; i++) { + f32 nx = 0.0f; + f32 ny = 0.0f; + f32 nz = 0.0f; + f32 nlen; - sp2E = a[sp2C]; - for (index2 = 0; index2 < sp2E; index2++) { - sp34 = a[sp2C + index2 + 1]; - sp28 += D_8035FFA4[sp34][0]; - sp24 += D_8035FFA4[sp34][1]; - sp20 += D_8035FFA4[sp34][2]; + // The first number of each entry is the number of adjacent tris + neighbors = neighborTris[entry]; + for (j = 0; j < neighbors; j++) { + tri = neighborTris[entry + j + 1]; + nx += gPaintingTriNorms[tri][0]; + ny += gPaintingTriNorms[tri][1]; + nz += gPaintingTriNorms[tri][2]; } - sp2C += sp2E + 1; - sp28 /= sp2E; - sp24 /= sp2E; - sp20 /= sp2E; - sp1C = sqrtf(sp28 * sp28 + sp24 * sp24 + sp20 * sp20); - if (sp1C == 0.0) { - D_8035FFA0[index].unk6[0] = 0; - D_8035FFA0[index].unk6[1] = 0; - D_8035FFA0[index].unk6[2] = 0; + // Move to the next vertex's entry + entry += neighbors + 1; + + // average the surface normals from each neighboring tri + nx /= neighbors; + ny /= neighbors; + nz /= neighbors; + nlen = sqrtf(nx * nx + ny * ny + nz * nz); + + if (nlen == 0.0) { + gPaintingMesh[i].norm[0] = 0; + gPaintingMesh[i].norm[1] = 0; + gPaintingMesh[i].norm[2] = 0; } else { - D_8035FFA0[index].unk6[0] = small_float_to_byte(sp28 / sp1C); - D_8035FFA0[index].unk6[1] = small_float_to_byte(sp24 / sp1C); - D_8035FFA0[index].unk6[2] = small_float_to_byte(sp20 / sp1C); + gPaintingMesh[i].norm[0] = normalize_component(nx / nlen); + gPaintingMesh[i].norm[1] = normalize_component(ny / nlen); + gPaintingMesh[i].norm[2] = normalize_component(nz / nlen); } } } -void *func_802D3CF0(u8 *img, s16 tWidth, s16 tHeight, s16 *d, s16 e, s16 f, u8 g) { - s16 sp9E; - s16 sp9C; - s16 sp9A; - s16 sp98; - s16 sp96; +/** + * Creates a display list that draws the rippling painting, with 'img' mapped to the painting's mesh, + * using 'textureMap'. + * + * If the textureMap doesn't describe the whole mesh, then multiple calls are needed to draw the whole + * painting. + */ +Gfx *render_painting(u8 *img, s16 tWidth, s16 tHeight, s16 *textureMap, s16 mapVerts, s16 mapTris, u8 alpha) { + s16 group; + s16 map; + s16 triGroup; + s16 mapping; + s16 meshVtx; s16 tx; s16 ty; - s16 sp90 = f / 5; - s16 sp8E = f % 5; - s16 sp8C = f * 3; - s16 sp8A = sp90 * 2 + sp8E + 7; - Vtx *verts = alloc_display_list(sp8C * sizeof(*verts)); - Gfx *sp80 = alloc_display_list(sp8A * sizeof(*sp80)); - Gfx *sp7C = sp80; - if (verts == NULL || sp80 == NULL) { + // We can fit 15 (16 / 3) vertices in the RSP's vertex buffer. + // Group triangles by 5, with one remainder group. + s16 triGroups = mapTris / 5; + s16 remGroupTris = mapTris % 5; + s16 numVtx = mapTris * 3; + + s16 commands = triGroups * 2 + remGroupTris + 7; + Vtx *verts = alloc_display_list(numVtx * sizeof(Vtx)); + Gfx *dlist = alloc_display_list(commands * sizeof(Gfx)); + Gfx *gfx = dlist; + + if (verts == NULL || dlist == NULL) { } - gLoadBlockTexture(sp7C++, tWidth, tHeight, G_IM_FMT_RGBA, img); + gLoadBlockTexture(gfx++, tWidth, tHeight, G_IM_FMT_RGBA, img); - for (sp9E = 0; sp9E < sp90; sp9E++) { - sp9A = e * 3 + sp9E * 15 + 2; - for (sp9C = 0; sp9C < 15; sp9C++) { - sp98 = d[sp9A + sp9C]; - sp96 = d[sp98 * 3 + 1]; - tx = d[sp98 * 3 + 2]; - ty = d[sp98 * 3 + 3]; - make_vertex(verts, sp9E * 15 + sp9C, D_8035FFA0[sp96].unk0[0], D_8035FFA0[sp96].unk0[1], - D_8035FFA0[sp96].unk0[2], tx, ty, D_8035FFA0[sp96].unk6[0], - D_8035FFA0[sp96].unk6[1], D_8035FFA0[sp96].unk6[2], g); + // Draw the groups of 5 first + for (group = 0; group < triGroups; group++) { + + // The triangle groups are the second part of the texture map. + // Each group is a list of 15 mappings + triGroup = mapVerts * 3 + group * 15 + 2; + for (map = 0; map < 15; map++) { + // The mapping is just an index into the earlier part of the textureMap + // Some mappings are repeated, for example, when multiple triangles share a vertex + mapping = textureMap[triGroup + map]; + + // The first entry is the ID of the vertex in the mesh + meshVtx = textureMap[mapping * 3 + 1]; + + // The next two are the texture coordinates for that vertex + tx = textureMap[mapping * 3 + 2]; + ty = textureMap[mapping * 3 + 3]; + + // Map the texture and place it in the verts array + make_vertex(verts, group * 15 + map, gPaintingMesh[meshVtx].pos[0], gPaintingMesh[meshVtx].pos[1], + gPaintingMesh[meshVtx].pos[2], tx, ty, gPaintingMesh[meshVtx].norm[0], + gPaintingMesh[meshVtx].norm[1], gPaintingMesh[meshVtx].norm[2], alpha); } - gSPVertex(sp7C++, VIRTUAL_TO_PHYSICAL(verts + sp9E * 15), 15, 0); - gSPDisplayList(sp7C++, dl_paintings_draw_ripples); + + // Load the vertices and draw the 5 triangles + gSPVertex(gfx++, VIRTUAL_TO_PHYSICAL(verts + group * 15), 15, 0); + gSPDisplayList(gfx++, dl_paintings_draw_ripples); } - sp9A = e * 3 + sp90 * 15 + 2; - for (sp9C = 0; sp9C < sp8E * 3; sp9C++) { - sp98 = d[sp9A + sp9C]; - sp96 = d[sp98 * 3 + 1]; - tx = d[sp98 * 3 + 2]; - ty = d[sp98 * 3 + 3]; - make_vertex(verts, sp90 * 15 + sp9C, D_8035FFA0[sp96].unk0[0], D_8035FFA0[sp96].unk0[1], - D_8035FFA0[sp96].unk0[2], tx, ty, D_8035FFA0[sp96].unk6[0], - D_8035FFA0[sp96].unk6[1], D_8035FFA0[sp96].unk6[2], g); + // One group left with < 5 triangles + triGroup = mapVerts * 3 + triGroups * 15 + 2; + // Map the texture to the triangles + for (map = 0; map < remGroupTris * 3; map++) { + mapping = textureMap[triGroup + map]; + meshVtx = textureMap[mapping * 3 + 1]; + tx = textureMap[mapping * 3 + 2]; + ty = textureMap[mapping * 3 + 3]; + make_vertex(verts, triGroups * 15 + map, gPaintingMesh[meshVtx].pos[0], gPaintingMesh[meshVtx].pos[1], + gPaintingMesh[meshVtx].pos[2], tx, ty, gPaintingMesh[meshVtx].norm[0], + gPaintingMesh[meshVtx].norm[1], gPaintingMesh[meshVtx].norm[2], alpha); } - gSPVertex(sp7C++, VIRTUAL_TO_PHYSICAL(verts + sp90 * 15), sp8E * 3, 0); - for (sp9E = 0; sp9E < sp8E; sp9E++) - gSP1Triangle(sp7C++, sp9E * 3, sp9E * 3 + 1, sp9E * 3 + 2, 0); - gSPEndDisplayList(sp7C); - return sp80; + + // Draw the triangles individually + gSPVertex(gfx++, VIRTUAL_TO_PHYSICAL(verts + triGroups * 15), remGroupTris * 3, 0); + for (group = 0; group < remGroupTris; group++) { + gSP1Triangle(gfx++, group * 3, group * 3 + 1, group * 3 + 2, 0); + } + + gSPEndDisplayList(gfx); + return dlist; } -Gfx *func_802D43FC(struct Painting *painting) { - float sp4C = painting->vSize / DEFAULT_HEIGHT; - Mtx *sp48 = alloc_display_list(sizeof(Mtx)); - Mtx *sp44 = alloc_display_list(sizeof(Mtx)); - Mtx *sp40 = alloc_display_list(sizeof(Mtx)); - Mtx *sp3C = alloc_display_list(sizeof(Mtx)); - Gfx *sp38 = alloc_display_list(5 * sizeof(Gfx)); - Gfx *sp34 = sp38; +/** + * Orient the painting mesh for rendering. + */ +Gfx *painting_model_view_transform(struct Painting *painting) { + f32 sizeRatio = painting->size / PAINTING_SIZE; + Mtx *rotX = alloc_display_list(sizeof(Mtx)); + Mtx *rotY = alloc_display_list(sizeof(Mtx)); + Mtx *translate = alloc_display_list(sizeof(Mtx)); + Mtx *scale = alloc_display_list(sizeof(Mtx)); + Gfx *dlist = alloc_display_list(5 * sizeof(Gfx)); + Gfx *gfx = dlist; - if (sp48 == NULL || sp44 == NULL || sp40 == NULL || sp38 == NULL) { + if (rotX == NULL || rotY == NULL || translate == NULL || dlist == NULL) { } - guTranslate(sp40, painting->vXPos, painting->vYPos, painting->vZPos); - guRotate(sp48, painting->vXRotation, 1.0f, 0.0f, 0.0f); - guRotate(sp44, painting->vYRotation, 0.0f, 1.0f, 0.0f); - guScale(sp3C, sp4C, sp4C, sp4C); + guTranslate(translate, painting->posX, painting->posY, painting->posZ); + guRotate(rotX, painting->pitch, 1.0f, 0.0f, 0.0f); + guRotate(rotY, painting->yaw, 0.0f, 1.0f, 0.0f); + guScale(scale, sizeRatio, sizeRatio, sizeRatio); - gSPMatrix(sp34++, sp40, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH); - gSPMatrix(sp34++, sp48, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); - gSPMatrix(sp34++, sp44, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); - gSPMatrix(sp34++, sp3C, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); - gSPEndDisplayList(sp34); + gSPMatrix(gfx++, translate, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH); + gSPMatrix(gfx++, rotX, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + gSPMatrix(gfx++, rotY, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + gSPMatrix(gfx++, scale, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH); + gSPEndDisplayList(gfx); - return sp38; + return dlist; } -Gfx *func_802D45FC(struct Painting *painting) { - s16 sp66; - s16 sp64; - s16 sp62; - s16 *sp5C; - s16 faceCount = painting->faceCount; +/** + * Ripple a painting that has 1 or more images that need to be mapped + */ +Gfx *painting_ripple_image(struct Painting *painting) { + s16 meshVerts; + s16 meshTris; + s16 i; + s16 *textureMap; + s16 imageCount = painting->imageCount; s16 tWidth = painting->textureWidth; s16 tHeight = painting->textureHeight; - s16 **meshArray = segmented_to_virtual(painting->meshData); - u8 **tArray = segmented_to_virtual(painting->textureArray); - Gfx *sp48 = alloc_display_list((faceCount + 6) * sizeof(Gfx)); - Gfx *sp44 = sp48; + s16 **textureMaps = segmented_to_virtual(painting->textureMaps); + u8 **textures = segmented_to_virtual(painting->textureArray); + Gfx *dlist = alloc_display_list((imageCount + 6) * sizeof(Gfx)); + Gfx *gfx = dlist; - if (sp48 == NULL) { - return sp48; + if (dlist == NULL) { + return dlist; } - gSPDisplayList(sp44++, func_802D43FC(painting)); - gSPDisplayList(sp44++, dl_paintings_rippling_begin); - gSPDisplayList(sp44++, painting->displayList68); + gSPDisplayList(gfx++, painting_model_view_transform(painting)); + gSPDisplayList(gfx++, dl_paintings_rippling_begin); + gSPDisplayList(gfx++, painting->rippleDisplayList); - for (sp62 = 0; sp62 < faceCount; sp62++) { - sp5C = segmented_to_virtual(meshArray[sp62]); - sp66 = sp5C[0]; - sp64 = sp5C[sp66 * 3 + 1]; - gSPDisplayList(sp44++, func_802D3CF0(tArray[sp62], tWidth, tHeight, sp5C, sp66, sp64, - painting->brightness)); + // Map each image to the mesh's vertices + for (i = 0; i < imageCount; i++) { + textureMap = segmented_to_virtual(textureMaps[i]); + meshVerts = textureMap[0]; + meshTris = textureMap[meshVerts * 3 + 1]; + gSPDisplayList(gfx++, render_painting(textures[i], tWidth, tHeight, textureMap, meshVerts, meshTris, painting->alpha)); } - painting_update_ripple_status(painting); - gSPPopMatrix(sp44++, G_MTX_MODELVIEW); - gSPDisplayList(sp44++, dl_paintings_rippling_end); - gSPEndDisplayList(sp44); - return sp48; + + // Update the ripple, may automatically reset the painting's state. + painting_update_ripple_state(painting); + + gSPPopMatrix(gfx++, G_MTX_MODELVIEW); + gSPDisplayList(gfx++, dl_paintings_rippling_end); + gSPEndDisplayList(gfx); + return dlist; } -Gfx *func_802D4874(struct Painting *painting) { - s16 sp5E; - s16 sp5C; - s16 *sp58; +/** + * Ripple a painting that has 1 "environment map" texture. + */ +Gfx *painting_ripple_env_mapped(struct Painting *painting) { + s16 meshVerts; + s16 meshTris; + s16 *textureMap; s16 tWidth = painting->textureWidth; s16 tHeight = painting->textureHeight; - s16 **meshArray = segmented_to_virtual(painting->meshData); + s16 **textureMaps = segmented_to_virtual(painting->textureMaps); u8 **tArray = segmented_to_virtual(painting->textureArray); - Gfx *sp48 = alloc_display_list(7 * sizeof(Gfx)); - Gfx *sp44 = sp48; + Gfx *dlist = alloc_display_list(7 * sizeof(Gfx)); + Gfx *gfx = dlist; - if (sp48 == NULL) { - return sp48; + if (dlist == NULL) { + return dlist; } - gSPDisplayList(sp44++, func_802D43FC(painting)); - gSPDisplayList(sp44++, dl_paintings_env_mapped_begin); - gSPDisplayList(sp44++, painting->displayList68); - sp58 = segmented_to_virtual(meshArray[0]); - sp5E = sp58[0]; - sp5C = sp58[sp5E * 3 + 1]; - gSPDisplayList(sp44++, - func_802D3CF0(tArray[0], tWidth, tHeight, sp58, sp5E, sp5C, painting->brightness)); - painting_update_ripple_status(painting); - gSPPopMatrix(sp44++, G_MTX_MODELVIEW); - gSPDisplayList(sp44++, dl_paintings_env_mapped_end); - gSPEndDisplayList(sp44); - return sp48; + gSPDisplayList(gfx++, painting_model_view_transform(painting)); + gSPDisplayList(gfx++, dl_paintings_env_mapped_begin); + gSPDisplayList(gfx++, painting->rippleDisplayList); + + // Map the image to the mesh's vertices + textureMap = segmented_to_virtual(textureMaps[0]); + meshVerts = textureMap[0]; + meshTris = textureMap[meshVerts * 3 + 1]; + gSPDisplayList(gfx++, render_painting(tArray[0], tWidth, tHeight, textureMap, meshVerts, meshTris, painting->alpha)); + + // Update the ripple, may automatically reset the painting's state. + painting_update_ripple_state(painting); + + gSPPopMatrix(gfx++, G_MTX_MODELVIEW); + gSPDisplayList(gfx++, dl_paintings_env_mapped_end); + gSPEndDisplayList(gfx); + return dlist; } +/** + * Generates a mesh, calculates vertex normals for lighting, and renders a rippling painting. + * The mesh and vertex normals are regenerated and freed every frame. + */ Gfx *display_painting_rippling(struct Painting *painting) { - s16 *sp34 = segmented_to_virtual(seg2_triangle_mesh); - s16 *sp30 = segmented_to_virtual(seg2_mesh_order); - s16 sp2E = sp34[0]; - s16 sp2C = sp34[sp2E * 3 + 1]; - Gfx *sp28; + s16 *mesh = segmented_to_virtual(seg2_painting_triangle_mesh); + s16 *neighborTris = segmented_to_virtual(seg2_painting_mesh_neighbor_tris); + s16 numVtx = mesh[0]; + s16 numTris = mesh[numVtx * 3 + 1]; + Gfx *dlist; - Print1(painting, sp34, sp2E); - Print2(sp34, sp2E, sp2C); - func_802D39DC(sp30, sp2E); - switch (painting->rippleShape) { - case RIPPLE_SHAPE_WAVE: - sp28 = func_802D45FC(painting); + // Generate the mesh and its lighting data + painting_generate_mesh(painting, mesh, numVtx); + painting_calculate_triangle_normals(mesh, numVtx, numTris); + painting_average_vertex_normals(neighborTris, numVtx); + + // Map the painting's texture depending on the painting's texture type. + switch (painting->textureType) { + case PAINTING_IMAGE: + dlist = painting_ripple_image(painting); break; - case RIPPLE_SHAPE_CONCENTRIC: - sp28 = func_802D4874(painting); + case PAINTING_ENV_MAP: + dlist = painting_ripple_env_mapped(painting); break; } - mem_pool_free(gEffectsMemoryPool, D_8035FFA0); - mem_pool_free(gEffectsMemoryPool, D_8035FFA4); - return sp28; + + // The mesh data is freed every frame. + mem_pool_free(gEffectsMemoryPool, gPaintingMesh); + mem_pool_free(gEffectsMemoryPool, gPaintingTriNorms); + return dlist; } +/** + * Render a normal painting. + */ Gfx *display_painting_not_rippling(struct Painting *painting) { - Gfx *sp2C = alloc_display_list(4 * sizeof(Gfx)); - Gfx *sp28 = sp2C; + Gfx *dlist = alloc_display_list(4 * sizeof(Gfx)); + Gfx *gfx = dlist; - if (sp2C == NULL) { - return sp2C; + if (dlist == NULL) { + return dlist; } - gSPDisplayList(sp28++, func_802D43FC(painting)); - gSPDisplayList(sp28++, painting->displayList58); - gSPPopMatrix(sp28++, G_MTX_MODELVIEW); - gSPEndDisplayList(sp28); - return sp2C; + gSPDisplayList(gfx++, painting_model_view_transform(painting)); + gSPDisplayList(gfx++, painting->normalDisplayList); + gSPPopMatrix(gfx++, G_MTX_MODELVIEW); + gSPEndDisplayList(gfx); + return dlist; } +/** + * Clear mario-related state and clear gRipplingPainting. + */ void reset_painting(struct Painting *painting) { painting->lastFloor = 0; painting->currFloor = 0; painting->floorEntered = 0; - painting->lastMarioUnderPainting = 0; - painting->currMarioUnderPainting = 0; - painting->marioNewlyUnderPainting = 0; - ripplingPainting = NULL; + painting->marioWasUnder = 0; + painting->marioIsUnder = 0; + painting->marioWentUnder = 0; + + gRipplingPainting = NULL; } -void update_ddd_painting(struct Painting *painting, float frontPos, float backPos, - float speed) // Tells the DDD painting whether to move back -{ - u32 dddFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, - DIRE_DIRE_DOCKS - 1); // Obtain the DDD star flags - u32 saveFileFlags = save_file_get_flags(); // Get the other save file flags - u32 bowsersSubBeaten = - dddFlags & BOARD_BOWSERS_SUB; // Find out whether Board Bowser's Sub was collected - u32 dddBack = saveFileFlags & SAVE_FLAG_DDD_MOVED_BACK; // Check whether DDD has already moved back +/** + * Controls the x coordinate of the DDD painting. + * + * Before mario gets the "Board Bowser's Sub" star in DDD, the painting spawns at frontPos. + * + * If mario just got the star, the painting's x coordinate moves to backPos at a rate of `speed` units. + * + * When the painting reaches backPos, a save flag is set so that the painting will spawn at backPos + * whenever it loads. + * + * This function also sets gDddPaintingStatus, which controls the warp: + * 0 (0b00): set x coordinate to frontPos + * 2 (0b10): set x coordinate to backPos + * 3 (0b11): same as 2. Bit 0 is ignored + */ +void move_ddd_painting(struct Painting *painting, f32 frontPos, f32 backPos, f32 speed) { + // Obtain the DDD star flags + u32 dddFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_DDD - 1); + // Get the other save file flags + u32 saveFileFlags = save_file_get_flags(); + // Find out whether Board Bowser's Sub was collected + u32 bowsersSubBeaten = dddFlags & BOARD_BOWSERS_SUB; + // Check whether DDD has already moved back + u32 dddBack = saveFileFlags & SAVE_FLAG_DDD_MOVED_BACK; if (!bowsersSubBeaten && !dddBack) { - painting->vXPos = frontPos; // If we haven't collected the star or moved the painting, put the - // painting at the front - dddStatus = 0; - } else if (bowsersSubBeaten - && !dddBack) // If we've collected the star but not moved the painting back, - { - painting->vXPos += - speed; // Each frame, move the painting by a certain speed towards the back area. - dddStatus = BOWSERS_SUB_BEATEN; - if (painting->vXPos >= backPos) { - painting->vXPos = backPos; - save_file_set_flags( - SAVE_FLAG_DDD_MOVED_BACK); // Tell the save file that we've moved DDD back. + // If we haven't collected the star or moved the painting, put the painting at the front + painting->posX = frontPos; + gDddPaintingStatus = 0; + } else if (bowsersSubBeaten && !dddBack) { + // If we've collected the star but not moved the painting back, + // Each frame, move the painting by a certain speed towards the back area. + painting->posX += speed; + gDddPaintingStatus = BOWSERS_SUB_BEATEN; + if (painting->posX >= backPos) { + painting->posX = backPos; + // Tell the save file that we've moved DDD back. + save_file_set_flags(SAVE_FLAG_DDD_MOVED_BACK); } } else if (bowsersSubBeaten && dddBack) { - painting->vXPos = - backPos; // If the painting has already moved back, place it in the back position. - dddStatus = BOWSERS_SUB_BEATEN | DDD_BACK; + // If the painting has already moved back, place it in the back position. + painting->posX = backPos; + gDddPaintingStatus = BOWSERS_SUB_BEATEN | DDD_BACK; } } -struct Struct802D4E04 { - u8 filler0[2]; - s16 unk2; - u8 filler4[20]; - u32 unk18; // the upper half is the painting's id -}; - -void func_802D4E04(struct GraphNodeGenerated *a, struct Painting *b) { - switch (b->brightness) { - case 0xFF: // brightest - a->fnNode.node.flags = (a->fnNode.node.flags & 0xFF) | 0x100; +/** + * Set the painting's node's layer based on its alpha + */ +void set_painting_layer(struct GraphNodeGenerated *gen, struct Painting *painting) { + switch (painting->alpha) { + case 0xFF: // Opaque + gen->fnNode.node.flags = (gen->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8); break; default: - a->fnNode.node.flags = (a->fnNode.node.flags & 0xFF) | 0x500; + gen->fnNode.node.flags = (gen->fnNode.node.flags & 0xFF) | (LAYER_TRANSPARENT << 8); break; } } +/** + * Display either a normal painting or a rippling one depending on the painting's ripple status + */ Gfx *display_painting(struct Painting *painting) { - switch (painting->rippleStatus) { - case RIPPLE_STATE_NONE: + switch (painting->state) { + case PAINTING_IDLE: return display_painting_not_rippling(painting); break; default: @@ -838,96 +1131,117 @@ Gfx *display_painting(struct Painting *painting) { } } -void vertical_painting_ripple(struct Painting *painting, struct Painting *paintingGroup[]) { - if (painting->rippleTrigger - == RIPPLE_TRIGGER_PROXIMITY) // make the painting ripple using a different function based on its - // ripple trigger and status - { - switch (painting->rippleStatus) { - case RIPPLE_STATE_NONE: - vertical_proximity_ripple_painting_ripple(painting, paintingGroup); +/** + * Update function for wall paintings. + * Calls a different update function depending on the painting's ripple trigger and current state. + */ +void wall_painting_update(struct Painting *painting, struct Painting *paintingGroup[]) { + if (painting->rippleTrigger == RIPPLE_TRIGGER_PROXIMITY) { + switch (painting->state) { + case PAINTING_IDLE: + wall_painting_proximity_idle(painting, paintingGroup); break; - case RIPPLE_STATE_IDLE: - vertical_proximity_ripple_painting_ripple_if_mario_enters(painting, paintingGroup); + case PAINTING_RIPPLE: + wall_painting_proximity_rippling(painting, paintingGroup); break; } } else if (painting->rippleTrigger == RIPPLE_TRIGGER_CONTINUOUS) { - switch (painting->rippleStatus) { - case RIPPLE_STATE_NONE: - vertical_continuous_ripple_painting_ripple(painting, paintingGroup); + switch (painting->state) { + case PAINTING_IDLE: + wall_painting_continuous_idle(painting, paintingGroup); break; - case RIPPLE_STATE_IDLE: - vertical_continuous_ripple_painting_ripple_if_mario_enters(painting, paintingGroup); + case PAINTING_RIPPLE: + wall_painting_continuous_rippling(painting, paintingGroup); break; } } } -void horizontal_painting_ripple(struct Painting *painting, struct Painting *paintingGroup[]) { - if (painting->rippleTrigger - == RIPPLE_TRIGGER_PROXIMITY) // make the painting ripple using a different function based on its - // ripple trigger and status - { - switch (painting->rippleStatus) // No horizontal proximity ripple paintings exist in-game. - { - case RIPPLE_STATE_NONE: - horizontal_proximity_ripple_painting_ripple(painting, paintingGroup); +/** + * Update function for floor paintings (HMC and CotMC) + * Calls a different update function depending on the painting's ripple trigger and current state. + * + * No floor paintings use RIPPLE_TRIGGER_PROXIMITY in the game. + */ +void floor_painting_update(struct Painting *painting, struct Painting *paintingGroup[]) { + if (painting->rippleTrigger == RIPPLE_TRIGGER_PROXIMITY) { + switch (painting->state) { + case PAINTING_IDLE: + floor_painting_proximity_idle(painting, paintingGroup); break; - case RIPPLE_STATE_IDLE: - horizontal_proximity_ripple_painting_ripple_if_mario_enters(painting, paintingGroup); + case PAINTING_RIPPLE: + floor_painting_proximity_rippling(painting, paintingGroup); break; } } else if (painting->rippleTrigger == RIPPLE_TRIGGER_CONTINUOUS) { - switch (painting->rippleStatus) { - case RIPPLE_STATE_NONE: - horizontal_continuous_ripple_painting_ripple(painting, paintingGroup); + switch (painting->state) { + case PAINTING_IDLE: + floor_painting_continuous_idle(painting, paintingGroup); break; - case RIPPLE_STATE_IDLE: - horizontal_continuous_ripple_painting_ripple_if_mario_enters(painting, paintingGroup); + case PAINTING_RIPPLE: + floor_painting_continuous_rippling(painting, paintingGroup); break; } } } -Gfx *Geo18_802D5B98(s32 run, struct GraphNode *node, UNUSED void *context) { - struct GraphNodeGenerated *sp2C = (struct GraphNodeGenerated *) node; - s32 sp28 = (sp2C->parameter >> 8) & 0xFF; - s32 id = sp2C->parameter & 0xFF; - Gfx *sp20 = NULL; - struct Painting **paintingGroup = paintingGroups[sp28]; +/** + * Render and update the painting whose id and group matches the values in the GraphNode's parameter. + * Use PAINTING_ID(id, group) to set the right parameter in a level's geo layout. + */ +Gfx *geo_painting_draw(s32 callContext, struct GraphNode *node, UNUSED void *context) { + struct GraphNodeGenerated *gen = (struct GraphNodeGenerated *) node; + s32 group = (gen->parameter >> 8) & 0xFF; + s32 id = gen->parameter & 0xFF; + Gfx *paintingDlist = NULL; + struct Painting **paintingGroup = sPaintingGroups[group]; struct Painting *painting = segmented_to_virtual(paintingGroup[id]); - if (run != TRUE) { + if (callContext != GEO_CONTEXT_RENDER) { reset_painting(painting); - } else if (run == TRUE) // because the extra comparison was really necessary... - { - if (sp28 == 1 && id == PAINTING_ID_DDD) { // painting is DDD painting - update_ddd_painting(painting, 3456.0f, 5529.6f, 20.0f); + } else if (callContext == GEO_CONTEXT_RENDER) { + + // Update the ddd painting before drawing + if (group == 1 && id == PAINTING_ID_DDD) { + move_ddd_painting(painting, 3456.0f, 5529.6f, 20.0f); } - func_802D4E04(sp2C, painting); - sp20 = display_painting(painting); + + // Determine if the painting is transparent + set_painting_layer(gen, painting); + + // Draw before updating + paintingDlist = display_painting(painting); + + // Update the painting painting_update_floors(painting); - switch ((s16) painting->vXRotation) { - case ROTATION_VERTICAL: - vertical_painting_ripple(painting, paintingGroup); + switch ((s16) painting->pitch) { + // only paintings with 0 pitch are treated as walls + case 0: + wall_painting_update(painting, paintingGroup); break; default: - horizontal_painting_ripple(painting, paintingGroup); + floor_painting_update(painting, paintingGroup); break; } } - return sp20; + return paintingDlist; } -Gfx *Geo18_802D5D0C(s32 run, UNUSED struct GraphNode *node, UNUSED f32 c[4][4]) { +/** + * Update the painting system's local copy of mario's current floor and position. + */ +Gfx *geo_painting_update(s32 callContext, UNUSED struct GraphNode *node, UNUSED f32 c[4][4]) { struct Surface *surface; - if (run != TRUE) { + // Reset the update counter + if (callContext != GEO_CONTEXT_RENDER) { gLastPaintingUpdateCounter = gAreaUpdateCounter - 1; gPaintingUpdateCounter = gAreaUpdateCounter; } else { gLastPaintingUpdateCounter = gPaintingUpdateCounter; gPaintingUpdateCounter = gAreaUpdateCounter; + + // Store mario's floor and position find_floor(gMarioObject->oPosX, gMarioObject->oPosY, gMarioObject->oPosZ, &surface); gPaintingMarioFloorType = surface->type; gPaintingMarioXPos = gMarioObject->oPosX; diff --git a/src/game/paintings.h b/src/game/paintings.h index ba98221c..a5d1a164 100644 --- a/src/game/paintings.h +++ b/src/game/paintings.h @@ -1,97 +1,120 @@ #ifndef PAINTINGS_H #define PAINTINGS_H -#define DEFAULT_HEIGHT 614.0 +#include "types.h" + +/** + * @file paintings.h + */ + +/// Use to properly set a GraphNodeGenerated's parameter to point to the right painting +#define PAINTING_ID(id, grp) id | (grp << 8) + +/// The default painting side length +#define PAINTING_SIZE 614.0 #define PAINTING_ID_DDD 7 -#define DIRE_DIRE_DOCKS 9 #define BOARD_BOWSERS_SUB 1 #define BOWSERS_SUB_BEATEN 0x2 #define DDD_BACK 0x1 -#define STAND_LEFT 0x20 -#define STAND_MIDDLE 0x10 -#define STAND_RIGHT 0x8 -#define ENTER_LEFT 0x4 -#define ENTER_MIDDLE 0x2 -#define ENTER_RIGHT 0x1 - -#define RIPPLE_SHAPE_WAVE 0 -#define RIPPLE_SHAPE_CONCENTRIC 1 - -#define RIPPLE_STATE_NONE 0 -#define RIPPLE_STATE_IDLE 1 -#define RIPPLE_STATE_ENTRY 2 +#define PAINTING_IDLE 0 +#define PAINTING_RIPPLE 1 +#define PAINTING_ENTERED 2 #define RIPPLE_TRIGGER_PROXIMITY 10 #define RIPPLE_TRIGGER_CONTINUOUS 20 -#define ROTATION_VERTICAL 0 - -#define NEAR_MARIO_LATERALLY 30 -#define MARIO_X 40 -#define MIDDLE_X 50 -#define MARIO_Y 60 -#define MARIO_Z 70 -#define MIDDLE_Y 80 - -#define DONT_RESET_TIMER -56 -#define RESET_TIMER 100 +/// Painting that uses 1 or more images as a texture +#define PAINTING_IMAGE 0 +/// Painting that has one texture used for an environment map effect +#define PAINTING_ENV_MAP 1 struct Painting { s16 id; - s8 faceCount; - s8 rippleShape; + /// How many images should be drawn when the painting is rippling. + s8 imageCount; + /// Either PAINTING_IMAGE or PAINTING_ENV_MAP + s8 textureType; + /// The floor mario was on last frame s8 lastFloor; + /// The floor mario is currently on s8 currFloor; + /// The floor mario just entered s8 floorEntered; - s8 rippleStatus; + /// The painting's state, see top of paintings.c + s8 state; - float vXRotation; - float vYRotation; + /// The painting's rotation + f32 pitch; + f32 yaw; - float vXPos; - float vYPos; - float vZPos; + /// The painting's position + f32 posX; + f32 posY; + f32 posZ; - float currRippleMag; - float passiveRippleMag; - float entryRippleMag; + /// Controls how high the peaks of the ripple are. + f32 currRippleMag; + f32 passiveRippleMag; + f32 entryRippleMag; - float rippleMagMultiplier; - float passiveRippleMagMultiplier; - float entryRippleMagMultiplier; + /// Multiplier that controls how fast the ripple regresses to the IDLE state. + f32 rippleDecay; + f32 passiveRippleDecay; + f32 entryRippleDecay; - float currRippleRate; - float passiveRippleRate; - float entryRippleRate; + /// Controls the ripple's frequency + f32 currRippleRate; + f32 passiveRippleRate; + f32 entryRippleRate; - float dispersionFactor; // the rate at which the magnitude of the ripple decreases as you move farther from the central point of the ripple - float passiveDispersionFactor; - float entryDispersionFactor; + /// The rate at which the magnitude of the ripple decreases as you move farther from the central + /// point of the ripple + f32 dispersionFactor; + f32 passiveDispersionFactor; + f32 entryDispersionFactor; - float rippleTimer; + /// How far the ripple has spread + f32 rippleTimer; - float horizontalRippleSpot; - float verticalRippleSpot; + /// The x and y origin of the ripple + f32 rippleX; + f32 rippleY; - const Gfx *displayList58; - const s16 *const *meshData; + /// Display list used when the painting is normal. + const Gfx *normalDisplayList; + /// Data used to map the texture to the mesh + const s16 *const *textureMaps; + + // Texture data const u8 *const *textureArray; s16 textureWidth; s16 textureHeight; - const Gfx *displayList68; + + /// Display list used when the painting is rippling. + const Gfx *rippleDisplayList; + /// Controls when a passive ripple starts. RIPPLE_TRIGGER_CONTINUOUS or RIPPLE_TRIGGER_PROXIMITY. s8 rippleTrigger; - u8 brightness; - s8 lastMarioUnderPainting; - s8 currMarioUnderPainting; - s8 marioNewlyUnderPainting; - float vSize; + + /// The painting's transparency. Determines what layer the painting is in. + u8 alpha; + + /// True if mario was under the painting's y coordinate last frame + s8 marioWasUnder; + /// True if mario is currently under the painting's y coordinate + s8 marioIsUnder; + /// True if mario just went under the painting's y coordinate on this frame + s8 marioWentUnder; + + /// Uniformly scales the painting to a multiple of PAINTING_SIZE. + /// By default a painting is 614.0 x 614.0 + f32 size; }; extern struct Painting cotmc_painting; @@ -114,23 +137,26 @@ extern struct Painting thi_huge_painting; extern struct Painting ttm_slide_painting; extern u16 gAreaUpdateCounter; -extern float gPaintingMarioYEntry; +extern f32 gPaintingMarioYEntry; // defined in file extern s16 gPaintingMarioFloorType; -extern float gPaintingMarioXPos, gPaintingMarioYPos, gPaintingMarioZPos; +extern f32 gPaintingMarioXPos, gPaintingMarioYPos, gPaintingMarioZPos; -struct Thing { //TODO: Give me a better name - /*0x00*/ s16 unk0[3]; - /*0x06*/ s8 unk6[3]; +/** + * Contains the position and normal of a vertex in the painting's generated mesh. + */ +struct PaintingMeshVertex { + /*0x00*/ s16 pos[3]; + /*0x06*/ s8 norm[3]; }; -extern struct Thing *D_8035FFA0; -extern Vec3f *D_8035FFA4; -extern struct Painting *ripplingPainting; -extern s8 dddStatus; +extern struct PaintingMeshVertex *gPaintingMesh; +extern Vec3f *gPaintingTriNorms; +extern struct Painting *gRipplingPainting; +extern s8 gDddPaintingStatus; -extern Gfx *Geo18_802D5B98(s32 run, struct GraphNode *node, void *context); -extern Gfx *Geo18_802D5D0C(s32 run, struct GraphNode *node, f32 c[4][4]); +extern Gfx *geo_painting_draw(s32 run, struct GraphNode *node, void *context); +extern Gfx *geo_painting_update(s32 run, struct GraphNode *node, f32 c[4][4]); #endif /* PAINTINGS_H */ diff --git a/src/game/save_file.c b/src/game/save_file.c index 2fd6311c..23ae6ac1 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -44,7 +44,7 @@ STATIC_ASSERT(ARRAY_COUNT(gLevelToCourseNumTable) == LEVEL_COUNT - 1, // This was probably used to set progress to 100% for debugging, but // it was removed from the release ROM. -static void no_op(void) { +static void stub_save_file_1(void) { UNUSED s32 pad; } @@ -316,7 +316,7 @@ void save_file_load_all(void) { } } - no_op(); + stub_save_file_1(); } /** diff --git a/src/game/save_file.h b/src/game/save_file.h index 413ed442..198748de 100644 --- a/src/game/save_file.h +++ b/src/game/save_file.h @@ -150,9 +150,11 @@ void check_if_should_set_warp_checkpoint(struct WarpNode *a); s32 check_warp_checkpoint(struct WarpNode *a); #ifdef VERSION_EU -#define LANGUAGE_ENGLISH 0 -#define LANGUAGE_FRENCH 1 -#define LANGUAGE_GERMAN 2 +enum EuLanguages { + LANGUAGE_ENGLISH, + LANGUAGE_FRENCH, + LANGUAGE_GERMAN +}; void eu_set_language(u16 language); u16 eu_get_language(void); diff --git a/src/game/segment2.h b/src/game/segment2.h index b370dc25..e1a9c346 100644 --- a/src/game/segment2.h +++ b/src/game/segment2.h @@ -41,8 +41,8 @@ extern Gfx dl_paintings_rippling_begin[]; extern Gfx dl_paintings_rippling_end[]; extern Gfx dl_paintings_env_mapped_begin[]; extern Gfx dl_paintings_env_mapped_end[]; -extern u8 seg2_triangle_mesh[]; -extern u8 seg2_mesh_order[]; +extern u8 seg2_painting_triangle_mesh[]; +extern u8 seg2_painting_mesh_neighbor_tris[]; extern u8* main_hud_lut[58]; extern Gfx dl_hud_img_load_tex_block[]; extern Gfx dl_hud_img_begin[]; diff --git a/src/game/sound_init.c b/src/game/sound_init.c index 96fd038b..91690e5e 100644 --- a/src/game/sound_init.c +++ b/src/game/sound_init.c @@ -73,11 +73,11 @@ static s8 paintingEjectSoundPlayed = FALSE; static void play_menu_sounds_extra(int a, void *b); -void func_80248C10(void) { +void reset_volume(void) { D_8032C6C0 = 0; } -void func_80248C28(s32 a) // Soften volume +void lower_background_noise(s32 a) // Soften volume { switch (a) { case 1: @@ -90,7 +90,7 @@ void func_80248C28(s32 a) // Soften volume D_8032C6C0 |= a; } -void func_80248CB8(s32 a) // harden volume +void raise_background_noise(s32 a) // harden volume { switch (a) { case 1: @@ -103,14 +103,14 @@ void func_80248CB8(s32 a) // harden volume D_8032C6C0 &= ~a; } -void func_80248D48(void) { +void disable_background_sound(void) { if (D_8032C6C4 == 0) { D_8032C6C4 = 1; sound_banks_disable(2, 0x037A); } } -void func_80248D90(void) { +void enable_background_sound(void) { if (D_8032C6C4 == 1) { D_8032C6C4 = 0; sound_banks_enable(2, 0x037A); @@ -157,9 +157,8 @@ void play_menu_sounds(s16 soundMenuFlags) { * Plays the painting eject sound effect if it has not already been played */ void play_painting_eject_sound(void) { - if (ripplingPainting != NULL - && ripplingPainting->rippleStatus == 2) // ripple when Mario enters painting - { + if (gRipplingPainting != NULL && gRipplingPainting->state == PAINTING_ENTERED) { + // ripple when Mario enters painting if (paintingEjectSoundPlayed == FALSE) { play_sound(SOUND_GENERAL_PAINTING_EJECT, gMarioStates[0].marioObj->header.gfx.cameraToObject); @@ -207,14 +206,14 @@ void set_background_music(u16 a, u16 seqArgs, s16 fadeTimer) { } } -void func_802491FC(s16 fadeOutTime) { +void fadeout_music(s16 fadeOutTime) { func_803210D4(fadeOutTime); sCurrentMusic = MUSIC_NONE; sCurrentShellMusic = MUSIC_NONE; sCurrentCapMusic = MUSIC_NONE; } -void func_8024924C(s16 fadeTimer) { +void fadeout_level_music(s16 fadeTimer) { sequence_player_fade_out(0, fadeTimer); sCurrentMusic = MUSIC_NONE; sCurrentShellMusic = MUSIC_NONE; diff --git a/src/game/sound_init.h b/src/game/sound_init.h index 272ef30c..47e7d0a5 100644 --- a/src/game/sound_init.h +++ b/src/game/sound_init.h @@ -16,18 +16,18 @@ #define SOUND_MENU_MODE_MONO 1 #define SOUND_MENU_MODE_HEADSET 2 -extern void func_80248C10(void); -extern void func_80248CB8(s32); -extern void func_80248C28(s32); -extern void func_80248D48(void); -extern void func_80248D90(void); +extern void reset_volume(void); +extern void raise_background_noise(s32); +extern void lower_background_noise(s32); +extern void disable_background_sound(void); +extern void enable_background_sound(void); extern void set_sound_mode(u16); extern void play_menu_sounds(s16 a); extern void play_painting_eject_sound(void); extern void play_infinite_stairs_music(void); extern void set_background_music(u16, u16, s16); -extern void func_802491FC(s16); -extern void func_8024924C(s16 fadeTimer); +extern void fadeout_music(s16); +extern void fadeout_level_music(s16 fadeTimer); extern void play_cutscene_music(u16); extern void play_shell_music(void); extern void stop_shell_music(void); diff --git a/src/game/spawn_object.c b/src/game/spawn_object.c index b50db3e3..c78619c6 100644 --- a/src/game/spawn_object.c +++ b/src/game/spawn_object.c @@ -363,6 +363,6 @@ struct Object *create_object(const BehaviorScript *behScript) { * Mark an object to be unloaded at the end of the frame. */ void mark_obj_for_deletion(struct Object *obj) { - //! Same issue as mark_object_for_deletion + //! Same issue as obj_mark_for_deletion obj->activeFlags = ACTIVE_FLAGS_DEACTIVATED; } diff --git a/src/game/spawn_sound.c b/src/game/spawn_sound.c index 0886ebb7..98481f1c 100644 --- a/src/game/spawn_sound.c +++ b/src/game/spawn_sound.c @@ -28,14 +28,14 @@ void exec_anim_sound_state(struct SoundState *soundStates) { // in the sound state information, -1 (0xFF) is for empty // animFrame entries. These checks skips them. if ((animFrame = soundStates[stateIdx].animFrame1) >= 0) { - if (obj_check_anim_frame(animFrame)) { - PlaySound2(soundStates[stateIdx].soundMagic); + if (cur_obj_check_anim_frame(animFrame)) { + cur_obj_play_sound_2(soundStates[stateIdx].soundMagic); } } if ((animFrame = soundStates[stateIdx].animFrame2) >= 0) { - if (obj_check_anim_frame(animFrame)) { - PlaySound2(soundStates[stateIdx].soundMagic); + if (cur_obj_check_anim_frame(animFrame)) { + cur_obj_play_sound_2(soundStates[stateIdx].soundMagic); } } } break; @@ -54,17 +54,16 @@ void create_sound_spawner(s32 soundMagic) { /* * The following 2 functions are relevent to the sound state function - * above. While only PlaySound2 is used, they may have been intended as + * above. While only cur_obj_play_sound_2 is used, they may have been intended as * seperate left/right leg functions that went unused. */ -void PlaySound(s32 soundMagic) { +void cur_obj_play_sound_1(s32 soundMagic) { if (gCurrentObject->header.gfx.node.flags & 0x0001) { play_sound(soundMagic, gCurrentObject->header.gfx.cameraToObject); } } -// duplicate function, but its the used one -void PlaySound2(s32 soundMagic) { +void cur_obj_play_sound_2(s32 soundMagic) { if (gCurrentObject->header.gfx.node.flags & 0x0001) { play_sound(soundMagic, gCurrentObject->header.gfx.cameraToObject); } diff --git a/src/game/spawn_sound.h b/src/game/spawn_sound.h index 8e3bcded..6a0bf664 100644 --- a/src/game/spawn_sound.h +++ b/src/game/spawn_sound.h @@ -16,8 +16,8 @@ struct SoundState s32 soundMagic; }; -extern void PlaySound(s32); -extern void PlaySound2(s32); +extern void cur_obj_play_sound_1(s32); +extern void cur_obj_play_sound_2(s32); extern void create_sound_spawner(s32); extern void exec_anim_sound_state(struct SoundState *soundStates); diff --git a/src/menu/file_select.c b/src/menu/file_select.c index 06b80d3b..93c5c185 100644 --- a/src/menu/file_select.c +++ b/src/menu/file_select.c @@ -20,6 +20,12 @@ #include "file_select.h" #include "dialog_ids.h" +#include "eu_translation.h" +#ifdef VERSION_EU +#undef LANGUAGE_FUNCTION +#define LANGUAGE_FUNCTION sLanguageMode +#endif + /** * @file file_select.c * This file implements how the file select and it's menus render and function. @@ -27,11 +33,10 @@ * special menu messages and phases, button states and button clicked checks. */ - #ifdef VERSION_US // The current sound mode is automatically centered on US due to // the large length difference between options. -// sSoundTextY unused (EU supports its existance). +// sSoundTextY unused (EU supports its existence). static s16 sSoundTextX; static s16 sSoundTextY; #endif @@ -56,7 +61,7 @@ static struct Object *sMainMenuButtons[NUM_BUTTONS]; #ifdef VERSION_EU // The current sound mode is automatically centered on US due to // the large length difference between options. -// sSoundTextY unused +// sSoundTextY is unused static s16 sSoundTextX; static s16 sSoundTextY; #endif @@ -65,12 +70,11 @@ static s16 sSoundTextY; // sYesNoColor[0]: YES | sYesNoColor[1]: NO static u8 sYesNoColor[2]; -// Unused variable that is written to for the centered X value for some strings. +// Unused variable that is written to define centered X value for some strings. #ifdef VERSION_EU static s16 sCenteredX; #endif - // The button that is selected when it is clicked. static s8 sSelectedButtonID = MENU_BUTTON_NONE; @@ -113,17 +117,10 @@ static s16 sMainMenuTimer = 0; // 0: gSoundMode = 0 (Stereo) | 1: gSoundMode = 3 (Mono) | 2: gSoundMode = 1 (Headset) static s8 sSoundMode = 0; -// PAL changes most text to arrays for each language. This define allows these -// differences to be combined. +// Active language for PAL arrays, values defined similar to sSoundMode +// 0: English | 1: French | 2: German #ifdef VERSION_EU - #define LANGUAGE_ARRAY(cmd) cmd[sLanguageMode] -#else - #define LANGUAGE_ARRAY(cmd) cmd -#endif - -// Active language for PAL arrays. -#ifdef VERSION_EU -static s8 sLanguageMode = LANGUAGE_EN; +static s8 sLanguageMode = LANGUAGE_ENGLISH; #endif // Tracks which button will be pressed in the erase confirmation prompt (yes/no). @@ -141,7 +138,7 @@ static s8 sSelectedFileNum = 0; // coin high score, 1 for high score across all files. static s8 sScoreFileCoinScoreMode = 0; -// If no save file exists, open the language menu so the user can find it. +// In PAL, if no save file exists, open the language menu so the user can find it. #ifdef VERSION_EU static s8 sOpenLangSettings = FALSE; #endif @@ -272,7 +269,7 @@ static unsigned char textNo[][5] = {{ TEXT_NO }, { TEXT_NO_FR }, { TEXT_NO_DE }} #endif #ifdef VERSION_EU -// TODO: Should the following should be data local to functions? +// In EU, Erase File and Sound Select strings are outside it's print string function static unsigned char textEraseFile[][17] = { { TEXT_ERASE_FILE_BUTTON }, { TEXT_ERASE_FILE_BUTTON_FR }, { TEXT_ERASE_FILE_BUTTON_DE } }; @@ -299,7 +296,7 @@ static unsigned char textLanguage[][9] = {{ TEXT_ENGLISH }, { TEXT_FRENCH }, { T static unsigned char textMario[] = { TEXT_MARIO }; static unsigned char textHiScore[][15] = {{ TEXT_HI_SCORE }, { TEXT_HI_SCORE_FR }, { TEXT_HI_SCORE_DE }}; -static unsigned char textMyScore2[][10] = {{ TEXT_MY_SCORE }, { TEXT_MY_SCORE_FR }, { TEXT_MY_SCORE_DE }}; +static unsigned char textMyScore[][10] = {{ TEXT_MY_SCORE }, { TEXT_MY_SCORE_FR }, { TEXT_MY_SCORE_DE }}; static unsigned char textNew[][5] = {{ TEXT_NEW }, { TEXT_NEW_FR }, { TEXT_NEW_DE }}; static unsigned char starIcon[] = { GLYPH_STAR, GLYPH_SPACE }; @@ -321,7 +318,7 @@ void beh_yellow_background_menu_init(void) { * Properly scales the background in the main menu. */ void beh_yellow_background_menu_loop(void) { - obj_scale(9.0f); + cur_obj_scale(9.0f); } /** @@ -558,7 +555,7 @@ void bhv_menu_button_loop(void) { sCursorClickingTimer = 4; break; } - obj_scale(gCurrentObject->oMenuButtonScale); + cur_obj_scale(gCurrentObject->oMenuButtonScale); } /** @@ -645,7 +642,6 @@ void render_score_menu_buttons(struct Object *scoreButton) { #else #define SCORE_TIMER 31 #endif - /** * In the score menu, checks if a button was clicked to play a sound, button state and other functions. */ @@ -793,17 +789,10 @@ void copy_action_file_button(struct Object *copyButton, s32 copyFileButtonID) { sFadeOutText = TRUE; sMainMenuTimer = 0; save_file_copy(sSelectedFileIndex, copyFileButtonID - MENU_BUTTON_COPY_MIN); - #ifdef VERSION_EU sMainMenuButtons[copyFileButtonID]->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE]; sMainMenuButtons[copyFileButtonID - MENU_BUTTON_COPY_MIN]->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE]; - #else - sMainMenuButtons[copyFileButtonID]->header.gfx.sharedChild = - gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE]; - sMainMenuButtons[copyFileButtonID - MENU_BUTTON_COPY_MIN]->header.gfx.sharedChild = - gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE]; - #endif } else { // If clicked in a existing save file, play buzz sound if (MENU_BUTTON_COPY_FILE_A + sSelectedFileIndex == copyFileButtonID) { @@ -1019,9 +1008,9 @@ void check_erase_menu_clicked_buttons(struct Object *eraseButton) { #undef MAIN_RETURN_TIMER #ifdef VERSION_EU - #define SOUND_Y 388 + #define SOUND_BUTTON_Y 388 #else - #define SOUND_Y 0 + #define SOUND_BUTTON_Y 0 #endif /** @@ -1030,15 +1019,15 @@ void check_erase_menu_clicked_buttons(struct Object *eraseButton) { void render_sound_mode_menu_buttons(struct Object *soundModeButton) { // Stereo option button sMainMenuButtons[MENU_BUTTON_STEREO] = spawn_object_rel_with_rot( - soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 533, SOUND_Y, -100, 0, -0x8000, 0); + soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 533, SOUND_BUTTON_Y, -100, 0, -0x8000, 0); sMainMenuButtons[MENU_BUTTON_STEREO]->oMenuButtonScale = 0.11111111f; // Mono option button sMainMenuButtons[MENU_BUTTON_MONO] = spawn_object_rel_with_rot( - soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 0, SOUND_Y, -100, 0, -0x8000, 0); + soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 0, SOUND_BUTTON_Y, -100, 0, -0x8000, 0); sMainMenuButtons[MENU_BUTTON_MONO]->oMenuButtonScale = 0.11111111f; // Headset option button sMainMenuButtons[MENU_BUTTON_HEADSET] = spawn_object_rel_with_rot( - soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, -533, SOUND_Y, -100, 0, -0x8000, 0); + soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, -533, SOUND_BUTTON_Y, -100, 0, -0x8000, 0); sMainMenuButtons[MENU_BUTTON_HEADSET]->oMenuButtonScale = 0.11111111f; #ifdef VERSION_EU @@ -1064,7 +1053,7 @@ void render_sound_mode_menu_buttons(struct Object *soundModeButton) { sMainMenuButtons[MENU_BUTTON_OPTION_MIN + sSoundMode]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN; #endif } -#undef SOUND_Y +#undef SOUND_BUTTON_Y /** * In the sound mode menu, checks if a button was clicked to change sound mode & button state. @@ -1078,14 +1067,16 @@ void check_sound_mode_menu_clicked_buttons(struct Object *soundModeButton) { s16 buttonY = sMainMenuButtons[buttonID]->oPosY; if (check_clicked_button(buttonX, buttonY, 22.0f) == TRUE) { - // If sound mode button clicked, select it - // The check will always be true because of the group configured above + // If sound mode button clicked, select it and define sound mode + // The check will always be true because of the group configured above (In JP & US) if (buttonID == MENU_BUTTON_STEREO || buttonID == MENU_BUTTON_MONO || buttonID == MENU_BUTTON_HEADSET) { if (soundModeButton->oMenuButtonActionPhase == SOUND_MODE_PHASE_MAIN) { play_sound(SOUND_MENU_CLICK_FILE_SELECT, gDefaultSoundArgs); sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT; #ifndef VERSION_EU + // Sound menu buttons don't return to Main Menu in EU + // because they don't have a case in bhv_menu_button_manager_loop sSelectedButtonID = buttonID; #endif sSoundMode = buttonID - MENU_BUTTON_OPTION_MIN; @@ -1093,6 +1084,7 @@ void check_sound_mode_menu_clicked_buttons(struct Object *soundModeButton) { } } #ifdef VERSION_EU + // If language mode button clicked, select it and change language if (buttonID == MENU_BUTTON_LANGUAGE_ENGLISH || buttonID == MENU_BUTTON_LANGUAGE_FRENCH || buttonID == MENU_BUTTON_LANGUAGE_GERMAN) { if (soundModeButton->oMenuButtonActionPhase == SOUND_MODE_PHASE_MAIN) { @@ -1102,6 +1094,7 @@ void check_sound_mode_menu_clicked_buttons(struct Object *soundModeButton) { eu_set_language(sLanguageMode); } } + // If neither of the buttons above are pressed, return to main menu if (buttonID == MENU_BUTTON_LANGUAGE_RETURN) { play_sound(SOUND_MENU_CLICK_FILE_SELECT, gDefaultSoundArgs); sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT; @@ -1351,7 +1344,7 @@ void bhv_menu_button_manager_init(void) { sMainMenuButtons[MENU_BUTTON_ERASE] = spawn_object_rel_with_rot( gCurrentObject, MODEL_MAIN_MENU_RED_ERASE_BUTTON, bhvMenuButton, 2134, -3500, 0, 0, 0, 0); sMainMenuButtons[MENU_BUTTON_ERASE]->oMenuButtonScale = 1.0f; - // Sound mode menu button + // Sound mode menu button (Option Mode in EU) sMainMenuButtons[MENU_BUTTON_SOUND_MODE] = spawn_object_rel_with_rot( gCurrentObject, MODEL_MAIN_MENU_PURPLE_SOUND_BUTTON, bhvMenuButton, 6400, -3500, 0, 0, 0, 0); sMainMenuButtons[MENU_BUTTON_SOUND_MODE]->oMenuButtonScale = 1.0f; @@ -1359,7 +1352,7 @@ void bhv_menu_button_manager_init(void) { sTextBaseAlpha = 0; } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define SAVE_FILE_SOUND SOUND_MENU_STAR_SOUND #else #define SAVE_FILE_SOUND SOUND_MENU_STAR_SOUND_OKEY_DOKEY @@ -1396,7 +1389,8 @@ void check_main_menu_clicked_buttons(void) { } } #ifdef VERSION_EU - if (sOpenLangSettings == TRUE){ + // Open Options Menu if sOpenLangSettings is TRUE (It's TRUE when there's no saves) + if (sOpenLangSettings == TRUE) { sMainMenuButtons[MENU_BUTTON_SOUND_MODE]->oMenuButtonState = MENU_BUTTON_STATE_GROWING; sSelectedButtonID = MENU_BUTTON_SOUND_MODE; sOpenLangSettings = FALSE; @@ -1542,6 +1536,8 @@ void bhv_menu_button_manager_loop(void) { check_sound_mode_menu_clicked_buttons(sMainMenuButtons[MENU_BUTTON_SOUND_MODE]); break; + // STEREO, MONO and HEADSET buttons are undefined so they can be selected without + // exiting the Options menu, as a result they added a return button #ifdef VERSION_EU case MENU_BUTTON_LANGUAGE_RETURN: return_to_main_menu(MENU_BUTTON_SOUND_MODE, sMainMenuButtons[MENU_BUTTON_LANGUAGE_RETURN]); @@ -1729,7 +1725,7 @@ void print_save_file_star_count(s8 fileIndex, s16 x, s16 y) { } } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define SELECT_FILE_X 96 #define SCORE_X 50 #define COPY_X 115 @@ -1763,7 +1759,10 @@ void print_save_file_star_count(s8 fileIndex, s16 x, s16 y) { /** * Prints main menu strings that shows on the yellow background menu screen. - * Does not print the strings of text for EU, only the symbols. + * + * In EU this function acts like "print_save_file_strings" because + * print_main_lang_strings is first called to render the strings for the 4 buttons. + * Same rule applies for score, copy and erase strings. */ void print_main_menu_strings(void) { // Print "SELECT FILE" text @@ -1785,7 +1784,7 @@ void print_main_menu_strings(void) { print_generic_string(SCORE_X, 39, textScore); print_generic_string(COPY_X, 39, textCopy); print_generic_string(ERASE_X, 39, textErase); -#ifndef VERSION_JP +#if !defined(VERSION_JP) && !defined(VERSION_SH) sSoundTextX = get_str_x_pos_from_center(254, textSoundModes[sSoundMode], 10.0f); #endif print_generic_string(SOUNDMODE_X1, 39, textSoundModes[sSoundMode]); @@ -1803,33 +1802,34 @@ void print_main_menu_strings(void) { #ifdef VERSION_EU /** - * Prints main menu strings that shows on the yellow background menu screen with language switching. - * Calls print_main_menu_strings to print the other symbols. + * Prints the first part main menu strings that shows on the yellow background menu screen. + * Has the strings for the 4 buttons below the save buttons that get changed depending of the language. + * Calls print_main_menu_strings to print the remaining strings. */ -void print_lang_strings(void) { +void print_main_lang_strings(void) { s16 centeredX; gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin); gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); - centeredX = get_str_x_pos_from_center_scale(0xa0, textSelectFile[sLanguageMode], 12.0f); + centeredX = get_str_x_pos_from_center_scale(160, textSelectFile[sLanguageMode], 12.0f); sCenteredX = centeredX; - print_hud_lut_string(2, centeredX, 35, textSelectFile[sLanguageMode]); + print_hud_lut_string(HUD_LUT_GLOBAL, centeredX, 35, textSelectFile[sLanguageMode]); gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end); gSPDisplayList(gDisplayListHead++, dl_ia_text_begin); gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); - centeredX = get_str_x_pos_from_center(0x4C, textScore[sLanguageMode], 10.0f); + centeredX = get_str_x_pos_from_center(76, textScore[sLanguageMode], 10.0f); sCenteredX = centeredX; - print_generic_string(centeredX, 0x27, textScore[sLanguageMode]); - centeredX = get_str_x_pos_from_center(0x83, textCopy[sLanguageMode], 10.0f); + print_generic_string(centeredX, 39, textScore[sLanguageMode]); + centeredX = get_str_x_pos_from_center(131, textCopy[sLanguageMode], 10.0f); sCenteredX = centeredX; - print_generic_string(centeredX, 0x27, textCopy[sLanguageMode]); - centeredX = get_str_x_pos_from_center(0xbd, textErase[sLanguageMode], 10.0f); + print_generic_string(centeredX, 39, textCopy[sLanguageMode]); + centeredX = get_str_x_pos_from_center(189, textErase[sLanguageMode], 10.0f); sCenteredX = centeredX; - print_generic_string(centeredX, 0x27, textErase[sLanguageMode]); - centeredX = get_str_x_pos_from_center(0xf5, textOption[sLanguageMode], 10.0f); + print_generic_string(centeredX, 39, textErase[sLanguageMode]); + centeredX = get_str_x_pos_from_center(245, textOption[sLanguageMode], 10.0f); sCenteredX = centeredX; - print_generic_string(centeredX, 0x27, textOption[sLanguageMode]); + print_generic_string(centeredX, 39, textOption[sLanguageMode]); gSPDisplayList(gDisplayListHead++, dl_ia_text_end); print_main_menu_strings(); @@ -1871,7 +1871,7 @@ void score_menu_display_message(s8 messageID) { } } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define RETURN_X 45 #define COPYFILE_X1 128 #define ERASEFILE_X1 228 @@ -1955,7 +1955,7 @@ void print_score_menu_strings(void) { #endif } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define NOFILE_COPY_X 90 #define COPY_FILE_X 90 #define COPYIT_WHERE_X 90 @@ -2074,7 +2074,7 @@ void copy_menu_update_message(void) { } } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define VIEWSCORE_X1 133 #define ERASEFILE_X2 220 #elif VERSION_EU @@ -2137,7 +2137,7 @@ void print_copy_menu_strings(void) { #endif } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define CURSOR_X 160.0f #define MENU_ERASE_YES_MIN_X 0x91 #define MENU_ERASE_YES_MAX_X 0xA4 @@ -2214,7 +2214,11 @@ void print_erase_menu_prompt(s16 x, s16 y) { gSPDisplayList(gDisplayListHead++, dl_ia_text_end); } -#ifdef VERSION_JP +// MARIO_ERASED_VAR is the value there the letter "A" is, it works like this: +// US and EU --- JP +// M a r i o A --- マ リ オ A +// 0 1 2 3 4 5 6 --- 0 1 2 3 +#if defined(VERSION_JP) || defined(VERSION_SH) #define ERASE_FILE_X 96 #define NOSAVE_DATA_X3 90 #define MARIO_ERASED_VAR 3 @@ -2325,7 +2329,7 @@ void erase_menu_update_message(void) { } } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define VIEWSCORE_X2 133 #define COPYFILE_X2 223 #else @@ -2347,7 +2351,7 @@ void print_erase_menu_strings(void) { // Print messageID called inside a erase_menu_update_message case erase_menu_display_message(sStatusMessageID); - #ifndef VERSION_EU +#ifndef VERSION_EU // Print file star counts gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin); gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); @@ -2356,28 +2360,29 @@ void print_erase_menu_strings(void) { print_save_file_star_count(SAVE_FILE_C, 90, 119); print_save_file_star_count(SAVE_FILE_D, 211, 119); gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end); - #endif +#endif // Print menu names gSPDisplayList(gDisplayListHead++, dl_ia_text_begin); gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); - #ifdef VERSION_EU + +#ifdef VERSION_EU centeredX = get_str_x_pos_from_center(69, textReturn[sLanguageMode], 10.0f); print_generic_string(centeredX, 35, textReturn[sLanguageMode]); centeredX = get_str_x_pos_from_center(159, textViewScore[sLanguageMode], 10.0f); print_generic_string(centeredX, 35, textViewScore[sLanguageMode]); centeredX = get_str_x_pos_from_center(249, textCopyFileButton[sLanguageMode], 10.0f); print_generic_string(centeredX, 35, textCopyFileButton[sLanguageMode]); - #else +#else print_generic_string(RETURN_X, 35, textReturn); print_generic_string(VIEWSCORE_X2, 35, textViewScore); print_generic_string(COPYFILE_X2, 35, textCopyFileButton); - #endif +#endif gSPDisplayList(gDisplayListHead++, dl_ia_text_end); - #ifdef VERSION_EU +#ifdef VERSION_EU print_main_menu_strings(); - #else +#else // Print file names gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin); gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); @@ -2386,10 +2391,10 @@ void print_erase_menu_strings(void) { print_menu_generic_string(89, 105, textMarioC); print_menu_generic_string(211, 105, textMarioD); gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end); - #endif +#endif } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define SOUND_HUD_X 96 #elif VERSION_US #define SOUND_HUD_X 88 @@ -2397,6 +2402,8 @@ void print_erase_menu_strings(void) { /** * Prints sound mode menu strings that shows on the purple background menu screen. + * + * In EU, this function acts like "print_option_mode_menu_strings" because of languages. */ void print_sound_mode_menu_strings(void) { s32 mode; @@ -2424,9 +2431,10 @@ void print_sound_mode_menu_strings(void) { gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end); - // Print sound mode names gSPDisplayList(gDisplayListHead++, dl_ia_text_begin); -#ifdef VERSION_EU + +#ifdef VERSION_EU // In EU their X position get increased each string + // Print sound mode names for (mode = 0, textX = 90; mode < 3; textX += 70, mode++) { if (mode == sSoundMode) { gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); @@ -2438,7 +2446,7 @@ void print_sound_mode_menu_strings(void) { 141, textSoundModes[sLanguageMode * 3 + mode]); } - // EU also prints language names in this menu + // In EU, print language mode names for (mode = 0, textX = 90; mode < 3; textX += 70, mode++) { if (mode == sLanguageMode) { gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); @@ -2450,6 +2458,7 @@ void print_sound_mode_menu_strings(void) { 72, textLanguage[mode]); } #else + // Print sound mode names for (mode = 0; mode < 3; mode++) { if (mode == sSoundMode) { gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha); @@ -2493,6 +2502,16 @@ void print_score_file_castle_secret_stars(s8 fileIndex, s16 x, s16 y) { #endif } +#if defined(VERSION_JP) || defined(VERSION_SH) + #define HISCORE_COIN_ICON_X 0 + #define HISCORE_COIN_TEXT_X 16 + #define HISCORE_COIN_NAMES_X 45 +#else + #define HISCORE_COIN_ICON_X 18 + #define HISCORE_COIN_TEXT_X 34 + #define HISCORE_COIN_NAMES_X 60 +#endif + /** * Prints course coins collected in a score menu save file. */ @@ -2501,7 +2520,7 @@ void print_score_file_course_coin_score(s8 fileIndex, s16 courseIndex, s16 x, s1 u8 stars = save_file_get_star_flags(fileIndex, courseIndex); unsigned char textCoinX[] = { TEXT_COIN_X }; unsigned char textStar[] = { TEXT_STAR }; -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define LENGTH 5 #else #define LENGTH 8 @@ -2525,25 +2544,14 @@ void print_score_file_course_coin_score(s8 fileIndex, s16 courseIndex, s16 x, s1 } // HISCORE else { -#ifdef VERSION_JP // Print "[coin] x" - print_menu_generic_string(x, y, textCoinX); + print_menu_generic_string(x + HISCORE_COIN_ICON_X, y, textCoinX); // Print coin highscore int_to_str((u16) save_file_get_max_coin_score(courseIndex) & 0xFFFF, coinScoreText); - print_menu_generic_string(x + 16, y, coinScoreText); + print_menu_generic_string(x + HISCORE_COIN_TEXT_X, y, coinScoreText); // Print coin highscore file - print_menu_generic_string(x + 45, y, + print_menu_generic_string(x + HISCORE_COIN_NAMES_X, y, fileNames[(save_file_get_max_coin_score(courseIndex) >> 16) & 0xFFFF]); -#else - // Print "[coin] x" - print_menu_generic_string(x + 18, y, textCoinX); - // Print coin highscore - int_to_str((u16) save_file_get_max_coin_score(courseIndex) & 0xFFFF, coinScoreText); - print_menu_generic_string(x + 34, y, coinScoreText); - // Print coin highscore file - print_menu_generic_string(x + 60, y, - fileNames[(save_file_get_max_coin_score(courseIndex) >> 16) & 0xFFFF]); -#endif } } @@ -2552,7 +2560,7 @@ void print_score_file_course_coin_score(s8 fileIndex, s16 courseIndex, s16 x, s1 */ void print_score_file_star_score(s8 fileIndex, s16 courseIndex, s16 x, s16 y) { s16 i = 0; - unsigned char starScoreText[20]; // unknown length + unsigned char starScoreText[19]; u8 stars = save_file_get_star_flags(fileIndex, courseIndex); s8 starCount = save_file_get_course_star_count(fileIndex, courseIndex); // Don't count 100 coin star @@ -2568,7 +2576,7 @@ void print_score_file_star_score(s8 fileIndex, s16 courseIndex, s16 x, s16 y) { print_menu_generic_string(x, y, starScoreText); } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define MARIO_X 28 #define FILE_LETTER_X 86 #define LEVEL_NAME_X 23 @@ -2592,34 +2600,35 @@ void print_score_file_star_score(s8 fileIndex, s16 courseIndex, s16 x, s16 y) { * Prints save file score strings that shows when a save file is chosen inside the score menu. */ void print_save_file_scores(s8 fileIndex) { - // TODO: This beginning decl-order stuff can be simplified by moving the - // static declarations here. -#ifdef VERSION_EU - unsigned char textFileLetter[] = { TEXT_ZERO }; - void **levelNameTable; - switch (sLanguageMode) { - case LANGUAGE_EN: - levelNameTable = segmented_to_virtual(eu_course_strings_en_table); - break; - case LANGUAGE_FR: - levelNameTable = segmented_to_virtual(eu_course_strings_fr_table); - break; - case LANGUAGE_DE: - levelNameTable = segmented_to_virtual(eu_course_strings_de_table); - break; - } -#else +#ifndef VERSION_EU unsigned char textMario[] = { TEXT_MARIO }; - #ifdef VERSION_JP - unsigned char textFileLetter[] = { TEXT_ZERO }; - void **levelNameTable = segmented_to_virtual(seg2_course_name_table); - #endif +#endif +#ifndef VERSION_US + unsigned char textFileLetter[] = { TEXT_ZERO }; +#endif +#if defined(VERSION_JP) || defined(VERSION_SH) + void **levelNameTable = segmented_to_virtual(seg2_course_name_table); +#endif +#ifndef VERSION_EU unsigned char textHiScore[] = { TEXT_HI_SCORE }; unsigned char textMyScore[] = { TEXT_MY_SCORE }; #ifdef VERSION_US unsigned char textFileLetter[] = { TEXT_ZERO }; void **levelNameTable = segmented_to_virtual(seg2_course_name_table); #endif +#else + void **levelNameTable; + switch (sLanguageMode) { + case LANGUAGE_ENGLISH: + levelNameTable = segmented_to_virtual(eu_course_strings_en_table); + break; + case LANGUAGE_FRENCH: + levelNameTable = segmented_to_virtual(eu_course_strings_fr_table); + break; + case LANGUAGE_GERMAN: + levelNameTable = segmented_to_virtual(eu_course_strings_de_table); + break; + } #endif textFileLetter[0] = fileIndex + ASCII_TO_DIALOG('A'); // get letter of file selected @@ -2640,7 +2649,7 @@ void print_score_file_star_score(s8 fileIndex, s16 courseIndex, s16 x, s16 y) { //! Huge print list, for loops exist for a reason! // PADCHAR is used to difference an x position value between // JP and US when the course number is only one digit. -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define PADCHAR 0 #define PRINT_COURSE_SCORES(courseIndex, pad) \ print_menu_generic_string(23 + (pad * 3), 23 + 12 * courseIndex, segmented_to_virtual(levelNameTable[courseIndex - 1])); \ @@ -2677,28 +2686,22 @@ void print_score_file_star_score(s8 fileIndex, s16 courseIndex, s16 x, s16 y) { // Print castle secret stars print_score_file_castle_secret_stars(fileIndex, SECRET_STARS_X, 215); -#ifdef VERSION_EU - if (sScoreFileCoinScoreMode == 0) { - print_menu_generic_string( - get_str_x_pos_from_center(257, textMyScore2[sLanguageMode], 10.0f), - 24, - textMyScore2[sLanguageMode] - ); - } else { - print_menu_generic_string( - get_str_x_pos_from_center(257, textHiScore[sLanguageMode], 10.0f), - 24, - textHiScore[sLanguageMode] - ); - } -#else // Print current coin score mode if (sScoreFileCoinScoreMode == 0) { +#ifdef VERSION_EU + print_menu_generic_string(get_str_x_pos_from_center(257, textMyScore[sLanguageMode], 10.0f), + 24, textMyScore[sLanguageMode]); +#else print_menu_generic_string(MYSCORE_X, 24, textMyScore); - } else { - print_menu_generic_string(HISCORE_X, 24, textHiScore); - } #endif + } else { +#ifdef VERSION_EU + print_menu_generic_string(get_str_x_pos_from_center(257, textHiScore[sLanguageMode], 10.0f), + 24,textHiScore[sLanguageMode]); +#else + print_menu_generic_string(HISCORE_X, 24, textHiScore); +#endif + } gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end); } @@ -2714,8 +2717,8 @@ static void print_file_select_strings(void) { switch (sSelectedButtonID) { case MENU_BUTTON_NONE: #ifdef VERSION_EU - // Ultimately calls print_main_menu_strings, but prints strings first. - print_lang_strings(); + // Ultimately calls print_main_menu_strings, but prints main language strings first. + print_main_lang_strings(); #else print_main_menu_strings(); #endif @@ -2747,8 +2750,8 @@ static void print_file_select_strings(void) { break; } // If all 4 save file exists, define true to sAllFilesExist to prevent more copies in copy menu - if (save_file_exists(SAVE_FILE_A) == TRUE && save_file_exists(SAVE_FILE_B) == TRUE && save_file_exists(SAVE_FILE_C) == TRUE - && save_file_exists(SAVE_FILE_D) == TRUE) { + if (save_file_exists(SAVE_FILE_A) == TRUE && save_file_exists(SAVE_FILE_B) == TRUE && + save_file_exists(SAVE_FILE_C) == TRUE && save_file_exists(SAVE_FILE_D) == TRUE) { sAllFilesExist = TRUE; } else { sAllFilesExist = FALSE; @@ -2817,9 +2820,9 @@ s32 lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) { sMainMenuTimer = 0; sEraseYesNoHoverState = MENU_ERASE_HOVER_NONE; sSoundMode = save_file_get_sound_mode(); - #ifdef VERSION_EU sLanguageMode = eu_get_language(); + for (fileNum = 0; fileNum < 4; fileNum++) { if (save_file_exists(fileNum) == TRUE) { sOpenLangSettings = FALSE; @@ -2829,7 +2832,6 @@ s32 lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) { } } #endif - //! no return value #ifdef AVOID_UB return 0; diff --git a/src/menu/file_select.h b/src/menu/file_select.h index 72ab6e8e..0d3593b8 100644 --- a/src/menu/file_select.h +++ b/src/menu/file_select.h @@ -124,12 +124,6 @@ enum SoundModeMenuActionPhase { SOUND_MODE_PHASE_MAIN }; -enum Languages { - LANGUAGE_EN, - LANGUAGE_FR, - LANGUAGE_DE -}; - extern u32 gGlobalTimer; extern void beh_yellow_background_menu_init(void); diff --git a/src/menu/level_select_menu.c b/src/menu/level_select_menu.c index 26df2626..83a17f5f 100644 --- a/src/menu/level_select_menu.c +++ b/src/menu/level_select_menu.c @@ -49,7 +49,7 @@ int run_press_start_demo_timer(s32 timer) { // player is idle on PRESS START screen. // start the mario demo animation for the demo list. - func_80278AD4(&gDemo, gDemoInputListID); + load_patchable_table(&gDemo, gDemoInputListID); // if the next demo sequence ID is the count limit, reset it back to // the first sequence. diff --git a/src/menu/star_select.c b/src/menu/star_select.c index cf4f08cd..432994f4 100644 --- a/src/menu/star_select.c +++ b/src/menu/star_select.c @@ -17,7 +17,7 @@ #include "behavior_data.h" #include "text_strings.h" #include "star_select.h" -#include "game/eu_translation.h" +#include "eu_translation.h" /** * @file star_select.c @@ -79,7 +79,7 @@ void bhv_act_selector_star_type_loop(void) { break; } // Scale act selector stars depending of the type selected - obj_scale(gCurrentObject->oStarSelectorSize); + cur_obj_scale(gCurrentObject->oStarSelectorSize); // Unused timer, only referenced here. Probably replaced by sActSelectorMenuTimer gCurrentObject->oStarSelectorTimer++; } @@ -211,21 +211,23 @@ void print_course_number(void) { create_dl_translation_matrix(MENU_MTX_PUSH, 158.0f, 81.0f, 0.0f); + // Full wood texture in JP & US, lower part of it on EU gSPDisplayList(gDisplayListHead++, dl_menu_rgba16_wood_course); #ifdef VERSION_EU + // Change upper part of the wood texture depending of the language defined switch (language) { - case 0: + case LANGUAGE_ENGLISH: gSPDisplayList(gDisplayListHead++, dl_menu_texture_course_upper); break; - case 1: + case LANGUAGE_FRENCH: gSPDisplayList(gDisplayListHead++, dl_menu_texture_niveau_upper); break; - case 2: + case LANGUAGE_GERMAN: gSPDisplayList(gDisplayListHead++, dl_menu_texture_kurs_upper); break; } - + gSPDisplayList(gDisplayListHead++, dl_menu_rgba16_wood_course_end); #endif @@ -244,7 +246,7 @@ void print_course_number(void) { gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end); } -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) #define ACT_NAME_X 158 #else #define ACT_NAME_X 163 @@ -284,22 +286,22 @@ void print_act_selector_strings(void) { #ifdef VERSION_EU switch (language) { - case 0: + case LANGUAGE_ENGLISH: actNameTbl = segmented_to_virtual(act_name_table_eu_en); levelNameTbl = segmented_to_virtual(course_name_table_eu_en); break; - case 1: + case LANGUAGE_FRENCH: actNameTbl = segmented_to_virtual(act_name_table_eu_fr); levelNameTbl = segmented_to_virtual(course_name_table_eu_fr); break; - case 2: + case LANGUAGE_GERMAN: actNameTbl = segmented_to_virtual(act_name_table_eu_de); levelNameTbl = segmented_to_virtual(course_name_table_eu_de); break; } currLevelName = segmented_to_virtual(levelNameTbl[gCurrCourseNum - 1]); #endif - + // Print the coin highscore. gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin); gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255); @@ -316,11 +318,12 @@ void print_act_selector_strings(void) { print_generic_string(102, 118, myScore); #endif } - // Print the level name; add 3 to skip the number and spacing to get to the actual string to center. - // TODO: There has to be a way to merge these, but US seems to need lvlNameX and EU doesn't - // TODO: allow it to be declared. + #ifdef VERSION_EU print_generic_string(get_str_x_pos_from_center(160, currLevelName + 3, 10.0f), 33, currLevelName + 3); +#elif defined(VERSION_SH) + lvlNameX = get_str_x_pos_from_center_scale(160, currLevelName + 3, 10.0f); + print_generic_string(lvlNameX, 33, currLevelName + 3); #else lvlNameX = get_str_x_pos_from_center(160, currLevelName + 3, 10.0f); print_generic_string(lvlNameX, 33, currLevelName + 3); @@ -339,9 +342,12 @@ void print_act_selector_strings(void) { // Print the name of the selected act. if (sVisibleStars != 0) { selectedActName = segmented_to_virtual(actNameTbl[(gCurrCourseNum - 1) * 6 + sSelectedActIndex]); -// TODO: Same merge issues as levelNameX above. + #ifdef VERSION_EU print_menu_generic_string(get_str_x_pos_from_center(ACT_NAME_X, selectedActName, 8.0f), 81, selectedActName); +#elif defined(VERSION_SH) + actNameX = get_str_x_pos_from_center_scale(ACT_NAME_X, selectedActName, 8.0f); + print_menu_generic_string(actNameX, 81, selectedActName); #else actNameX = get_str_x_pos_from_center(ACT_NAME_X, selectedActName, 8.0f); print_menu_generic_string(actNameX, 81, selectedActName); @@ -414,7 +420,7 @@ s32 lvl_update_obj_and_load_act_button_actions(UNUSED s32 arg, UNUSED s32 unused #else if ((gPlayer3Controller->buttonPressed & (A_BUTTON | START_BUTTON | B_BUTTON | Z_TRIG))) { #endif -#ifdef VERSION_JP +#if defined(VERSION_JP) || defined(VERSION_SH) play_sound(SOUND_MENU_STAR_SOUND, gDefaultSoundArgs); #else play_sound(SOUND_MENU_STAR_SOUND_LETS_A_GO, gDefaultSoundArgs); diff --git a/tools/apply_patch.sh b/tools/apply_patch.sh old mode 100644 new mode 100755 diff --git a/tools/create_patch.sh b/tools/create_patch.sh old mode 100644 new mode 100755 diff --git a/tools/ido5.3_compiler/usr/lib/acpp b/tools/ido5.3_compiler/usr/lib/acpp new file mode 100755 index 0000000000000000000000000000000000000000..d5392cf67a880790560d854df4886fc8479a4384 GIT binary patch literal 93440 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 literal 0 HcmV?d00001 diff --git a/tools/ido5.3_compiler/usr/lib/copt b/tools/ido5.3_compiler/usr/lib/copt new file mode 100755 index 0000000000000000000000000000000000000000..2e689fdca47d164a0f3b4407db3b99e3a6d649a5 GIT binary patch literal 3597360 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,e*C{Z6 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

-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

V_=X4_09TccJF}M1JVz&M}UFB9L%2Cy$6dN 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%0Ab)siI14|Dmph0bXP6o;TBMd41jknG) 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�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

+xsc5MW?nUzg9o(6a-~W?5Ikz|aG|w`^S=14AEl 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 zA860�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

Y&Id8KB(f!N9`6b)W&{M$r5P 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·c3SaPE1<)SNL<1FrBo+n+rUGpS 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

1gH%O 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

Nu1xCSx49uWDBIFEp0o9&G;Qmby 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 z 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�>-l#7zVQ#4Q8_#BBrw#2o|##9agg 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 IptQ*V01o0oqW}N^ literal 0 HcmV?d00001 diff --git a/tools/patch_libmalloc.py b/tools/patch_libmalloc.py old mode 100644 new mode 100755 diff --git a/tools/revert_patch.sh b/tools/revert_patch.sh old mode 100644 new mode 100755 diff --git a/undefined_syms.txt b/undefined_syms.txt index 3ecb5d4e..b3937a03 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -28,3 +28,7 @@ D_B0000014 = 0xB0000014; D_C0000000 = 0xC0000000; D_C0000008 = 0xC0000008; D_C000000C = 0xC000000C; + +/* Shindou symbols */ +func_sh_802F69CC = 0x802F69CC; +func_sh_8024CC7C = 0x8024CC7C; \ No newline at end of file

q8ZuYV7Ng+LGkD}zIaD)y&(T?WKihGa)ukU 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 p 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