Commit graph

208 commits

Author SHA1 Message Date
Isaac0-dev
e74ea05fde
revise better frame pacing (#901)
improved frame pacing, where frame delaying is done just before displaying the frame.
so, the frame is fully rendered, and then the delay is done to wait the extra time before displaying the frame.
This is a far more reliable and consistent way to manage frame pacing, and it will help to keep the framerate from choking too badly when the game lags a little. 

The changes to `gfx_end_frame` is to minimize the steps necessary between delaying and actually displaying the frame. This is an optimization just to increase the accuracy of frame pacing even further.

Also, delta calculation is improved when the number of frames to draw is known. 

Djui cursor movement is also updated every frame for smoother movement.
2025-08-27 08:17:16 +10:00
Isaac0-dev
ac1cf57cf0
new djui hud tools: viewport, scissor and render line (#916)
added these new djui hud tools for Lua:
- djui_hud_set_viewport
- djui_hud_reset_viewport
- djui_hud_set_scissor
- djui_hud_reset_scissor
- djui_hud_render_line - this code could already be done exactly. this is just to make rendering lines more efficient. 

Also made nametags use a viewport for scaling in the credits.
2025-08-27 08:15:41 +10:00
Beckowl
03b29489b1
Add `smlua_text_utils_allocate_dialog` (#896)
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
* wip

* get rid of seg2_dialog_table and fix crashes

* remove unused include

* change more types to s32

* remove dialog tables from eu_translation.h

* fix dialog_table_get signature

* Change `oToadMessageDialogId` to s32

* remove exit from dialog_table_add

* warning

* calloc allocated dialogs

* avoid memcpy on allocation fail

* Move dialog entry text field init to dialog_table_init

* Free original dialog entries' text field

* Put all reset logic in one place

* Run autogen

* Remove ``get_dialog_text_ascii`` from autogen

* minor fix

* free dialog->str if replaced

* nevermind

* remove get_dialog_unmodified from autogen

* Change -1 to DIALOG_NONE

* update stuff to s32

* use growing array functions

* Change limit to something more reasonable

* add null check

* remove explicit cast

* Minor fixes

* more type fix

* peachy review

* Fix weird enums in autogen

* remove extra newline :p

* add dialog restore

* bump max dialogs just a lil bit 🥺

* add lua behavior params

* all OBJECT fields are now Lua variables

* Revert lua behavior params changes

* isaac review

* fix segfault

---------

Co-authored-by: PeachyPeachSM64 <72323920+PeachyPeachSM64@users.noreply.github.com>
2025-08-03 17:49:45 +02:00
PeachyPeachSM64
afec9d35b9 Revert "much better frame pacing"
- No one complained about framerate since several updates now; don't fix what isn't broken
- Too much frames are drawn at low framerates when Vsync is enabled
- FPS and delay calculation are wrong with Vsync: 60 FPS looks like 30 with a 120+Hz monitor
- Fixed Auto mode that was broken
- Kept precise_delay_f64 as I have observed no noticeable impact on CPU
2025-07-28 22:31:40 +02:00
Isaac0-dev
593eb9aafc improved delta calculations for capped framrates
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
2025-07-26 13:30:24 +10:00
Isaac0-dev
46b1a8bbb9 auto framerate mode
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
2025-07-26 09:56:14 +10:00
Isaac0-dev
0a84ca725e much better frame pacing
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
plus limited frame rates on the loading and crash screens to go easy on the cpu.

during gameplay, this new system is able to stay true to your fps limit without frame drops.
Vsync causes occasional frame drops by just 1 frame. this is an sdl issue and i know of no workaround; luckily it's very minor.

this commit changes frame pacing by moving frame delaying to just before the frame is displayed. a more precise delay function is also used.
2025-07-25 14:00:14 +10:00
PeachyPeachSM64
9c28364d81 Fix warnings and some bugs
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows-opengl (push) Has been cancelled
Build coop / build-windows-directx (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
thanks maniscat
2025-07-02 18:49:44 +02:00
Cooliokid956
3bfa75e32b
Miscellaneous Additions: Addendum (#723)
Some checks are pending
Build coop / build-ubuntu (push) Waiting to run
Build coop / build-windows (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
* More autogen work

- made the `Pointer_` classes into aliases instead so that they're actually associated with their true type
- "Total constants" metric is now accurate

* High Quality Master Volume

* Audio work

it's 12:55am and there are some bright flashes outside (lightning)

- cracked the code (interpreted the "Acc" in `tempoAcc`)
- added several functions that will help greatly in the Streamed Music department (you can now match sequenced music fading (transitions, eepy, etc.))
- introducing `gMasterVolume`! a variable that is only updated when it needs to be, theoretically improving performance (by some amount). this variable is used in many places in place of recalculations of the same number
- made it so that muting the game skips some audio processing (not the main process since that would linger after unmuting (not good))
- fixed an oversight where lua volumes were not taken into account when `audio_stream_set_volume`
- it's its 😁
- removed additional `#include "audio/external.h"`

it is 1:06am
gn

* Add mouse status functions

you can now check if mouse buttons were held, clicked, or released

* Sorting was a bad idea

disabled sorting for constants so that they are represented more closely to their original defines

* Expose playerlist page index

also noticed that sorting still sucks

* Minor (very important) detail

lalette

* Addressing the PeachyPeachSM64 reviews

* Return of the Forced 4:3 Mode

shoutouts to DISPLAY.FORCE_4BY3 for sticking through the toughest of times, waiting for this day to come

* Added scroll support

- Scrolling added to chat box (hold ctrl to scroll fewer lines, shift to scroll faster)
- Scrolling functions added to smlua

* Addressing the Isaac0-dev review + fixes

- mouse scroll is now accumulated
- djui_gfx_get_dimensions
- forced 4:3 won't kick in if the window isn't wide enough
- game now recognizes horizontal resizing when in 4:3 mode

* Run autogen

* gfx_get_dimensions

works just as well
2025-04-05 13:52:14 -04:00
Cooliokid956
42e0051dda
Headless mode as a CLI option (#639) 2025-01-28 10:19:38 +10:00
Isaac0-dev
eebc9ee4fd more fps tweaking 2025-01-14 17:05:53 +10:00
Agent X
ebeb58da13 Small formatting fix 2025-01-11 15:52:10 -05:00
iZePlayz
b75df78712
added --coopnet parameter (#625)
* added --coopnet parameter

* bug fix

* bugfix 2

* bug fix 3

* require password

* removed old text

* fixed indentation
2025-01-11 15:48:20 -05:00
Agent X
f94a3061cc Add width, height, and player count launch parameters 2025-01-11 14:22:41 -05:00
PeachyPeach
447e2f1121
Fix FPS yet again (#598) 2024-12-31 12:46:27 -05:00
PeachyPeach
62ced7973b
Fix FPS again (#592) 2024-12-29 13:41:59 -05:00
Michael
ba037771bd
ime composition support (#589) 2024-12-28 08:45:34 -05:00
PeachyPeach
7c2f055a86
Fix frame rate (again) (#537) 2024-11-29 08:14:50 +10:00
PeachyPeach
b2137ca2ae
Fix frame rate (#530) 2024-11-28 10:54:15 +10:00
Isaac0-dev
50b727b41b disable audio threading until it seems stable 2024-11-28 06:49:34 +10:00
Prince Frizzy
507f578dbb
Threaded Audio Support (#176)
* Initial threaded audio. (WIP)

* Ready for testing threaded audio.

* Remove this, It causes issues on older gcc versions.

* Fix Loading Thread not running properly.

* Fix Loading Screen & Implementation Updates

* Update comment.

* Revamp Thread States
2024-11-26 15:53:09 +10:00
Isaac0-dev
3e39f5651a add some bounds checks 2024-11-13 13:29:50 +10:00
Prince Frizzy
a0ae1cdc02
Revamp Djui Profilers (#381) 2024-10-20 20:27:09 +10:00
Isaac0-dev
4aa2a20f72
fixes, clean up and some new features (#259)
- Only inited `smlua_audio_utils` if needed, since there will probably be plenty of people who play without ever using mods with custom audio.
- Fixed the pause anywhere setting - this ended up not being fully accurate to ex-coop, which it was originally intended to be.
- Stopped regenerating dynos collision bin on start up every time therefore giving a slight start up speed boost for some people.
- Added a config file setting that lets people choose to compress dynos bins on startup (disabled by default).
- Fixed a warning that shows on non macs during compiling.
- Properly fixed the chat box focus.
- Made the public lobby rules panel "temporary".
- Added a cleaner loading screen design.
- Added an ex-coop theme easter egg, can only be activated from the config file.
- Cleaned up the Lua traceback logging, now shows the folder and file the error occurred in, rather than the full path.
- Added a way to set `gCheckingSurfaceCollisionsForCamera`, so mods can specify to surface finding functions to ignore `SURFACE_FLAG_NO_CAM_COLLISION` internally.
- Rewrote the way smlua pushes CObjects/CPointers to Lua. Now using the C Lua API entirely to connect to Lua.
	- Fixed a use-after-free bug that could easily crash the game through Lua (explained further in one of my comments below).
- Fixed a common crash in `audio_sanity_check`.
2024-09-12 19:09:01 +10:00
Jordan Russell
de47af0461
Mumble Positional Audio Integration (#247)
* added shared memory for mumble integration
update mumble struct with player and camera data

* osx compile fixes

* renamed methods

* fixed inversed unit vectors

* made mumble camera position mario

* cleaned up spacing

* added separate context for main menu

* added checks to avoid improperly changing contexts
2024-09-01 12:45:43 -04:00
Agent X
594ff262bc a bunch of fixes (#216)
Nice job targeting the main branch Isaac

Co-Authored-By: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com>
2024-07-17 08:37:42 -04:00
Agent X
1380e9b594 Fix macOS compilation crash 2024-07-10 11:49:35 -04:00
Radek Krzyśków
75ce4e1d1d
Optional updates for the loading screen (#87)
- added support for WAPI_DXGI (now only WAPI_DUMMY does not render the loading screen)
2024-07-01 13:34:20 +10:00
Agent X
099b97b934 Add mute window when unfocused option
Co-Authored-By: Tulpen <63363329+tulpenkiste@users.noreply.github.com>
2024-06-30 11:42:37 -04:00
Agent X
af1606086d Add skip update check launch param 2024-06-30 11:05:16 -04:00
Agent X
b228b3bb0e Re-enable update checker/changelog code, set version back to v1.0 2024-06-30 07:43:13 -04:00
Radek Krzyśków
e2c15afc68
Windows platform enhancements (#84)
* Enabling portable paths for Windows (custom user preferences dir, drag'n'drop paths)

* Updated the windows messages loop for DXGI window API

* Fixed international keyboard layouts text input in DXGI
2024-06-30 00:46:14 -04:00
Isaac0-dev
eeebfecca4
more loading screen fixes for non supported builds (#74) 2024-06-19 11:43:01 +10:00
Agent X
a8fdc53b8d Restore original crash screen shade of blue 2024-06-13 20:33:47 -04:00
Agent X
8bae9e2ec7 Change Lua volume control to 0-127 instead of 0.0-1.0 2024-06-11 19:10:54 -04:00
Agent X
ed1986e743 Add volume control functions to Lua 2024-06-07 17:34:24 -04:00
Agent X
fa8d8c9b0f Fixes and overhaul mouse locking 2024-06-01 13:30:41 -04:00
Isaac0-dev
a347f77b3c
fix some git merge conflicts that weren't resolved (#55)
and added -latomic to build flags to fix compile warnings while compiling miniaudio
2024-06-01 13:40:58 +10:00
Agent X
ceb7aa4649 Palette system overhaul and preset rewrite 2024-05-21 17:09:59 -04:00
Agent X
f2a6891a08 Rework new user folder system, make it just read sm64ex-coop if sm64coopdx isn't present, no more copying 2024-05-16 17:15:25 -04:00
Agent X
591261fd41 Rename tmp to .tmp and hide on Windows (Will test after making this commit) 2024-05-15 18:00:16 -04:00
Agent X
12aff40090 Make user folder sm64coopdx instead of sm64ex-coop, add auto folder copy 2024-05-15 18:00:16 -04:00
Isaac0-dev
bab8be49af
fixed a crash & memory leak from smlua_text_utils (#40)
* fixed a crash & memory leak from smlua_text_utils

* prevent autogen from exposing smlua_text_utils_shutdown

* forgot to push this
2024-05-13 19:38:53 -04:00
Isaac0-dev
082b6dd6da
interpolate scrolling textures (#30)
* interpolate scrolling textures

* cleaner way to skip interpolation

* fixed interpolation only lasting for one frame

* just reorder these

just because
2024-05-13 19:37:29 -04:00
Isaac0-dev
4fc0cc92e6
fix headless servers with mods that access marioObj on load (#37) 2024-05-12 22:58:43 +10:00
Agent X
c91b390d80 Remove some legacy sm64ex code 2024-05-11 16:30:25 -04:00
Isaac0-dev
85c3bde7e3
improve frame delaying and vsync (#31)
use uncapped framerate and vsync for the best experience
2024-05-09 23:56:54 +10:00
Isaac0-dev
c288fdf0d2
a bit of cleanup (#26)
disabled the loading screen properly with gCLIOpts.hideLoadingScreen
2024-05-06 22:16:48 +10:00
Isaac0-dev
0174cfa0fa
move domain resolution to socket.c (#23) 2024-05-03 21:27:44 +10:00
Agent X
1d72087479 Readd fixed MSAA 2024-04-19 12:28:45 -04:00