Commit Graph

2153 Commits (20167088d6f978ff1d0de9e91b6127a63b635e9e)

Author SHA1 Message Date
PeachyPeach 6d360f259c Changes in level_info; play_transition; dev-only warp command; bug fix for moving sounds played via lua (#69)
Improved level_info.c and added functions to LUA:
        const char *get_level_name_ascii(s16 courseNum, s16 levelNum, s16 areaIndex, s16 charCase):
            Return a level name as an ascii string. If charCase is 1, capitalize all letters.
            If charCase is -1, decapitalize all letters except the first one of each word.
        const u8 *get_level_name_sm64(s16 courseNum, s16 levelNum, s16 areaIndex, s16 charCase):
            Return a level name as an sm64 u8 string.
            If charCase is 1, capitalize all letters.
            If charCase is -1, decapitalize all letters except the first one of each word.
        const char *get_level_name(s16 courseNum, s16 levelNum, s16 areaIndex):
            Shortcut for get_level_name_ascii(courseNum, levelNum, areaIndex, -1).
        const char *get_star_name_ascii(s16 courseNum, s16 starNum, s16 charCase):
            Return a star name as an ascii string.
            If charCase is 1, capitalize all letters.
            If charCase is -1, decapitalize all letters except the first one of each word.
        const u8 *get_star_name_sm64(s16 courseNum, s16 starNum, s16 charCase):
            Return a star name as an sm64 u8 string.
            If charCase is 1, capitalize all letters.
            If charCase is -1, decapitalize all letters except the first one of each word.
        const char *get_star_name(s16 courseNum, s16 starNum):
            Shortcut for get_star_name_ascii(courseNum, starNum, -1).

    Added play_transition function to LUA.
        I chose to copy the function declaration to smlua_misc_utils.h instead of adding area.h
        to the autogen tool, as most structures, variables and functions in area.h aren't meant
        to be used by LUA scripts.

    Added a dev-only warp chat command.
        This command signature is /warp [LEVEL] [AREA] [ACT]. Level can be either a number
            or a shorthand name (bob, wf, ccm...). Area and Act are numbers.
        This command is available only when building the game with DEBUG and DEVELOPMENT.
        This command cannot be used if hosting through Discord.

    Fixed a bug with moving sounds when they are played via a lua script.
        Bug: Moving sounds (including terrain sounds, flying sound, quicksand sound)
            are not played correctly when a lua script play them via a call of
            play_sound or play_sound_with_freq_scale. This is due to how the moving
            sounds are handled internally. They use the f32 pointer provided to the
            play_sound functions to decide if the sound must be kept playing,
            stopped or restarted. Most of the time, the pointer provided is the
            cameraToObject field of Mario's object graph node. Since smlua uses a
            circular buffer for Vec3f conversion, this pointer is lost, and the
            sound engine can't decide what to do with the sound, resulting in a
            weird and incorrect sound effect.
        Fix: play_sound and play_sound_with_freq_scale now calls
            smlua_get_vec3f_for_play_sound before filling the sound request queue,
            to retrieve the correct pointer from the Vec3f provided by smlua.
2022-04-26 13:48:50 -07:00
MysterD a41c9f3f7b Make coop-compiler use O2 2022-04-23 20:01:52 -07:00
MysterD 26b3ec966c Created a minor version number 2022-04-23 15:55:26 -07:00
MysterD 41aac2a3c4 Possible mac compile fix 2022-04-23 15:54:39 -07:00
MysterD a7f76be622 Fix crash when pausing in an invalid act 2022-04-23 15:54:31 -07:00
MysterD 6b008c7518 Fix crash in find_surface_on_ray_list() 2022-04-23 15:50:14 -07:00
MysterD 10305fcd5c Another download fix, whoopsies 2022-04-23 15:13:28 -07:00
MysterD 2827c523ce Fix memory corruption in download 2022-04-23 15:08:33 -07:00
MysterD 55ed56b7f4 Revert DynOS auto-disable-billboard 2022-04-23 14:28:02 -07:00
MysterD 40896e09d0 Prevent DynOS packs from being enabled then disabled on launch 2022-04-23 03:23:30 -07:00
MysterD 0f821483b1 Automatically disable billboards when a DynOS model uses more than 6 vertices 2022-04-23 03:05:16 -07:00
MysterD a8fbf26338 Fix crash when toggling dynos packs 2022-04-23 02:22:12 -07:00
MysterD 22f39d3933 Fixed rare crash in geo_process_node_and_siblings 2022-04-23 01:12:12 -07:00
MysterD 163ab1b277 Merge branch 'unst24' into unstable 2022-04-23 00:38:39 -07:00
MysterD 37606faead Made specialTripleJump a field of MarioState instead of a global 2022-04-23 00:35:49 -07:00
MysterD 09c258f752 Sort mods list 2022-04-23 00:30:43 -07:00
MysterD 25d9f2c5b8 Added more detailed lua error logs 2022-04-23 00:15:08 -07:00
MysterD 6436c257ac Allow Lua to set fields to nil 2022-04-22 23:49:14 -07:00
MysterD 09217150e1 Fix error cascade when one mod has script errors 2022-04-22 23:42:03 -07:00
MysterD 5ef726c378 Made Lua errors show a backtrace for almost all cases 2022-04-22 23:31:25 -07:00
MysterD 03b81569e9 More performance improvements 2022-04-22 20:57:18 -07:00
MysterD ae0bf647f7 Fix sm74 ee course 11 2022-04-22 19:27:19 -07:00
MysterD c2d4cd1cc8 Fix up DynOS actor override 2022-04-22 18:57:26 -07:00
MysterD 4a4501d0e4 Fixed finding of renamed custom actors 2022-04-22 18:54:11 -07:00
MysterD 60a2f1d553 Special stages show their level name in the pause menu again 2022-04-22 18:53:53 -07:00
MysterD d6b2cccff5 Move Lua allow lists over to using a hashmap 2022-04-22 18:51:25 -07:00
MysterD 41fbf6cd7f Use binary search for all Lua cobject fields 2022-04-22 18:51:25 -07:00
MysterD 86889da980 Added gActiveMods global to lua 2022-04-22 18:44:59 -07:00
MysterD 199ca70c86 Split up functions.md into multiple pages 2022-04-22 18:41:42 -07:00
MysterD 2552d22cf9 Added custom mod packets 2022-04-22 00:13:58 -07:00
MysterD 77ca167564 Added HOOK_ON_DEATH 2022-04-21 18:34:12 -07:00
MysterD 146983769d Adjustments to reliable packets 2022-04-21 18:33:20 -07:00
MysterD 647d7c92b9 Fixed player interactions 2022-04-21 00:48:26 -07:00
MysterD 0e9bbf1ec1 Bump version 2022-04-20 22:11:05 -07:00
MysterD bbefd2eb35 Only have interactions happen for the local player 2022-04-20 22:10:52 -07:00
MysterD b531c30a46 Added passes_pvp_interaction_checks() 2022-04-20 18:27:34 -07:00
MysterD 8f5136783c Merge branch 'unstable' of github.com:sm64ex-coop-dev/sm64ex-coop into unstable 2022-04-20 11:22:18 -07:00
MysterD 0db8bde5ab Add headPos to marioBodyState 2022-04-20 18:21:36 -07:00
137329506980462592 ae961fab33 Ice color palettes (#66)
Ice color palettes

Co-authored-by: MysteryMeatwad <61129329+MysteryMeatwad@users.noreply.github.com>
2022-04-20 11:21:11 -07:00
PeachyPeach ee9dbc6e80 Added lua profiler; Added useful object functions; Bug fixes (#65)
Added a basic lua profiler
        If the game is compiled with LUA_PROFILER=1, displays on screen the average execution time per frame of each active lua mod, in microseconds.

    Added object functions
        For some reasons, accessing the object fields obj.o* via lua is rather slow, and can drastically increase execution time of custom behaviors. For basic stuff like setting an object's velocity or moving it, some functions, missing from the original code, have been added:
        s32 obj_is_valid_for_interaction(struct Object *o): returns 1 if an object is valid for interaction, i.e. active, tangible and not interacted.
        s32 obj_check_hitbox_overlap(struct Object *o1, struct Object *o2): returns 1 if two objects hitboxes overlap. Doesn't check tangibility, only hitbox values.
        void obj_set_vel(struct Object *o, f32 vx, f32 vy, f32 vz): sets an object's velocity.
        void obj_move_xyz(struct Object *o, f32 dx, f32 dy, f32 dz): moves an object position by (dx, dy, dz).

    Bug fixes:
        Disable collisions with walls and ceilings after Mario exits a warp pipe to prevent softlocks in narrow places.
        Make the koopa shell exclamation box respawn after some time.
        Quicksand no longer downwarps and instant-kills Mario if he's shocked while being above it.
2022-04-20 11:20:45 -07:00
Isaac d40a020d04 update console help message (#68) 2022-04-20 11:19:00 -07:00
Prince Frizzy 654d3ddbf8 Some bug fixes. (#67)
* Some bug fixes.

Fix Bully Star Spawning Cutscene to be player dependent.
Add missing line to Makefile.
Fix compile error with Clang in save_file.c

* Fix DDD Chests Star spawining in the wrong location.
2022-04-20 11:18:17 -07:00
MysterD 1b291b0941 Added HOOK_ON_OBJECT_RENDER 2022-04-19 22:36:47 -07:00
MysterD 31b092adac Whoops, missed some profile flags 2022-04-19 21:20:08 -07:00
MysterD a3df8d9c0b Massive DynOS refactor for performance/organization 2022-04-19 21:06:18 -07:00
MysterD cc4e3c6354 Refactor how objects set their models 2022-04-19 18:47:50 -07:00
MysterD 8ddf90a058 Make DynOS texture lookup use a set for performance 2022-04-19 18:24:26 -07:00
MysterD 5e84c07e01 Add profiling compile option 2022-04-19 18:18:15 -07:00
MysterD b856648d6e Fix bug in dynos level gen of custom behaviors 2022-04-18 23:13:11 -07:00
MysterD 4159b7c5f5 Allow custom levels to use any active mod's variables 2022-04-18 23:02:40 -07:00