Commit graph

747 commits

Author SHA1 Message Date
Cooliokid956
0ef1a425b5
Merge 85da75afae into 60a793e3e6 2026-07-03 02:04:51 -05:00
Cooliokid956
be8ad7acc9
Make spawn_*_object setup function optional (and everything else) (#1321)
* sep

* aughh i forgot to run autogen
2026-06-21 18:24:53 +02:00
PeachyPeach
f3df12cb3e
Lua API cleanup (#1302)
* Lua API cleanup

* rerun autogen
2026-06-21 14:08:00 +02:00
Cooliokid956
86a4799ef6
Add a few coin-related names, constants, parameters, etc. (#1319)
* sep

* Peachy

* header update fail

* include fail
2026-06-21 13:21:26 +02:00
Cooliokid956
85da75afae sep-spawnOptMisc 2026-06-18 21:36:39 -05:00
Cooliokid956
dc9e3c8c8a sep-pauseExit 2026-06-18 20:47:18 -05:00
PeachyPeachSM64
f01ffb4bd8 update object-lists
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
2026-06-18 19:45:50 +02:00
Cooliokid956
9f748cbe76 sep-coin 2026-06-17 21:54:04 -05:00
PeachyPeachSM64
d16c495a51 Move unused fields to hidden so mods can still use them 2026-06-15 23:30:31 +02:00
PeachyPeachSM64
fa7ebb29e5 keep that for now
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
2026-06-15 18:58:03 +02:00
PeachyPeachSM64
bdf30bc88e Remove unused and filler fields from Lua
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
2026-06-14 19:42:05 +02:00
PeachyPeach
06ce5a2d3f
Custom object fields enhancements (#1230)
* Define global custom object fields

* _global_custom_object_fields

* improve custom object fields

* fix cobject pairs + add custom object fields; remove unused stuff

* mucher better

* paramater

* review 1

* review 2

* Fix 'obj_get_*_with_*_field_*' functions with custom fields
2026-06-14 16:28:52 +02:00
Cooliokid956
672333b73f A few more names
More names
- `enum CoinTypes`
- added names to a few unknown params/fields
- Made `objSetupFunction` optional for spawn object functions
2026-06-13 22:45:29 -05:00
Cooliokid956
cd857a023e Fix #6 (Feasible #4)
Made the enums flexible
2026-06-13 02:33:45 -05:00
Cooliokid956
8fd833f34d Fix #3 (Feasible #1) 2026-06-13 02:16:32 -05:00
Cooliokid956
965884fb3b Address robot nitpicks 2026-06-13 02:04:35 -05:00
Cooliokid956
a047e16a9b Allow bubbled players to stay alive 2026-06-13 01:15:35 -05:00
Cooliokid956
cda0fa648b Fix double bubble life loss
- Borrowed certain things from HackerSM64/later refreshes
  - lots of `enum`s!
    - `MenuOption` [NEW]
    - `TimerControl`
    - `WarpOperation`
    - `WarpFlags` [NEW]
    - `WarpNodes`
    - `WarpTypes`
  - names here and there

NEW Level Value: `pauseExitMode`
- Learn:
```c
enum PauseExitMode {
    PAUSE_EXIT_VANILLA,   // 0b00 // "EXIT COURSE"    exits to castle
    PAUSE_EXIT_COURSE,    // 0b01 // "EXIT COURSE"    exits the course
    PAUSE_EXIT_TO_CASTLE, // 0b10 // "EXIT TO CASTLE" exits to castle
    PAUSE_EXIT_BOTH       // 0b11 // "EXIT COURSE" and "EXIT TO CASTLE"
};
```

- Deduplicated `Painting`s
  - Defaults are now created/restored using Macros
- Killed so many unused variables
- Purged all references to the sm64ex Exit Game feature
  - like that's ever coming back
- Getting things ready for the return of Goddard

... - oh, bubbles!
- Fixed double life loss on timeout
- :)
2026-06-13 00:14:27 -05:00
Cooliokid956
b28a7fd741 Snip dead code, rename variables for Hacker parity 2026-06-09 03:59:54 -05:00
PeachyPeachSM64
a8cc9dbdf7 SOC index is not deprecated
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
2026-06-04 18:42:52 +02:00
PeachyPeach
b8fde28886
Fix Mario clones stealing bodystate from player Marios (#1286)
When spawning fake Marios, these objects would steal the bodystate from valid Marios, resulting in nametags rendering in the wrong place and PvP attacks using these fake as origin.
2026-06-01 10:29:18 +10:00
Agent X
2ed8b3252f
Achieve 100% function documentation (1972/1972 smlua functions) (#1289)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
* Achieve 100% function documentation

Jeez man

* Fix borked character

* Fix an error I must have made a while ago
2026-05-31 16:15:18 -04:00
Agent X
46859be47d
Expose DJUI gfx scale function (#1292) 2026-05-31 15:05:41 -05:00
Agent X
db2195249f
Add function to center free camera (#1288)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
2026-05-31 15:11:13 +10:00
PeachyPeachSM64
b6a20eeee6 reran autogen
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
2026-05-30 20:10:52 +02:00
Emily♥
15af400a01
Add djui_console_is_open (#1278)
* Add djui_console_is_open

Adds a lua function that returns if the djui console is open or not. Useful with the existing function djui_console_toggle() for disabling the djui console (mainly to prevent reading chat messages, as opposed to the only other solution which is to fill the console with spam). It doesn't affect the console used with the --console launch parameter in case debugging is necessary.

* Fix function description

please I need this

* Fix function description on docs

Silly me forgot to actually change the description where it matters
2026-05-30 12:01:52 -04:00
EmeraldLockdown
55a7590e89 fix incorrect label on playerIndex in HOOK_ON_NAMETAGS_RENDER
I INCORRECTLY assumed that a number was an `s32` and a integer was an `u64`. This is some next level blunders. A `number` is a `f64` and a `integer` is a `s64`. This is, in fact, a integer.
2026-05-29 18:58:35 -05:00
EmeraldLockdown
7980c3b25b
Fix playerIndex type for HOOK_ON_NAMETAGS_RENDER in hooks.md
Before it was a `string` when it should be a `number`. See `smlua_hook_events.inl`

`SMLUA_EVENT_HOOK(HOOK_ON_NAMETAGS_RENDER, _, s32 playerIndex, Vec3f pos, OUTPUT const char **playerNameOverride) // Manually defined hook`

The type `number` is used as an `s32` is equivalent to a `number`. An `integer` is equivalent to a `u64`
2026-05-29 16:45:12 -05:00
PeachyPeach
358a60d74d
Add default values for mod_storage_load functions (#1276) 2026-05-28 08:44:35 +10:00
PeachyPeachSM64
b46f1a26cf Fix inconsistencies with tabs and remove trailing whitespaces
Some checks are pending
Build coop / build-macos-intel (push) Waiting to run
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
2026-05-26 23:51:58 +02:00
Agent X
943bbd29e2
Add get_current_play_mode() and get_delayed_warp_op() (#1270) 2026-05-25 19:31:02 -04:00
Agent X
7de436bcb6
Add function to enable a fullbright mode (set_shading_fullbright_enabled) (#1261)
* Add function to enable a fullbright mode

* Requests

* Breaklines
2026-05-23 14:37:58 -04:00
Agent X
eb3de50d07 Default object light ID to -1
Some checks are pending
Build coop / build-macos-intel (push) Waiting to run
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
2026-05-23 11:47:05 -04:00
PeachyPeachSM64
2d6848a768 Fix object functions incorrectly using current object instead of the provided object 2026-05-23 12:31:27 +02:00
PeachyPeachSM64
541874fdca make visibleToObjects a boolean 2026-05-21 20:20:23 +02:00
Baconator2558
8f105ea53d
Rename and expose visibleToObjects field (#1251)
* override_mario_visibility_to_objects

* Remove override_mario_visibility_to_objects in favor of exposing visibleToObjects

* Fix comment referencing the field's original name

* Reset visibility each frame

* Minor fix
2026-05-21 14:10:10 -04:00
PeachyPeach
834512a5c5
Fix Lua/custom behaviors bugs and flaws (#1229)
* improve custom behaviors logic

* clarify description of get behavior functions; get name returns last name instead of first; create generic name only when needed

* review

* fix potential buffer overflow
2026-05-19 10:56:08 +10:00
PeachyPeachSM64
925325c5eb copy paste gone wrong
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
2026-05-18 14:10:39 +02:00
Sunk
e2035853b9
Change romhack camera options (#1247)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (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
* Change camera options

* Resolve suggestions
2026-05-16 22:07:51 -04:00
Isaac0-dev
967d120505
much further draw distance option (#1240)
The existing draw distance options don't actually increase the draw distance. It only impacts whether or not distant objects are rendered. 

This PR:
- Adds another option to the draw distance setting in the display menu, called "Infinite". It is not truly infinite, but it is significantly larger than what current options allow. Due to it not being truly infinite, we could use the name "Max" instead to be more accurate.
- Exposes a new function to the Lua API `draw_distance_scalar_is_infinite` which returns whether or not the infinite setting is enabled.
- `draw_distance_scalar_is_infinite` is now used in several places in this repo to bypass distance checks for objects if infinite mode is enabled.
- Fixes a bug where you couldn't bypass the distance check in `obj_is_in_view`, meaning you could never disable all object distance culling.
- The infinite setting now forces the far plane to be at least a minimum of `1,000,000`.
2026-05-16 11:13:02 +10:00
Cooliokid956
e87d118063
Multiline descriptions (#1235)
Some checks failed
Build coop / build-linux (push) Has been cancelled
Build coop / build-steamos (push) Has been cancelled
Build coop / build-windows (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
2026-05-13 16:06:19 -04:00
Agent X
19a429dbe5
Add built-in preset screen shader effects configurable through Lua (#1217)
* C++ lighting engine

Runs better using my new system for storing and iterating through lights.

I removed the lighting ctx profiler because after I've realized its very inaccurate and was probably programmed incorrectly from the start. Although I remember it working fine before and not constantly showing 20 ms or higher when I'm in an extremely simple level with extremely simple lights and the FPS is way too high for it to be taking 20 ms.

* Whoops

* Make some optimizations

* Fix small bug with LE inside graphics vertex function

I also brought back the lighting profiler because it's better than nothing.

* Some optimizations

* Cache active lights and 4 lights per vertex limit

Less branching and less iterating with the limit

* Screen shader effects for Lua [OpenGL]

Hue, saturation, brightness, contrast, exposure, dithering, posterization

Global = usually an object in the world
Non global = usually a screen element

Also:
* Changed skyboxes to use environment color instead of vertex color, visually identical
* Changed hud head texture to be non global
* changed power meter to be non global
* changed sparkles to be global
* changed some BBH vertex types to global

OpenGL renderer supported only for now.

* Add default values and better function names

Also fixed sizes in reset function

* Add scanlines effect

* Add global enabled function

* Fix some default values

* Hopefully fix white sparkles

* Whoops

* Address review

* Update function names

* Fix shader crash

* Address reviews
2026-05-11 15:59:48 -04:00
PeachyPeach
07c229afdc
Fix rendering issues with held objects (#1221)
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
Add a way to save and load a gfx state in display lists.
Its primary purpose is to save the gfx state before rendering a held object, then restore it later.
It fixes the issue where Mario had opaque legs with the vanish and metal caps when holding an object.
2026-05-06 07:10:59 +10:00
EmeraldLockdown
82a3afcc0f
Add HOOK_ON_PLAY_MODE_UPDATE and HOOK_BEFORE_PLAY_MODE_UPDATE (#1160)
* Add playmode hooks

* Add hook to docs, fix some crashes semi-related

* Rename that func
2026-05-04 21:01:01 -04:00
DorfDork
f688416483
Scale bone anim support (#1215)
* Scale bone anim support

Code changes provided by ExcellentGamer. Supports model anims which modify scale.

* Peachy code changes by ExcellentGamer

* Autogen constants

* changed vc3f_set to vec3f_copy
2026-05-05 00:15:00 +02:00
jayden
5dabcaa313
Add audio_stream_get/set_volume_channel (#1205)
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
Allows modders to play audio streams on channels other than level background music.
4 constants have been added for this purpose:
- `MOD_AUDIO_CHANNEL_MASTER` - sound is only affected by master volume
- `MOD_AUDIO_CHANNEL_MUSIC` - sound is affected by music volume, same as previous behaviour
- `MOD_AUDIO_CHANNEL_SFX` - sound is affected by sfx volume, same as sample behaviour
- `MOD_AUDIO_CHANNEL_ENV` - sound is affected by env volume 
This was done instead of using the existing `SEQ_PLAYER_*` constants to avoid confusion and because there isn't a `NONE`/`MASTER` option.

Additionally, sets the default to `MOD_AUDIO_CHANNEL_MUSIC` as to not break compatibility.

```lua
audio_stream_set_volume_channel(stream, MOD_AUDIO_CHANNEL_SFX) -- wow its just like a sample
audio_stream_get_volume_channel(stream) -- returns MOD_AUDIO_CHANNEL_SFX (its actually 2)
```
2026-05-03 17:59:11 +10:00
djoslin0
e88bd178fc
Refactor collision surface systems and add the ability to add/remove/move surfaces (#1143)
- Add `smlua_collision_add_surface`, `_move_surface`, `_delete_surface` Lua APIs
- Add `remove_static_object_collision` to fully free a SOC and its surfaces
- Split surface pools into separate static, SOC, and dynamic pools
- Replace index-based SOC tracking with unique ID counter (`sSOCIdCounter`)
- Invalidate Lua CObjects for recycled surfaces on pool clear
- Expose `SURFACE_POOL_STATIC/DYNAMIC/SOC` constants to Lua
- Add `growing_array_swap_and_pop` and `growing_array_swap_and_pop_index` to memory utils

Co-authored-by: MysterD <myster@d>
2026-05-02 14:58:46 -04:00
EmeraldLockdown
37f4b2e550
Expose gHudDisplay (#1158)
* Expose `gHudDisplay`

* Fix that
2026-05-01 22:25:06 -04:00
Cooliokid956
1d9de02af1
CObject Properties (#1068)
* CObject Properties

- Added property members to CObjects via `PROPERTY` macro
`PROPERTY(name, get, set)`
  - `name`: property name
  - `get`: `fun(self): value`
  - `set`: `fun(self, value)`
- Prettified `LuaObjectField` struct with unions for function/property value types
- Added properties to `struct ModAudio`
  - `position`
  - `looping`
  - `frequency`
  - `volume`
    - NOTE: only work with streams- the audio reform will come later

* Define array size only when necessary

- new `__pairs` metamethod for `CObject`s, cycles through all of an object's fields, in alphabetical order
- stray semicolon!
2026-05-01 22:12:51 -04:00
Squishy
0d95dfde11
Add independent X and Y scaling to text rendering functions (#1182)
* djui scale cool awesome

* fix autogen

* stop unnecessary yellow underlines

* Fix accidental bind removal
2026-05-01 21:17:44 -04:00