aboutsummaryrefslogtreecommitdiff
path: root/api.h
diff options
context:
space:
mode:
Diffstat (limited to 'api.h')
-rw-r--r--api.h96
1 files changed, 66 insertions, 30 deletions
diff --git a/api.h b/api.h
index ea9bef3..8f42eaf 100644
--- a/api.h
+++ b/api.h
@@ -23,20 +23,21 @@
#define VENGINE_TOOL_INTERFACE_VERSION "VENGINETOOL003"
#include "intdef.h"
+#include "os.h"
typedef void * (*createinterface_func)(const char *name, int *ret);
struct engserver {
struct {
usize _pad[36];
- void (*__thiscall server_command)(struct engserver *this, const char *str);
+ void (*VIRTUAL server_command)(struct engserver *this, const char *str);
} *vt;
};
struct engclient {
struct {
usize _pad[75];
- void (*__thiscall is_playing_demo)(struct engclient *this);
+ void (*VIRTUAL is_playing_demo)(struct engclient *this);
} *vt;
};
@@ -49,50 +50,85 @@ struct engineapi {
struct enginetools {
struct {
- usize _pad[64];
- void *is_recording_movie;
+ usize _pad[65];
+ void *start_movie_recording;
} *vt;
};
struct movieinfo {
- char name[256];
- int curframe;
- int type;
- int jpeg_quality;
+ char name[256];
+ int curframe;
+ int type;
+ int jpeg_quality;
+};
+
+// Almost no chance I need all of these, but why not.
+enum image_format {
+ IMAGE_FORMAT_UNKNOWN = -1,
+ IMAGE_FORMAT_RGBA8888 = 0,
+ IMAGE_FORMAT_ABGR8888,
+ IMAGE_FORMAT_RGB888,
+ IMAGE_FORMAT_BGR888,
+ IMAGE_FORMAT_RGB565,
+ IMAGE_FORMAT_I8,
+ IMAGE_FORMAT_IA88,
+ IMAGE_FORMAT_P8,
+ IMAGE_FORMAT_A8,
+ IMAGE_FORMAT_RGB888_BLUESCREEN,
+ IMAGE_FORMAT_BGR888_BLUESCREEN,
+ IMAGE_FORMAT_ARGB8888,
+ IMAGE_FORMAT_BGRA8888,
+ IMAGE_FORMAT_DXT1,
+ IMAGE_FORMAT_DXT3,
+ IMAGE_FORMAT_DXT5,
+ IMAGE_FORMAT_BGRX8888,
+ IMAGE_FORMAT_BGR565,
+ IMAGE_FORMAT_BGRX5551,
+ IMAGE_FORMAT_BGRA4444,
+ IMAGE_FORMAT_DXT1_ONEBITALPHA,
+ IMAGE_FORMAT_BGRA5551,
+ IMAGE_FORMAT_UV88,
+ IMAGE_FORMAT_UVWQ8888,
+ IMAGE_FORMAT_RGBA16161616F,
+ IMAGE_FORMAT_RGBA16161616,
+ IMAGE_FORMAT_UVLX8888,
+ IMAGE_FORMAT_R32F, // Single-channel 32-bit floating point
+ IMAGE_FORMAT_RGB323232F,
+ IMAGE_FORMAT_RGBA32323232F,
+ // vendor crap
+ IMAGE_FORMAT_NV_DST16,
+ IMAGE_FORMAT_NV_DST24,
+ IMAGE_FORMAT_NV_INTZ,
+ IMAGE_FORMAT_NV_RAWZ,
+ IMAGE_FORMAT_ATI_DST16,
+ IMAGE_FORMAT_ATI_DST24,
+ IMAGE_FORMAT_NV_NULL,
+ IMAGE_FORMAT_ATI2N,
+ IMAGE_FORMAT_ATI1N,
+ NUM_IMAGE_FORMATS
};
struct videomode {
struct {
usize _pad[22];
- void (*__thiscall write_movie_frame)(struct videomode *this,
+ void (*VIRTUAL write_movie_frame)(struct videomode *this,
struct movieinfo *info);
+ usize _pad2[4];
+ void (*VIRTUAL read_screen_pixels)(struct videomode *this,
+ int x, int y, int w, int h, void *buf, enum image_format fmt);
} *vt;
};
struct demoplayer {
struct {
- void *_destructor;
- void * (*__thiscall get_demo_file)(struct demoplayer *this);
- int (*__thiscall get_playback_tick)(struct demoplayer *this);
- int (*__thiscall get_total_ticks)(struct demoplayer *this);
- void *_whatisthisihavenoidea; // TODO
- bool (*__thiscall start_playback)(struct demoplayer *this,
+ usize _pad[5];
+ bool (*VIRTUAL start_playback)(struct demoplayer *this,
const char *filename, bool as_time_demo);
- bool (*__thiscall is_playing_back)(struct demoplayer *this);
- bool (*__thiscall is_playback_paused)(struct demoplayer *this);
- bool (*__thiscall is_playing_time_demo)(struct demoplayer *this);
- bool (*__thiscall is_skipping)(struct demoplayer *this);
- bool (*__thiscall can_skip_backwards)(struct demoplayer *this);
- void (*__thiscall set_playback_time_scale)(struct demoplayer *this,
- float timescale);
- float (*__thiscall get_playback_time_scale)(struct demoplayer *this);
- void (*__thiscall pause_playback)(struct demoplayer *this,
- float seconds);
- void (*__thiscall skip_to_tick)(struct demoplayer *this, int tick,
- bool relative, bool pause);
- void (*__thiscall resume_playback)(struct demoplayer *this);
- void (*__thiscall stop_playback)(struct demoplayer *this);
- void (*__thiscall interpolate_viewpoint)(struct demoplayer *this);
+ usize _pad2[11];
+ void (*VIRTUAL stop_playback)(struct demoplayer *this);
+ // TODO: Disable interp when in a portal bubble. This will be very
+ // difficult!
+ void (*VIRTUAL interpolate_viewpoint)(struct demoplayer *this);
} *vt;
};