Foundation
Loading...
Searching...
No Matches
libsm64.h
Go to the documentation of this file.
1#ifndef LIB_SM64_H
2#define LIB_SM64_H
3
4#include <stddef.h>
5#include <stdint.h>
6#include <stdbool.h>
7
8#if defined(_WIN32)
9 #ifdef SM64_LIB_EXPORT
10 #define SM64_LIB_FN __declspec(dllexport)
11 #else
12 #define SM64_LIB_FN __declspec(dllimport)
13 #endif
14#elif defined(__GNUC__) && __GNUC__ >= 4
15 #ifdef SM64_LIB_EXPORT
16 #define SM64_LIB_FN __attribute__ ((visibility("default")))
17 #else
18 #define SM64_LIB_FN
19 #endif
20#else
21 #define SM64_LIB_FN
22#endif
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
29{
30 int16_t type;
31 int16_t force;
32 uint16_t terrain;
33 int32_t vertices[3][3];
34};
35
37{
39 float stickX, stickY;
41};
42
44{
45 float position[3];
46 float eulerRotation[3];
47};
48
55
57{
58 float position[3];
59 float velocity[3];
60 float faceAngle;
62 int16_t health;
63 uint32_t action;
64 int32_t animID;
65 int16_t animFrame;
66 uint32_t flags;
67 uint32_t particleFlags;
68 int16_t invincTimer;
69};
70
72{
73 float *position;
74 float *normal;
75 float *color;
76 float *uv;
78};
79
81{
82 /*0x00*/ float x, y, z;
83 /*0x0C*/ float offsetY;
84 /*0x10*/ float radius;
85 /*0x14*/ int16_t unk14;
86 /*0x16*/ int16_t numWalls;
87 /*0x18*/ struct SM64SurfaceCollisionData *walls[4];
88};
89
91{
92 float unused[4];
93 float normalX;
94 float normalY;
95 float normalZ;
97};
98
112
114{
115 int16_t type;
116 int16_t force;
117 int8_t flags;
118 int8_t room;
119 int32_t lowerY;
120 int32_t upperY;
121 int32_t vertex1[3];
122 int32_t vertex2[3];
123 int32_t vertex3[3];
124 struct {
125 float x;
126 float y;
127 float z;
130
131 uint8_t isValid;
133 uint16_t terrain;
134};
135
136enum
137{
141};
142
143
144typedef void (*SM64DebugPrintFunctionPtr)( const char * );
146
147typedef void (*SM64PlaySoundFunctionPtr)( uint32_t soundBits, float *pos );
149
150extern SM64_LIB_FN void sm64_global_init( const uint8_t *rom, uint8_t *outTexture );
152
153extern SM64_LIB_FN void sm64_audio_init( const uint8_t *rom );
154extern SM64_LIB_FN uint32_t sm64_audio_tick( uint32_t numQueuedSamples, uint32_t numDesiredSamples, int16_t *audio_buffer );
155
156extern SM64_LIB_FN void sm64_static_surfaces_load( const struct SM64Surface *surfaceArray, uint32_t numSurfaces );
157
158extern SM64_LIB_FN int32_t sm64_mario_create( float x, float y, float z );
159extern SM64_LIB_FN void sm64_mario_tick( int32_t marioId, const struct SM64MarioInputs *inputs, struct SM64MarioState *outState, struct SM64MarioGeometryBuffers *outBuffers );
160extern SM64_LIB_FN void sm64_mario_delete( int32_t marioId );
161
162extern SM64_LIB_FN void sm64_set_mario_action(int32_t marioId, uint32_t action);
163extern SM64_LIB_FN void sm64_set_mario_action_arg(int32_t marioId, uint32_t action, uint32_t actionArg);
164extern SM64_LIB_FN void sm64_set_mario_animation(int32_t marioId, int32_t animID);
165extern SM64_LIB_FN void sm64_set_mario_anim_frame(int32_t marioId, int16_t animFrame);
166extern SM64_LIB_FN void sm64_set_mario_state(int32_t marioId, uint32_t flags);
167extern SM64_LIB_FN void sm64_set_mario_position(int32_t marioId, float x, float y, float z);
168extern SM64_LIB_FN void sm64_set_mario_angle(int32_t marioId, float x, float y, float z);
169extern SM64_LIB_FN void sm64_set_mario_faceangle(int32_t marioId, float y);
170extern SM64_LIB_FN void sm64_set_mario_velocity(int32_t marioId, float x, float y, float z);
171extern SM64_LIB_FN void sm64_set_mario_forward_velocity(int32_t marioId, float vel);
172extern SM64_LIB_FN void sm64_set_mario_invincibility(int32_t marioId, int16_t timer);
173extern SM64_LIB_FN void sm64_set_mario_water_level(int32_t marioId, signed int level);
174extern SM64_LIB_FN void sm64_set_mario_gas_level(int32_t marioId, signed int level);
175extern SM64_LIB_FN void sm64_set_mario_health(int32_t marioId, uint16_t health);
176extern SM64_LIB_FN void sm64_mario_take_damage(int32_t marioId, uint32_t damage, uint32_t subtype, float x, float y, float z);
177extern SM64_LIB_FN void sm64_mario_heal(int32_t marioId, uint8_t healCounter);
178extern SM64_LIB_FN void sm64_mario_kill(int32_t marioId);
179extern SM64_LIB_FN void sm64_mario_interact_cap(int32_t marioId, uint32_t capFlag, uint16_t capTime, uint8_t playMusic);
180extern SM64_LIB_FN void sm64_mario_extend_cap(int32_t marioId, uint16_t capTime);
181extern SM64_LIB_FN bool sm64_mario_attack(int32_t marioId, float x, float y, float z, float hitboxHeight);
182
183extern SM64_LIB_FN uint32_t sm64_surface_object_create( const struct SM64SurfaceObject *surfaceObject );
184extern SM64_LIB_FN void sm64_surface_object_move( uint32_t objectId, const struct SM64ObjectTransform *transform );
185extern SM64_LIB_FN void sm64_surface_object_delete( uint32_t objectId );
186
187extern SM64_LIB_FN int32_t sm64_surface_find_wall_collision( float *xPtr, float *yPtr, float *zPtr, float offsetY, float radius );
189extern SM64_LIB_FN float sm64_surface_find_ceil( float posX, float posY, float posZ, struct SM64FloorCollisionData **pceil );
190extern SM64_LIB_FN float sm64_surface_find_floor_height_and_data( float xPos, float yPos, float zPos, struct SM64FloorCollisionData **floorGeo );
191extern SM64_LIB_FN float sm64_surface_find_floor_height( float x, float y, float z );
192extern SM64_LIB_FN float sm64_surface_find_floor( float xPos, float yPos, float zPos, struct SM64FloorCollisionData **pfloor );
193extern SM64_LIB_FN float sm64_surface_find_water_level( float x, float z );
194extern SM64_LIB_FN float sm64_surface_find_poison_gas_level( float x, float z );
195
196extern SM64_LIB_FN void sm64_seq_player_play_sequence(uint8_t player, uint8_t seqId, uint16_t arg2);
197extern SM64_LIB_FN void sm64_play_music(uint8_t player, uint16_t seqArgs, uint16_t fadeTimer);
198extern SM64_LIB_FN void sm64_stop_background_music(uint16_t seqId);
199extern SM64_LIB_FN void sm64_fadeout_background_music(uint16_t arg0, uint16_t fadeOut);
201extern SM64_LIB_FN void sm64_play_sound(int32_t soundBits, float *pos);
202extern SM64_LIB_FN void sm64_play_sound_global(int32_t soundBits);
203extern SM64_LIB_FN void sm64_set_sound_volume(float vol);
204
205extern SM64_LIB_FN int32_t sm64_pole_create(float x, float y, float z, float height, float downOffset, int16_t pitch, int16_t roll);
206extern SM64_LIB_FN void sm64_pole_destroy(int32_t poleHandle);
207extern SM64_LIB_FN void sm64_mario_attach_to_pole(int32_t marioId, int32_t poleHandle, int32_t grabFast);
208extern SM64_LIB_FN int32_t sm64_mario_get_action(int32_t marioId);
209
210#ifdef __cplusplus
211}
212#endif
213
214#endif//LIB_SM64_H
SM64_LIB_FN void sm64_set_mario_velocity(int32_t marioId, float x, float y, float z)
@ SM64_TEXTURE_HEIGHT
Definition libsm64.h:139
@ SM64_TEXTURE_WIDTH
Definition libsm64.h:138
@ SM64_GEO_MAX_TRIANGLES
Definition libsm64.h:140
SM64_LIB_FN float sm64_surface_find_poison_gas_level(float x, float z)
SM64_LIB_FN float sm64_surface_find_ceil(float posX, float posY, float posZ, struct SM64FloorCollisionData **pceil)
SM64_LIB_FN void sm64_mario_extend_cap(int32_t marioId, uint16_t capTime)
SM64_LIB_FN void sm64_set_mario_angle(int32_t marioId, float x, float y, float z)
SM64_LIB_FN void sm64_fadeout_background_music(uint16_t arg0, uint16_t fadeOut)
SM64_LIB_FN void sm64_set_sound_volume(float vol)
SM64_LIB_FN void sm64_set_mario_forward_velocity(int32_t marioId, float vel)
SM64_LIB_FN float sm64_surface_find_water_level(float x, float z)
SM64_LIB_FN void sm64_mario_heal(int32_t marioId, uint8_t healCounter)
SM64_LIB_FN void sm64_play_sound(int32_t soundBits, float *pos)
SM64_LIB_FN bool sm64_mario_attack(int32_t marioId, float x, float y, float z, float hitboxHeight)
SM64_LIB_FN void sm64_audio_init(const uint8_t *rom)
SM64_LIB_FN void sm64_mario_delete(int32_t marioId)
SM64_LIB_FN int32_t sm64_surface_find_wall_collision(float *xPtr, float *yPtr, float *zPtr, float offsetY, float radius)
SM64_LIB_FN void sm64_play_music(uint8_t player, uint16_t seqArgs, uint16_t fadeTimer)
SM64_LIB_FN void sm64_mario_interact_cap(int32_t marioId, uint32_t capFlag, uint16_t capTime, uint8_t playMusic)
SM64_LIB_FN uint16_t sm64_get_current_background_music()
SM64_LIB_FN void sm64_set_mario_state(int32_t marioId, uint32_t flags)
#define SM64_LIB_FN
Definition libsm64.h:21
SM64_LIB_FN void sm64_set_mario_anim_frame(int32_t marioId, int16_t animFrame)
SM64_LIB_FN void sm64_surface_object_delete(uint32_t objectId)
SM64_LIB_FN void sm64_global_init(const uint8_t *rom, uint8_t *outTexture)
void(* SM64PlaySoundFunctionPtr)(uint32_t soundBits, float *pos)
Definition libsm64.h:147
SM64_LIB_FN void sm64_register_play_sound_function(SM64PlaySoundFunctionPtr playSoundFunction)
SM64_LIB_FN void sm64_seq_player_play_sequence(uint8_t player, uint8_t seqId, uint16_t arg2)
SM64_LIB_FN void sm64_mario_attach_to_pole(int32_t marioId, int32_t poleHandle, int32_t grabFast)
SM64_LIB_FN float sm64_surface_find_floor(float xPos, float yPos, float zPos, struct SM64FloorCollisionData **pfloor)
SM64_LIB_FN void sm64_mario_tick(int32_t marioId, const struct SM64MarioInputs *inputs, struct SM64MarioState *outState, struct SM64MarioGeometryBuffers *outBuffers)
SM64_LIB_FN void sm64_pole_destroy(int32_t poleHandle)
SM64_LIB_FN int32_t sm64_pole_create(float x, float y, float z, float height, float downOffset, int16_t pitch, int16_t roll)
SM64_LIB_FN void sm64_stop_background_music(uint16_t seqId)
SM64_LIB_FN void sm64_mario_take_damage(int32_t marioId, uint32_t damage, uint32_t subtype, float x, float y, float z)
SM64_LIB_FN void sm64_set_mario_water_level(int32_t marioId, signed int level)
SM64_LIB_FN float sm64_surface_find_floor_height_and_data(float xPos, float yPos, float zPos, struct SM64FloorCollisionData **floorGeo)
SM64_LIB_FN void sm64_set_mario_faceangle(int32_t marioId, float y)
SM64_LIB_FN void sm64_static_surfaces_load(const struct SM64Surface *surfaceArray, uint32_t numSurfaces)
void(* SM64DebugPrintFunctionPtr)(const char *)
Definition libsm64.h:144
SM64_LIB_FN void sm64_set_mario_gas_level(int32_t marioId, signed int level)
SM64_LIB_FN void sm64_set_mario_action_arg(int32_t marioId, uint32_t action, uint32_t actionArg)
SM64_LIB_FN void sm64_global_terminate(void)
SM64_LIB_FN void sm64_set_mario_health(int32_t marioId, uint16_t health)
SM64_LIB_FN void sm64_play_sound_global(int32_t soundBits)
SM64_LIB_FN uint32_t sm64_surface_object_create(const struct SM64SurfaceObject *surfaceObject)
SM64_LIB_FN void sm64_register_debug_print_function(SM64DebugPrintFunctionPtr debugPrintFunction)
SM64_LIB_FN void sm64_set_mario_position(int32_t marioId, float x, float y, float z)
SM64_LIB_FN uint32_t sm64_audio_tick(uint32_t numQueuedSamples, uint32_t numDesiredSamples, int16_t *audio_buffer)
SM64_LIB_FN int32_t sm64_mario_create(float x, float y, float z)
SM64_LIB_FN int32_t sm64_mario_get_action(int32_t marioId)
SM64_LIB_FN void sm64_surface_object_move(uint32_t objectId, const struct SM64ObjectTransform *transform)
SM64_LIB_FN void sm64_set_mario_invincibility(int32_t marioId, int16_t timer)
SM64_LIB_FN float sm64_surface_find_floor_height(float x, float y, float z)
SM64_LIB_FN void sm64_set_mario_animation(int32_t marioId, int32_t animID)
SM64_LIB_FN void sm64_mario_kill(int32_t marioId)
SM64_LIB_FN void sm64_set_mario_action(int32_t marioId, uint32_t action)
SM64_LIB_FN int32_t sm64_surface_find_wall_collisions(struct SM64WallCollisionData *colData)
Definition libsm64.h:91
float originOffset
Definition libsm64.h:96
float normalX
Definition libsm64.h:93
float normalZ
Definition libsm64.h:95
float normalY
Definition libsm64.h:94
float unused[4]
Definition libsm64.h:92
Definition libsm64.h:72
float * position
Definition libsm64.h:73
float * color
Definition libsm64.h:75
float * uv
Definition libsm64.h:76
uint16_t numTrianglesUsed
Definition libsm64.h:77
float * normal
Definition libsm64.h:74
Definition libsm64.h:37
float stickY
Definition libsm64.h:39
uint8_t buttonA
Definition libsm64.h:40
uint8_t buttonB
Definition libsm64.h:40
float camLookX
Definition libsm64.h:38
float camLookZ
Definition libsm64.h:38
uint8_t buttonZ
Definition libsm64.h:40
float stickX
Definition libsm64.h:39
Definition libsm64.h:57
uint32_t particleFlags
Definition libsm64.h:67
float velocity[3]
Definition libsm64.h:59
uint32_t action
Definition libsm64.h:63
int32_t animID
Definition libsm64.h:64
uint32_t flags
Definition libsm64.h:66
int16_t health
Definition libsm64.h:62
float position[3]
Definition libsm64.h:58
int16_t animFrame
Definition libsm64.h:65
int16_t invincTimer
Definition libsm64.h:68
float faceAngle
Definition libsm64.h:60
float forwardVelocity
Definition libsm64.h:61
Definition libsm64.h:44
float eulerRotation[3]
Definition libsm64.h:46
float position[3]
Definition libsm64.h:45
Definition libsm64.h:114
int16_t type
Definition libsm64.h:115
struct SM64SurfaceObjectTransform * transform
Definition libsm64.h:132
uint8_t isValid
Definition libsm64.h:131
int32_t vertex2[3]
Definition libsm64.h:122
int32_t lowerY
Definition libsm64.h:119
int32_t vertex3[3]
Definition libsm64.h:123
float originOffset
Definition libsm64.h:129
int32_t upperY
Definition libsm64.h:120
float x
Definition libsm64.h:125
float y
Definition libsm64.h:126
uint16_t terrain
Definition libsm64.h:133
float z
Definition libsm64.h:127
int16_t force
Definition libsm64.h:116
int8_t flags
Definition libsm64.h:117
struct SM64SurfaceCollisionData::@1 normal
int32_t vertex1[3]
Definition libsm64.h:121
int8_t room
Definition libsm64.h:118
Definition libsm64.h:100
float aPosZ
Definition libsm64.h:101
int16_t aFaceAngleYaw
Definition libsm64.h:105
float aPosX
Definition libsm64.h:101
float aVelZ
Definition libsm64.h:102
float aPosY
Definition libsm64.h:101
int16_t aAngleVelRoll
Definition libsm64.h:110
int16_t aFaceAnglePitch
Definition libsm64.h:104
int16_t aAngleVelPitch
Definition libsm64.h:108
float aVelY
Definition libsm64.h:102
int16_t aFaceAngleRoll
Definition libsm64.h:106
int16_t aAngleVelYaw
Definition libsm64.h:109
float aVelX
Definition libsm64.h:102
Definition libsm64.h:50
struct SM64ObjectTransform transform
Definition libsm64.h:51
uint32_t surfaceCount
Definition libsm64.h:52
struct SM64Surface * surfaces
Definition libsm64.h:53
Definition libsm64.h:29
int16_t force
Definition libsm64.h:31
uint16_t terrain
Definition libsm64.h:32
int16_t type
Definition libsm64.h:30
int32_t vertices[3][3]
Definition libsm64.h:33
Definition libsm64.h:81
int16_t unk14
Definition libsm64.h:85
struct SM64SurfaceCollisionData * walls[4]
Definition libsm64.h:87
float radius
Definition libsm64.h:84
float y
Definition libsm64.h:82
float x
Definition libsm64.h:82
float z
Definition libsm64.h:82
float offsetY
Definition libsm64.h:83
int16_t numWalls
Definition libsm64.h:86