Added flyff-api (not in use yet)

Added structs exported from Ghidra
Added a lot of interop
This commit is contained in:
Knaapchen 2022-10-04 19:31:04 +02:00
parent e694cf8562
commit 31abe1c85b
25 changed files with 35151 additions and 438 deletions

View File

@ -1,9 +1,6 @@
project (fugg)
cmake_minimum_required(VERSION 3.5.1)
# Flyff is based on c++14
add_definitions(-std=c++14 -Os)
set(CMAKE_C_FLAGS "-Os")
set(CMAKE_CXX_FLAGS "-Os")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")

8
flyff-api/CMakeLists.txt Normal file
View File

@ -0,0 +1,8 @@
add_library (
flyff-api
"src/flyff.cpp"
"include/flyff.h"
)
target_include_directories(flyff-api PUBLIC "include")
target_link_libraries (flyff-api LINK_PUBLIC flyff-client)

View File

0
flyff-api/src/flyff.cpp Normal file
View File

View File

@ -2,7 +2,7 @@ add_subdirectory("wasm-rt")
add_library (
flyff-client
"src/client.cpp"
"src/client.c"
"include/client.h"
)

View File

@ -1,3 +1,404 @@
#pragma once
/* Automatically generated by wasm2c */
#ifndef CLIENT_H_GENERATED_
#define CLIENT_H_GENERATED_
#include "../src/client.h"
#include <stdint.h>
#include "wasm-rt.h"
/* TODO(binji): only use stdint.h types in header */
#ifndef WASM_RT_CORE_TYPES_DEFINED
#define WASM_RT_CORE_TYPES_DEFINED
typedef uint8_t u8;
typedef int8_t s8;
typedef uint16_t u16;
typedef int16_t s16;
typedef uint32_t u32;
typedef int32_t s32;
typedef uint64_t u64;
typedef int64_t s64;
typedef float f32;
typedef double f64;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* import: 'env' '_abort' */
extern void (*Z_envZ__abort)(void);
/* import: 'env' '__emval_decref' */
extern void (*Z_envZ___emval_decref)(u32);
/* import: 'env' '__emval_new_cstring' */
extern u32 (*Z_envZ___emval_new_cstring)(u32);
/* import: 'env' '_glActiveTexture' */
extern void (*Z_envZ__glActiveTexture)(u32);
/* import: 'env' '_glBindTexture' */
extern void (*Z_envZ__glBindTexture)(u32, u32);
/* import: 'env' '_glVertexAttribPointer' */
extern void (*Z_envZ__glVertexAttribPointer)(u32, u32, u32, u32, u32, u32);
/* import: 'env' '_glDisableVertexAttribArray' */
extern void (*Z_envZ__glDisableVertexAttribArray)(u32);
/* import: 'env' '__emval_set_property' */
extern void (*Z_envZ___emval_set_property)(u32, u32, u32);
/* import: 'env' '__emval_get_property' */
extern u32 (*Z_envZ___emval_get_property)(u32, u32);
/* import: 'env' '_glUniformMatrix4fv' */
extern void (*Z_envZ__glUniformMatrix4fv)(u32, u32, u32, u32);
/* import: 'env' '__emval_get_method_caller' */
extern u32 (*Z_envZ___emval_get_method_caller)(u32, u32);
/* import: 'env' '__emval_take_value' */
extern u32 (*Z_envZ___emval_take_value)(u32, u32);
/* import: 'env' '_glDisable' */
extern void (*Z_envZ__glDisable)(u32);
/* import: 'env' '_glBindBuffer' */
extern void (*Z_envZ__glBindBuffer)(u32, u32);
/* import: 'env' '__emval_run_destructors' */
extern void (*Z_envZ___emval_run_destructors)(u32);
/* import: 'env' '__emval_get_global' */
extern u32 (*Z_envZ___emval_get_global)(u32);
/* import: 'env' '_glUniform1f' */
extern void (*Z_envZ__glUniform1f)(u32, f32);
/* import: 'env' '_glEnable' */
extern void (*Z_envZ__glEnable)(u32);
/* import: 'env' '__emval_call_void_method' */
extern void (*Z_envZ___emval_call_void_method)(u32, u32, u32, u32);
/* import: 'env' '_glTexParameteri' */
extern void (*Z_envZ__glTexParameteri)(u32, u32, u32);
/* import: 'env' '_alSourcef' */
extern void (*Z_envZ__alSourcef)(u32, u32, f32);
/* import: 'env' '_glUseProgram' */
extern void (*Z_envZ__glUseProgram)(u32);
/* import: 'env' '_glEnableVertexAttribArray' */
extern void (*Z_envZ__glEnableVertexAttribArray)(u32);
/* import: 'env' '_alSourcei' */
extern void (*Z_envZ__alSourcei)(u32, u32, u32);
/* import: 'env' '__emval_as' */
extern f64 (*Z_envZ___emval_as)(u32, u32, u32);
/* import: 'env' '_glDrawArrays' */
extern void (*Z_envZ__glDrawArrays)(u32, u32, u32);
/* import: 'env' '_glDepthMask' */
extern void (*Z_envZ__glDepthMask)(u32);
/* import: 'env' '_glBlendFunc' */
extern void (*Z_envZ__glBlendFunc)(u32, u32);
/* import: 'env' '_glBindFramebuffer' */
extern void (*Z_envZ__glBindFramebuffer)(u32, u32);
/* import: 'env' '_glDrawElements' */
extern void (*Z_envZ__glDrawElements)(u32, u32, u32, u32);
/* import: 'env' '__emval_incref' */
extern void (*Z_envZ___emval_incref)(u32);
/* import: 'env' '_alSourceStop' */
extern void (*Z_envZ__alSourceStop)(u32);
/* import: 'env' '_glGetUniformLocation' */
extern u32 (*Z_envZ__glGetUniformLocation)(u32, u32);
/* import: 'env' '__emval_call_method' */
extern f64 (*Z_envZ___emval_call_method)(u32, u32, u32, u32, u32);
/* import: 'env' '_glUniform3fv' */
extern void (*Z_envZ__glUniform3fv)(u32, u32, u32);
/* import: 'env' '__embind_register_memory_view' */
extern void (*Z_envZ___embind_register_memory_view)(u32, u32, u32);
/* import: 'env' '_glViewport' */
extern void (*Z_envZ__glViewport)(u32, u32, u32, u32);
/* import: 'env' '_glTexImage2D' */
extern void (*Z_envZ__glTexImage2D)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_glGetError' */
extern u32 (*Z_envZ__glGetError)(void);
/* import: 'env' '_glDeleteFramebuffers' */
extern void (*Z_envZ__glDeleteFramebuffers)(u32, u32);
/* import: 'env' '_alGetSourcei' */
extern void (*Z_envZ__alGetSourcei)(u32, u32, u32);
/* import: 'env' '_glColorMask' */
extern void (*Z_envZ__glColorMask)(u32, u32, u32, u32);
/* import: 'env' '__embind_register_function' */
extern void (*Z_envZ___embind_register_function)(u32, u32, u32, u32, u32, u32);
/* import: 'env' '_alDeleteSources' */
extern void (*Z_envZ__alDeleteSources)(u32, u32);
/* import: 'env' '_glGenTextures' */
extern void (*Z_envZ__glGenTextures)(u32, u32);
/* import: 'env' '_glDeleteBuffers' */
extern void (*Z_envZ__glDeleteBuffers)(u32, u32);
/* import: 'env' '_glBufferData' */
extern void (*Z_envZ__glBufferData)(u32, u32, u32, u32);
/* import: 'env' '_glGenBuffers' */
extern void (*Z_envZ__glGenBuffers)(u32, u32);
/* import: 'env' '_glScissor' */
extern void (*Z_envZ__glScissor)(u32, u32, u32, u32);
/* import: 'env' '_glStencilMask' */
extern void (*Z_envZ__glStencilMask)(u32);
/* import: 'env' '__embind_register_integer' */
extern void (*Z_envZ___embind_register_integer)(u32, u32, u32, u32, u32);
/* import: 'env' '_alSource3f' */
extern void (*Z_envZ__alSource3f)(u32, u32, f32, f32, f32);
/* import: 'env' '__emval_get_module_property' */
extern u32 (*Z_envZ___emval_get_module_property)(u32);
/* import: 'env' '_glFramebufferTexture2D' */
extern void (*Z_envZ__glFramebufferTexture2D)(u32, u32, u32, u32, u32);
/* import: 'env' '__emval_typeof' */
extern u32 (*Z_envZ___emval_typeof)(u32);
/* import: 'env' '_glUniform2f' */
extern void (*Z_envZ__glUniform2f)(u32, f32, f32);
/* import: 'env' '_glUniform2fv' */
extern void (*Z_envZ__glUniform2fv)(u32, u32, u32);
/* import: 'env' '_glFrontFace' */
extern void (*Z_envZ__glFrontFace)(u32);
/* import: 'env' '_glGenFramebuffers' */
extern void (*Z_envZ__glGenFramebuffers)(u32, u32);
/* import: 'env' '_emscripten_vibrate' */
extern u32 (*Z_envZ__emscripten_vibrate)(u32);
/* import: 'env' '_glUniform1i' */
extern void (*Z_envZ__glUniform1i)(u32, u32);
/* import: 'env' '_glGetProgramiv' */
extern void (*Z_envZ__glGetProgramiv)(u32, u32, u32);
/* import: 'env' '_glCheckFramebufferStatus' */
extern u32 (*Z_envZ__glCheckFramebufferStatus)(u32);
/* import: 'env' '_glClear' */
extern void (*Z_envZ__glClear)(u32);
/* import: 'env' '_glStencilFunc' */
extern void (*Z_envZ__glStencilFunc)(u32, u32, u32);
/* import: 'env' '_glGetIntegerv' */
extern void (*Z_envZ__glGetIntegerv)(u32, u32);
/* import: 'env' '_emscripten_exit_fullscreen' */
extern u32 (*Z_envZ__emscripten_exit_fullscreen)(void);
/* import: 'env' '_emscripten_request_fullscreen' */
extern u32 (*Z_envZ__emscripten_request_fullscreen)(u32, u32);
/* import: 'env' '_emscripten_performance_now' */
extern f64 (*Z_envZ__emscripten_performance_now)(void);
/* import: 'env' '_emscripten_cancel_main_loop' */
extern void (*Z_envZ__emscripten_cancel_main_loop)(void);
/* import: 'env' '_emscripten_set_main_loop' */
extern void (*Z_envZ__emscripten_set_main_loop)(u32, u32, u32);
/* import: 'env' '_glDetachShader' */
extern void (*Z_envZ__glDetachShader)(u32, u32);
/* import: 'env' '_emscripten_set_devicemotion_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_devicemotion_callback_on_thread)(u32, u32, u32, u32);
/* import: 'env' '_glDeleteProgram' */
extern void (*Z_envZ__glDeleteProgram)(u32);
/* import: 'env' '__emval_new' */
extern u32 (*Z_envZ___emval_new)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_beforeunload_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_beforeunload_callback_on_thread)(u32, u32, u32);
/* import: 'env' '_glDeleteShader' */
extern void (*Z_envZ__glDeleteShader)(u32);
/* import: 'env' '_glDepthFunc' */
extern void (*Z_envZ__glDepthFunc)(u32);
/* import: 'env' '_emscripten_resize_heap' */
extern u32 (*Z_envZ__emscripten_resize_heap)(u32);
/* import: 'env' '__embind_register_std_wstring' */
extern void (*Z_envZ___embind_register_std_wstring)(u32, u32, u32);
/* import: 'env' '_strftime' */
extern u32 (*Z_envZ__strftime)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_webglcontextrestored_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_webglcontextrestored_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_focusout_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_focusout_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_keyup_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_keyup_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_keydown_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_keydown_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_wheel_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_wheel_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mouseleave_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mouseleave_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mousemove_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mousemove_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mouseup_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mouseup_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mousedown_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mousedown_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchcancel_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchcancel_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchmove_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchmove_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchend_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchend_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchstart_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchstart_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_webgl_destroy_context' */
extern u32 (*Z_envZ__emscripten_webgl_destroy_context)(u32);
/* import: 'env' '_emscripten_set_orientationchange_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_orientationchange_callback_on_thread)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_resize_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_resize_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_visibilitychange_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_visibilitychange_callback_on_thread)(u32, u32, u32, u32);
/* import: 'env' '_glClearColor' */
extern void (*Z_envZ__glClearColor)(f32, f32, f32, f32);
/* import: 'env' '_glGetProgramInfoLog' */
extern void (*Z_envZ__glGetProgramInfoLog)(u32, u32, u32, u32);
/* import: 'env' '_glLinkProgram' */
extern void (*Z_envZ__glLinkProgram)(u32);
/* import: 'env' '_glAttachShader' */
extern void (*Z_envZ__glAttachShader)(u32, u32);
/* import: 'env' '_glGetShaderiv' */
extern void (*Z_envZ__glGetShaderiv)(u32, u32, u32);
/* import: 'env' '_glLineWidth' */
extern void (*Z_envZ__glLineWidth)(f32);
/* import: 'env' '__emscripten_date_now' */
extern f64 (*Z_envZ___emscripten_date_now)(void);
/* import: 'env' '__embind_register_float' */
extern void (*Z_envZ___embind_register_float)(u32, u32, u32);
/* import: 'env' '__embind_register_std_string' */
extern void (*Z_envZ___embind_register_std_string)(u32, u32);
/* import: 'env' '_emscripten_async_wget_data' */
extern void (*Z_envZ__emscripten_async_wget_data)(u32, u32, u32, u32);
/* import: 'env' '_alSourcePlay' */
extern void (*Z_envZ__alSourcePlay)(u32);
/* import: 'env' '_alListenerfv' */
extern void (*Z_envZ__alListenerfv)(u32, u32);
/* import: 'env' '_alListener3f' */
extern void (*Z_envZ__alListener3f)(u32, f32, f32, f32);
/* import: 'env' '_emscripten_set_webglcontextlost_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_webglcontextlost_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_element_css_size' */
extern u32 (*Z_envZ__emscripten_set_element_css_size)(u32, f64, f64);
/* import: 'env' '_emscripten_set_canvas_element_size' */
extern u32 (*Z_envZ__emscripten_set_canvas_element_size)(u32, u32, u32);
/* import: 'env' '_emscripten_webgl_make_context_current' */
extern u32 (*Z_envZ__emscripten_webgl_make_context_current)(u32);
/* import: 'env' '_emscripten_webgl_create_context' */
extern u32 (*Z_envZ__emscripten_webgl_create_context)(u32, u32);
/* import: 'env' '_emscripten_webgl_init_context_attributes' */
extern void (*Z_envZ__emscripten_webgl_init_context_attributes)(u32);
/* import: 'env' '_glUniform4f' */
extern void (*Z_envZ__glUniform4f)(u32, f32, f32, f32, f32);
/* import: 'env' '_glCompressedTexImage2D' */
extern void (*Z_envZ__glCompressedTexImage2D)(u32, u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_glBindAttribLocation' */
extern void (*Z_envZ__glBindAttribLocation)(u32, u32, u32);
/* import: 'env' '_glGetActiveAttrib' */
extern void (*Z_envZ__glGetActiveAttrib)(u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_get_orientation_status' */
extern u32 (*Z_envZ__emscripten_get_orientation_status)(u32);
/* import: 'env' '_glCreateProgram' */
extern u32 (*Z_envZ__glCreateProgram)(void);
/* import: 'env' '_glGetShaderInfoLog' */
extern void (*Z_envZ__glGetShaderInfoLog)(u32, u32, u32, u32);
/* import: 'env' '_glCompileShader' */
extern void (*Z_envZ__glCompileShader)(u32);
/* import: 'env' '_glShaderSource' */
extern void (*Z_envZ__glShaderSource)(u32, u32, u32, u32);
/* import: 'env' '_glCreateShader' */
extern u32 (*Z_envZ__glCreateShader)(u32);
/* import: 'env' '_glCullFace' */
extern void (*Z_envZ__glCullFace)(u32);
/* import: 'env' '_emscripten_webgl_enable_extension' */
extern u32 (*Z_envZ__emscripten_webgl_enable_extension)(u32, u32);
/* import: 'env' '_glGetString' */
extern u32 (*Z_envZ__glGetString)(u32);
/* import: 'env' '_glStencilOp' */
extern void (*Z_envZ__glStencilOp)(u32, u32, u32);
/* import: 'env' '_emscripten_set_fullscreenchange_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_fullscreenchange_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_glDeleteTextures' */
extern void (*Z_envZ__glDeleteTextures)(u32, u32);
/* import: 'env' '_fd_seek' */
extern u32 (*Z_envZ__fd_seek)(u32, u32, u32, u32, u32);
/* import: 'env' '__embind_register_bigint' */
extern void (*Z_envZ___embind_register_bigint)(u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_strftime_l' */
extern u32 (*Z_envZ__strftime_l)(u32, u32, u32, u32, u32);
/* import: 'env' '_environ_get' */
extern u32 (*Z_envZ__environ_get)(u32, u32);
/* import: 'env' '_environ_sizes_get' */
extern u32 (*Z_envZ__environ_sizes_get)(u32, u32);
/* import: 'env' '_fd_close' */
extern u32 (*Z_envZ__fd_close)(u32);
/* import: 'env' '_fd_write' */
extern u32 (*Z_envZ__fd_write)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_memcpy_big' */
extern void (*Z_envZ__emscripten_memcpy_big)(u32, u32, u32);
/* import: 'env' '__emscripten_get_now_is_monotonic' */
extern u32 (*Z_envZ___emscripten_get_now_is_monotonic)(void);
/* import: 'env' '__gmtime_js' */
extern void (*Z_envZ___gmtime_js)(u32, u32);
/* import: 'env' '__localtime_js' */
extern void (*Z_envZ___localtime_js)(u32, u32);
/* import: 'env' '__mktime_js' */
extern u32 (*Z_envZ___mktime_js)(u32);
/* import: 'env' '__tzset_js' */
extern void (*Z_envZ___tzset_js)(u32, u32, u32);
/* import: 'env' '_glCopyTexSubImage2D' */
extern void (*Z_envZ__glCopyTexSubImage2D)(u32, u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '__embind_register_emval' */
extern void (*Z_envZ___embind_register_emval)(u32, u32);
/* import: 'env' '__embind_register_bool' */
extern void (*Z_envZ___embind_register_bool)(u32, u32, u32, u32, u32);
/* import: 'env' '__embind_register_void' */
extern void (*Z_envZ___embind_register_void)(u32, u32);
/* import: 'env' '_emscripten_log' */
extern void (*Z_envZ__emscripten_log)(u32, u32, u32);
/* import: 'env' '_alDeleteBuffers' */
extern void (*Z_envZ__alDeleteBuffers)(u32, u32);
/* import: 'env' '_alBufferData' */
extern void (*Z_envZ__alBufferData)(u32, u32, u32, u32, u32);
/* import: 'env' '_alGenBuffers' */
extern void (*Z_envZ__alGenBuffers)(u32, u32);
/* import: 'env' '_alGetEnumValue' */
extern u32 (*Z_envZ__alGetEnumValue)(u32);
/* import: 'env' '_alcCloseDevice' */
extern u32 (*Z_envZ__alcCloseDevice)(u32);
/* import: 'env' '_alcDestroyContext' */
extern void (*Z_envZ__alcDestroyContext)(u32);
/* import: 'env' '_alGenSources' */
extern void (*Z_envZ__alGenSources)(u32, u32);
/* import: 'env' '_alListenerf' */
extern void (*Z_envZ__alListenerf)(u32, f32);
/* import: 'env' '_alcMakeContextCurrent' */
extern u32 (*Z_envZ__alcMakeContextCurrent)(u32);
/* import: 'env' '_alcCreateContext' */
extern u32 (*Z_envZ__alcCreateContext)(u32, u32);
/* import: 'env' '_alcOpenDevice' */
extern u32 (*Z_envZ__alcOpenDevice)(u32);
/* import: 'env' '_emscripten_get_fullscreen_status' */
extern u32 (*Z_envZ__emscripten_get_fullscreen_status)(u32);
/* import: 'env' '_emscripten_force_exit' */
extern void (*Z_envZ__emscripten_force_exit)(u32);
/* import: 'env' '_glTexSubImage2D' */
extern void (*Z_envZ__glTexSubImage2D)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
void Z_client_init(void);
void Z_client_free(void);
/* export: 'memory' */
extern wasm_rt_memory_t (*Z_clientZ_memory);
/* export: '___wasm_call_ctors' */
extern void (*Z_clientZ____wasm_call_ctors)(void);
/* export: '_malloc' */
extern u32 (*Z_clientZ__malloc)(u32);
/* export: '_free' */
extern void (*Z_clientZ__free)(u32);
/* export: '_main' */
extern u32 (*Z_clientZ__main)(u32, u32);
/* export: '___getTypeName' */
extern u32 (*Z_clientZ____getTypeName)(u32);
/* export: '__embind_initialize_bindings' */
extern void (*Z_clientZ___embind_initialize_bindings)(void);
/* export: 'table' */
extern wasm_rt_table_t (*Z_clientZ_table);
/* export: 'stackSave' */
extern u32 (*Z_clientZ_stackSave)(void);
/* export: 'stackRestore' */
extern void (*Z_clientZ_stackRestore)(u32);
/* export: 'stackAlloc' */
extern u32 (*Z_clientZ_stackAlloc)(u32);
/* export: 'dynCall_vij' */
extern void (*Z_clientZ_dynCall_vij)(u32, u32, u32, u32);
/* export: 'dynCall_ji' */
extern u32 (*Z_clientZ_dynCall_ji)(u32, u32);
/* export: 'dynCall_iiiijiii' */
extern u32 (*Z_clientZ_dynCall_iiiijiii)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_viijii' */
extern void (*Z_clientZ_dynCall_viijii)(u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_iiiiij' */
extern u32 (*Z_clientZ_dynCall_iiiiij)(u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_iiiiijj' */
extern u32 (*Z_clientZ_dynCall_iiiiijj)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_iiiiiijj' */
extern u32 (*Z_clientZ_dynCall_iiiiiijj)(u32, u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_jiji' */
extern u32 (*Z_clientZ_dynCall_jiji)(u32, u32, u32, u32, u32);
#ifdef __cplusplus
}
#endif
#endif /* CLIENT_H_GENERATED_ */

View File

@ -408,7 +408,7 @@ static void init_func_types(void) {
static void w2c__free(u32);
static u32 w2c_f166(u32);
static void w2c_f167(u32, u32);
void w2c_f167(u32, u32);
static u32 w2c_f168(u32, u32, u32);
static u32 w2c_f169(u32, u32, u32);
static void w2c_f170(u32, u32, u32);
@ -449,7 +449,7 @@ static u32 w2c_f204(u32, u32);
static u32 w2c_f205(u32, u32);
static u32 w2c_f206(u32, u32, u32);
static void w2c_f207(u32, u32);
static u32 w2c_f208(u64);
u32 w2c_f208(u64);
static void w2c_f209(u32, u32);
static u32 w2c_f210(u32, u32);
static void w2c_f211(u32, u32);
@ -8517,15 +8517,17 @@ static u32 w2c_f166(u32 w2c_p0) {
return w2c_i0;
}
static void w2c_f167(u32 w2c_p0, u32 w2c_p1) {
void w2c_f167(u32 w2c_p0, u32 w2c_p1) {
u32 w2c_l2 = 0, w2c_l3 = 0, w2c_l4 = 0, w2c_l5 = 0, w2c_l6 = 0, w2c_l7 = 0;
FUNC_PROLOGUE;
u32 w2c_i0, w2c_i1, w2c_i2, w2c_i3;
u64 w2c_j1;
w2c_i0 = w2c_g0;
w2c_i1 = 16u;
w2c_i0 -= w2c_i1;
w2c_l2 = w2c_i0;
w2c_g0 = w2c_i0;
w2c_i0 = w2c_p1;
w2c_i0 = i32_load((&w2c_memory), (u64)(w2c_i0) + 4u);
@ -8590,10 +8592,15 @@ static void w2c_f167(u32 w2c_p0, u32 w2c_p1) {
i64_store((&w2c_memory), (u64)(w2c_i0), w2c_j1);
goto w2c_B2;
}
// uStack16
w2c_i0 = w2c_l2;
// param2->data
w2c_i1 = w2c_l7;
// length_
w2c_i2 = w2c_l4;
// (&uStack16, param2->data, length_)
w2c_f177(w2c_i0, w2c_i1, w2c_i2);
w2c_B2:;
w2c_i0 = w2c_p0;
w2c_i1 = w2c_l3;
@ -19869,7 +19876,7 @@ static void w2c_f207(u32 w2c_p0, u32 w2c_p1) {
FUNC_EPILOGUE;
}
static u32 w2c_f208(u64 w2c_p0) {
u32 w2c_f208(u64 w2c_p0) {
u32 w2c_l1 = 0, w2c_l2 = 0, w2c_l3 = 0, w2c_l4 = 0, w2c_l5 = 0, w2c_l6 = 0;
FUNC_PROLOGUE;
u32 w2c_i0, w2c_i1, w2c_i2, w2c_i3;
@ -116320,6 +116327,9 @@ static void w2c_f424(u32 w2c_p0) {
w2c_i0 -= w2c_i1;
w2c_i1 = 17381u;
w2c_i0 = w2c_f204(w2c_i0, w2c_i1);
printf("This gets printed when you have no target.\n");
w2c_p0 = w2c_i0;
w2c_i0 = w2c_l5;
w2c_j1 = 0ull;
@ -1036655,6 +1036665,16 @@ static u32 w2c_f2295(u32 w2c_p0) {
}
static void w2c_f2296(u32 w2c_p0, u32 w2c_p1) {
const wasm_rt_memory_t* memory = &w2c_memory;
const unsigned char* data = &memory->data[w2c_p0];
const size_t length = w2c_p1;
puts("Sending network packet:");
for(int i = 0; i < length; i++) {
printf("%02X ", data[i]);
}
printf("\n");
u32 w2c_l2 = 0, w2c_l3 = 0;
FUNC_PROLOGUE;
u32 w2c_i0, w2c_i1, w2c_i2, w2c_i3, w2c_i4;

View File

@ -1,405 +0,0 @@
/* Automatically generated by wasm2c */
#ifndef CLIENT_H_GENERATED_
#define CLIENT_H_GENERATED_
#include <stdint.h>
#include "wasm-rt.h"
/* TODO(binji): only use stdint.h types in header */
#ifndef WASM_RT_CORE_TYPES_DEFINED
#define WASM_RT_CORE_TYPES_DEFINED
typedef uint8_t u8;
typedef int8_t s8;
typedef uint16_t u16;
typedef int16_t s16;
typedef uint32_t u32;
typedef int32_t s32;
typedef uint64_t u64;
typedef int64_t s64;
typedef float f32;
typedef double f64;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* import: 'env' '_abort' */
extern void (*Z_envZ__abort)(void);
/* import: 'env' '__emval_decref' */
extern void (*Z_envZ___emval_decref)(u32);
/* import: 'env' '__emval_new_cstring' */
extern u32 (*Z_envZ___emval_new_cstring)(u32);
/* import: 'env' '_glActiveTexture' */
extern void (*Z_envZ__glActiveTexture)(u32);
/* import: 'env' '_glBindTexture' */
extern void (*Z_envZ__glBindTexture)(u32, u32);
/* import: 'env' '_glVertexAttribPointer' */
extern void (*Z_envZ__glVertexAttribPointer)(u32, u32, u32, u32, u32, u32);
/* import: 'env' '_glDisableVertexAttribArray' */
extern void (*Z_envZ__glDisableVertexAttribArray)(u32);
/* import: 'env' '__emval_set_property' */
extern void (*Z_envZ___emval_set_property)(u32, u32, u32);
/* import: 'env' '__emval_get_property' */
extern u32 (*Z_envZ___emval_get_property)(u32, u32);
/* import: 'env' '_glUniformMatrix4fv' */
extern void (*Z_envZ__glUniformMatrix4fv)(u32, u32, u32, u32);
/* import: 'env' '__emval_get_method_caller' */
extern u32 (*Z_envZ___emval_get_method_caller)(u32, u32);
/* import: 'env' '__emval_take_value' */
extern u32 (*Z_envZ___emval_take_value)(u32, u32);
/* import: 'env' '_glDisable' */
extern void (*Z_envZ__glDisable)(u32);
/* import: 'env' '_glBindBuffer' */
extern void (*Z_envZ__glBindBuffer)(u32, u32);
/* import: 'env' '__emval_run_destructors' */
extern void (*Z_envZ___emval_run_destructors)(u32);
/* import: 'env' '__emval_get_global' */
extern u32 (*Z_envZ___emval_get_global)(u32);
/* import: 'env' '_glUniform1f' */
extern void (*Z_envZ__glUniform1f)(u32, f32);
/* import: 'env' '_glEnable' */
extern void (*Z_envZ__glEnable)(u32);
/* import: 'env' '__emval_call_void_method' */
extern void (*Z_envZ___emval_call_void_method)(u32, u32, u32, u32);
/* import: 'env' '_glTexParameteri' */
extern void (*Z_envZ__glTexParameteri)(u32, u32, u32);
/* import: 'env' '_alSourcef' */
extern void (*Z_envZ__alSourcef)(u32, u32, f32);
/* import: 'env' '_glUseProgram' */
extern void (*Z_envZ__glUseProgram)(u32);
/* import: 'env' '_glEnableVertexAttribArray' */
extern void (*Z_envZ__glEnableVertexAttribArray)(u32);
/* import: 'env' '_alSourcei' */
extern void (*Z_envZ__alSourcei)(u32, u32, u32);
/* import: 'env' '__emval_as' */
extern f64 (*Z_envZ___emval_as)(u32, u32, u32);
/* import: 'env' '_glDrawArrays' */
extern void (*Z_envZ__glDrawArrays)(u32, u32, u32);
/* import: 'env' '_glDepthMask' */
extern void (*Z_envZ__glDepthMask)(u32);
/* import: 'env' '_glBlendFunc' */
extern void (*Z_envZ__glBlendFunc)(u32, u32);
/* import: 'env' '_glBindFramebuffer' */
extern void (*Z_envZ__glBindFramebuffer)(u32, u32);
/* import: 'env' '_glDrawElements' */
extern void (*Z_envZ__glDrawElements)(u32, u32, u32, u32);
/* import: 'env' '__emval_incref' */
extern void (*Z_envZ___emval_incref)(u32);
/* import: 'env' '_alSourceStop' */
extern void (*Z_envZ__alSourceStop)(u32);
/* import: 'env' '_glGetUniformLocation' */
extern u32 (*Z_envZ__glGetUniformLocation)(u32, u32);
/* import: 'env' '__emval_call_method' */
extern f64 (*Z_envZ___emval_call_method)(u32, u32, u32, u32, u32);
/* import: 'env' '_glUniform3fv' */
extern void (*Z_envZ__glUniform3fv)(u32, u32, u32);
/* import: 'env' '__embind_register_memory_view' */
extern void (*Z_envZ___embind_register_memory_view)(u32, u32, u32);
/* import: 'env' '_glViewport' */
extern void (*Z_envZ__glViewport)(u32, u32, u32, u32);
/* import: 'env' '_glTexImage2D' */
extern void (*Z_envZ__glTexImage2D)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_glGetError' */
extern u32 (*Z_envZ__glGetError)(void);
/* import: 'env' '_glDeleteFramebuffers' */
extern void (*Z_envZ__glDeleteFramebuffers)(u32, u32);
/* import: 'env' '_alGetSourcei' */
extern void (*Z_envZ__alGetSourcei)(u32, u32, u32);
/* import: 'env' '_glColorMask' */
extern void (*Z_envZ__glColorMask)(u32, u32, u32, u32);
/* import: 'env' '__embind_register_function' */
extern void (*Z_envZ___embind_register_function)(u32, u32, u32, u32, u32, u32);
/* import: 'env' '_alDeleteSources' */
extern void (*Z_envZ__alDeleteSources)(u32, u32);
/* import: 'env' '_glGenTextures' */
extern void (*Z_envZ__glGenTextures)(u32, u32);
/* import: 'env' '_glDeleteBuffers' */
extern void (*Z_envZ__glDeleteBuffers)(u32, u32);
/* import: 'env' '_glBufferData' */
extern void (*Z_envZ__glBufferData)(u32, u32, u32, u32);
/* import: 'env' '_glGenBuffers' */
extern void (*Z_envZ__glGenBuffers)(u32, u32);
/* import: 'env' '_glScissor' */
extern void (*Z_envZ__glScissor)(u32, u32, u32, u32);
/* import: 'env' '_glStencilMask' */
extern void (*Z_envZ__glStencilMask)(u32);
/* import: 'env' '__embind_register_integer' */
extern void (*Z_envZ___embind_register_integer)(u32, u32, u32, u32, u32);
/* import: 'env' '_alSource3f' */
extern void (*Z_envZ__alSource3f)(u32, u32, f32, f32, f32);
/* import: 'env' '__emval_get_module_property' */
extern u32 (*Z_envZ___emval_get_module_property)(u32);
/* import: 'env' '_glFramebufferTexture2D' */
extern void (*Z_envZ__glFramebufferTexture2D)(u32, u32, u32, u32, u32);
/* import: 'env' '__emval_typeof' */
extern u32 (*Z_envZ___emval_typeof)(u32);
/* import: 'env' '_glUniform2f' */
extern void (*Z_envZ__glUniform2f)(u32, f32, f32);
/* import: 'env' '_glUniform2fv' */
extern void (*Z_envZ__glUniform2fv)(u32, u32, u32);
/* import: 'env' '_glFrontFace' */
extern void (*Z_envZ__glFrontFace)(u32);
/* import: 'env' '_glGenFramebuffers' */
extern void (*Z_envZ__glGenFramebuffers)(u32, u32);
/* import: 'env' '_emscripten_vibrate' */
extern u32 (*Z_envZ__emscripten_vibrate)(u32);
/* import: 'env' '_glUniform1i' */
extern void (*Z_envZ__glUniform1i)(u32, u32);
/* import: 'env' '_glGetProgramiv' */
extern void (*Z_envZ__glGetProgramiv)(u32, u32, u32);
/* import: 'env' '_glCheckFramebufferStatus' */
extern u32 (*Z_envZ__glCheckFramebufferStatus)(u32);
/* import: 'env' '_glClear' */
extern void (*Z_envZ__glClear)(u32);
/* import: 'env' '_glStencilFunc' */
extern void (*Z_envZ__glStencilFunc)(u32, u32, u32);
/* import: 'env' '_glGetIntegerv' */
extern void (*Z_envZ__glGetIntegerv)(u32, u32);
/* import: 'env' '_emscripten_exit_fullscreen' */
extern u32 (*Z_envZ__emscripten_exit_fullscreen)(void);
/* import: 'env' '_emscripten_request_fullscreen' */
extern u32 (*Z_envZ__emscripten_request_fullscreen)(u32, u32);
/* import: 'env' '_emscripten_performance_now' */
extern f64 (*Z_envZ__emscripten_performance_now)(void);
/* import: 'env' '_emscripten_cancel_main_loop' */
extern void (*Z_envZ__emscripten_cancel_main_loop)(void);
/* import: 'env' '_emscripten_set_main_loop' */
extern void (*Z_envZ__emscripten_set_main_loop)(u32, u32, u32);
/* import: 'env' '_glDetachShader' */
extern void (*Z_envZ__glDetachShader)(u32, u32);
/* import: 'env' '_emscripten_set_devicemotion_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_devicemotion_callback_on_thread)(u32, u32, u32, u32);
/* import: 'env' '_glDeleteProgram' */
extern void (*Z_envZ__glDeleteProgram)(u32);
/* import: 'env' '__emval_new' */
extern u32 (*Z_envZ___emval_new)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_beforeunload_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_beforeunload_callback_on_thread)(u32, u32, u32);
/* import: 'env' '_glDeleteShader' */
extern void (*Z_envZ__glDeleteShader)(u32);
/* import: 'env' '_glDepthFunc' */
extern void (*Z_envZ__glDepthFunc)(u32);
/* import: 'env' '_emscripten_resize_heap' */
extern u32 (*Z_envZ__emscripten_resize_heap)(u32);
/* import: 'env' '__embind_register_std_wstring' */
extern void (*Z_envZ___embind_register_std_wstring)(u32, u32, u32);
/* import: 'env' '_strftime' */
extern u32 (*Z_envZ__strftime)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_webglcontextrestored_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_webglcontextrestored_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_focusout_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_focusout_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_keyup_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_keyup_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_keydown_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_keydown_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_wheel_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_wheel_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mouseleave_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mouseleave_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mousemove_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mousemove_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mouseup_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mouseup_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_mousedown_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_mousedown_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchcancel_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchcancel_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchmove_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchmove_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchend_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchend_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_touchstart_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_touchstart_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_webgl_destroy_context' */
extern u32 (*Z_envZ__emscripten_webgl_destroy_context)(u32);
/* import: 'env' '_emscripten_set_orientationchange_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_orientationchange_callback_on_thread)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_resize_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_resize_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_visibilitychange_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_visibilitychange_callback_on_thread)(u32, u32, u32, u32);
/* import: 'env' '_glClearColor' */
extern void (*Z_envZ__glClearColor)(f32, f32, f32, f32);
/* import: 'env' '_glGetProgramInfoLog' */
extern void (*Z_envZ__glGetProgramInfoLog)(u32, u32, u32, u32);
/* import: 'env' '_glLinkProgram' */
extern void (*Z_envZ__glLinkProgram)(u32);
/* import: 'env' '_glAttachShader' */
extern void (*Z_envZ__glAttachShader)(u32, u32);
/* import: 'env' '_glGetShaderiv' */
extern void (*Z_envZ__glGetShaderiv)(u32, u32, u32);
/* import: 'env' '_glLineWidth' */
extern void (*Z_envZ__glLineWidth)(f32);
/* import: 'env' '__emscripten_date_now' */
extern f64 (*Z_envZ___emscripten_date_now)(void);
/* import: 'env' '__embind_register_float' */
extern void (*Z_envZ___embind_register_float)(u32, u32, u32);
/* import: 'env' '__embind_register_std_string' */
extern void (*Z_envZ___embind_register_std_string)(u32, u32);
/* import: 'env' '_emscripten_async_wget_data' */
extern void (*Z_envZ__emscripten_async_wget_data)(u32, u32, u32, u32);
/* import: 'env' '_alSourcePlay' */
extern void (*Z_envZ__alSourcePlay)(u32);
/* import: 'env' '_alListenerfv' */
extern void (*Z_envZ__alListenerfv)(u32, u32);
/* import: 'env' '_alListener3f' */
extern void (*Z_envZ__alListener3f)(u32, f32, f32, f32);
/* import: 'env' '_emscripten_set_webglcontextlost_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_webglcontextlost_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_set_element_css_size' */
extern u32 (*Z_envZ__emscripten_set_element_css_size)(u32, f64, f64);
/* import: 'env' '_emscripten_set_canvas_element_size' */
extern u32 (*Z_envZ__emscripten_set_canvas_element_size)(u32, u32, u32);
/* import: 'env' '_emscripten_webgl_make_context_current' */
extern u32 (*Z_envZ__emscripten_webgl_make_context_current)(u32);
/* import: 'env' '_emscripten_webgl_create_context' */
extern u32 (*Z_envZ__emscripten_webgl_create_context)(u32, u32);
/* import: 'env' '_emscripten_webgl_init_context_attributes' */
extern void (*Z_envZ__emscripten_webgl_init_context_attributes)(u32);
/* import: 'env' '_glUniform4f' */
extern void (*Z_envZ__glUniform4f)(u32, f32, f32, f32, f32);
/* import: 'env' '_glCompressedTexImage2D' */
extern void (*Z_envZ__glCompressedTexImage2D)(u32, u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_glBindAttribLocation' */
extern void (*Z_envZ__glBindAttribLocation)(u32, u32, u32);
/* import: 'env' '_glGetActiveAttrib' */
extern void (*Z_envZ__glGetActiveAttrib)(u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_emscripten_get_orientation_status' */
extern u32 (*Z_envZ__emscripten_get_orientation_status)(u32);
/* import: 'env' '_glCreateProgram' */
extern u32 (*Z_envZ__glCreateProgram)(void);
/* import: 'env' '_glGetShaderInfoLog' */
extern void (*Z_envZ__glGetShaderInfoLog)(u32, u32, u32, u32);
/* import: 'env' '_glCompileShader' */
extern void (*Z_envZ__glCompileShader)(u32);
/* import: 'env' '_glShaderSource' */
extern void (*Z_envZ__glShaderSource)(u32, u32, u32, u32);
/* import: 'env' '_glCreateShader' */
extern u32 (*Z_envZ__glCreateShader)(u32);
/* import: 'env' '_glCullFace' */
extern void (*Z_envZ__glCullFace)(u32);
/* import: 'env' '_emscripten_webgl_enable_extension' */
extern u32 (*Z_envZ__emscripten_webgl_enable_extension)(u32, u32);
/* import: 'env' '_glGetString' */
extern u32 (*Z_envZ__glGetString)(u32);
/* import: 'env' '_glStencilOp' */
extern void (*Z_envZ__glStencilOp)(u32, u32, u32);
/* import: 'env' '_emscripten_set_fullscreenchange_callback_on_thread' */
extern u32 (*Z_envZ__emscripten_set_fullscreenchange_callback_on_thread)(u32, u32, u32, u32, u32);
/* import: 'env' '_glDeleteTextures' */
extern void (*Z_envZ__glDeleteTextures)(u32, u32);
/* import: 'env' '_fd_seek' */
extern u32 (*Z_envZ__fd_seek)(u32, u32, u32, u32, u32);
/* import: 'env' '__embind_register_bigint' */
extern void (*Z_envZ___embind_register_bigint)(u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '_strftime_l' */
extern u32 (*Z_envZ__strftime_l)(u32, u32, u32, u32, u32);
/* import: 'env' '_environ_get' */
extern u32 (*Z_envZ__environ_get)(u32, u32);
/* import: 'env' '_environ_sizes_get' */
extern u32 (*Z_envZ__environ_sizes_get)(u32, u32);
/* import: 'env' '_fd_close' */
extern u32 (*Z_envZ__fd_close)(u32);
/* import: 'env' '_fd_write' */
extern u32 (*Z_envZ__fd_write)(u32, u32, u32, u32);
/* import: 'env' '_emscripten_memcpy_big' */
extern void (*Z_envZ__emscripten_memcpy_big)(u32, u32, u32);
/* import: 'env' '__emscripten_get_now_is_monotonic' */
extern u32 (*Z_envZ___emscripten_get_now_is_monotonic)(void);
/* import: 'env' '__gmtime_js' */
extern void (*Z_envZ___gmtime_js)(u32, u32);
/* import: 'env' '__localtime_js' */
extern void (*Z_envZ___localtime_js)(u32, u32);
/* import: 'env' '__mktime_js' */
extern u32 (*Z_envZ___mktime_js)(u32);
/* import: 'env' '__tzset_js' */
extern void (*Z_envZ___tzset_js)(u32, u32, u32);
/* import: 'env' '_glCopyTexSubImage2D' */
extern void (*Z_envZ__glCopyTexSubImage2D)(u32, u32, u32, u32, u32, u32, u32, u32);
/* import: 'env' '__embind_register_emval' */
extern void (*Z_envZ___embind_register_emval)(u32, u32);
/* import: 'env' '__embind_register_bool' */
extern void (*Z_envZ___embind_register_bool)(u32, u32, u32, u32, u32);
/* import: 'env' '__embind_register_void' */
extern void (*Z_envZ___embind_register_void)(u32, u32);
/* import: 'env' '_emscripten_log' */
extern void (*Z_envZ__emscripten_log)(u32, u32, u32);
/* import: 'env' '_alDeleteBuffers' */
extern void (*Z_envZ__alDeleteBuffers)(u32, u32);
/* import: 'env' '_alBufferData' */
extern void (*Z_envZ__alBufferData)(u32, u32, u32, u32, u32);
/* import: 'env' '_alGenBuffers' */
extern void (*Z_envZ__alGenBuffers)(u32, u32);
/* import: 'env' '_alGetEnumValue' */
extern u32 (*Z_envZ__alGetEnumValue)(u32);
/* import: 'env' '_alcCloseDevice' */
extern u32 (*Z_envZ__alcCloseDevice)(u32);
/* import: 'env' '_alcDestroyContext' */
extern void (*Z_envZ__alcDestroyContext)(u32);
/* import: 'env' '_alGenSources' */
extern void (*Z_envZ__alGenSources)(u32, u32);
/* import: 'env' '_alListenerf' */
extern void (*Z_envZ__alListenerf)(u32, f32);
/* import: 'env' '_alcMakeContextCurrent' */
extern u32 (*Z_envZ__alcMakeContextCurrent)(u32);
/* import: 'env' '_alcCreateContext' */
extern u32 (*Z_envZ__alcCreateContext)(u32, u32);
/* import: 'env' '_alcOpenDevice' */
extern u32 (*Z_envZ__alcOpenDevice)(u32);
/* import: 'env' '_emscripten_get_fullscreen_status' */
extern u32 (*Z_envZ__emscripten_get_fullscreen_status)(u32);
/* import: 'env' '_emscripten_force_exit' */
extern void (*Z_envZ__emscripten_force_exit)(u32);
/* import: 'env' '_glTexSubImage2D' */
extern void (*Z_envZ__glTexSubImage2D)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
void Z_client_init(void);
void Z_client_free(void);
/* export: 'memory' */
extern wasm_rt_memory_t (*Z_clientZ_memory);
/* export: '___wasm_call_ctors' */
extern void (*Z_clientZ____wasm_call_ctors)(void);
/* export: '_malloc' */
extern u32 (*Z_clientZ__malloc)(u32);
/* export: '_free' */
extern void (*Z_clientZ__free)(u32);
/* export: '_main' */
extern u32 (*Z_clientZ__main)(u32, u32);
/* export: '___getTypeName' */
extern u32 (*Z_clientZ____getTypeName)(u32);
/* export: '__embind_initialize_bindings' */
extern void (*Z_clientZ___embind_initialize_bindings)(void);
/* export: 'table' */
extern wasm_rt_table_t (*Z_clientZ_table);
/* export: 'stackSave' */
extern u32 (*Z_clientZ_stackSave)(void);
/* export: 'stackRestore' */
extern void (*Z_clientZ_stackRestore)(u32);
/* export: 'stackAlloc' */
extern u32 (*Z_clientZ_stackAlloc)(u32);
/* export: 'dynCall_vij' */
extern void (*Z_clientZ_dynCall_vij)(u32, u32, u32, u32);
/* export: 'dynCall_ji' */
extern u32 (*Z_clientZ_dynCall_ji)(u32, u32);
/* export: 'dynCall_iiiijiii' */
extern u32 (*Z_clientZ_dynCall_iiiijiii)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_viijii' */
extern void (*Z_clientZ_dynCall_viijii)(u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_iiiiij' */
extern u32 (*Z_clientZ_dynCall_iiiiij)(u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_iiiiijj' */
extern u32 (*Z_clientZ_dynCall_iiiiijj)(u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_iiiiiijj' */
extern u32 (*Z_clientZ_dynCall_iiiiiijj)(u32, u32, u32, u32, u32, u32, u32, u32, u32, u32);
/* export: 'dynCall_jiji' */
extern u32 (*Z_clientZ_dynCall_jiji)(u32, u32, u32, u32, u32);
#ifdef __cplusplus
}
#endif
#endif /* CLIENT_H_GENERATED_ */

View File

@ -1,6 +1,6 @@
add_library (
wasm-rt
"src/wasm-rt-impl.cpp"
"src/wasm-rt-impl.c"
"src/wasm-rt-impl.h"
"include/wasm-rt.h"
)

View File

@ -17,6 +17,9 @@
#ifndef WASM_RT_H_
#define WASM_RT_H_
// Added to have printing capabilities in `flyff-client`.
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
@ -157,8 +160,7 @@ typedef struct {
} wasm_rt_elem_t;
/** A Memory object. */
class wasm_rt_memory_t {
public:
typedef struct {
/** The linear memory data, with a byte length of `size`. */
uint8_t* data;
/** The current and maximum page count for this Memory object. If there is no
@ -166,7 +168,7 @@ public:
uint32_t pages, max_pages;
/** The current size of the linear memory, in bytes. */
uint32_t size;
};
} wasm_rt_memory_t;
/** A Table object. */
typedef struct {

View File

@ -11,6 +11,9 @@ add_executable(
"src/interop/export/platform.cpp"
)
# Flyff is based on c++14
add_definitions(-std=c++14 -Os)
target_include_directories(fugg-client PUBLIC "include")
target_link_libraries (fugg-client LINK_PUBLIC fugg-core flyff-client)

View File

@ -52,6 +52,27 @@ namespace fugg
}
}
#include "interop/flyff.h"
void translate(const std::string& id) {
auto result = std::make_unique<fugg::detail::RawBasicString>();
auto id_ = std::make_unique<fugg::String>(id);
std::cout << "Result before: " << result->data << ", " << result->size << ", " << result->cap << std::endl;
flyff::api::w2c_f167(
fugg::RuntimePointer<fugg::detail::RawBasicString>(result.get()).as_raw(),
fugg::RuntimePointer<fugg::String>(id_.get()).as_raw()
);
std::cout << "Result after: " << reinterpret_cast<void*>(result->data) << ", "
<< result->size << ", "
<< reinterpret_cast<void*>(result->cap) << std::endl;
auto showable = *reinterpret_cast<fugg::String*>(result.get());
std::cout << "Result = " << showable->c_str() << std::endl;
}
#include <unordered_set>
#include <unordered_map>
#include <vector>
@ -61,6 +82,8 @@ namespace fugg
void before_main_loop() {
auto& client = fugg::Client::instance();
translate("ids_textclient_cannot_dropmoney");
}
#include "interop/flyff.h"
@ -75,6 +98,47 @@ void after_main_loop() {
// std::cout << item.some_string->c_str() << std::endl;
// }
// auto& player_pointer = fugg::module_ref<uintptr_t>(0x0003546c);
// if(player_pointer != 0) {
// auto& player = fugg::module_ref<flyff::Mover>(player_pointer);
// std::cout << "Player pos: "
// << player.world_position.x << ", "
// << player.world_position.y << ", "
// << player.world_position.z << std::endl;
// std::cout << "Current target: " << player.selected_target_id << std::endl;
// std::cout << "Current animation: " << player.current_animation << std::endl;
// std::cout << "Name: " << player.name->c_str() << std::endl;
// if(player.selected_target_id != 0) {
// struct ObjectHolder {
// uintptr_t next;
// unsigned int list_index;
// unsigned long long hash;
// uintptr_t mover;
// };
// auto& selected_target_holder = fugg::module_ref<ObjectHolder>(
// w2c_f208(player.selected_target_id)
// );
// auto& selected_target = fugg::module_ref<flyff::Mover>(
// selected_target_holder.mover
// );
// std::cout << "(" << reinterpret_cast<void*>(selected_target_holder.mover) << ") Target: "
// << selected_target.name->c_str() << " at "
// << selected_target.world_position.x << ", "
// << selected_target.world_position.y << ", "
// << selected_target.world_position.z << std::endl;
// } else {
// std::cout << "Got no target." << std::endl;
// }
// }
// auto& item_properties = fugg::module_ref<fugg::Vector<flyff::ItemProperty>>(0x00035194);
// std::cout << "Expecting " << reinterpret_cast<void*>(fugg::wasm::kMemory.address_of(0x00035194)) << std::endl;

View File

@ -13,5 +13,11 @@ namespace fugg {
void initialise();
// Execute the `main` function of the flyff-client.
int main() const;
template<typename T>
T* allocate(size_t size);
template<typename T>
void deallocate(T* ptr);
};
}

View File

@ -265,7 +265,6 @@ WASM_IMPORT_IMPL(env, _fd_write) = [](u32 a, u32 b, u32 c, u32 d) {
// "Hb": "_emscripten_memcpy_big",
WASM_IMPORT_IMPL(env, _emscripten_memcpy_big) = [](u32 dest_, u32 src_, u32 length) {
// WASM runtime calls this, so no need to change the pointers since it's "internal".
// Right?
const auto& dest = fugg::ModulePointer<void>(dest_);
const auto& src = fugg::ModulePointer<void>(src_);

View File

@ -2,8 +2,24 @@
#include "fugg.h"
#include <string>
namespace flyff {
#include "structs/ItemProperty.h"
#include "structs/MusicProperty.h"
#include "structs/Mover.h"
namespace api {
static_assert(sizeof(fugg::ModulePointer<void>) == sizeof(u32), "ModulePointer needs the same size as u32");
extern "C" {
// Translate
// extern void translate(u32, u32);
// extern void w2c_f167(fugg::String*, std::string*);
extern void w2c_f167(u32, u32);
extern u32 w2c_f208(u64);
};
}
}

View File

@ -1,3 +1,5 @@
#pragma once
#include <wasm-rt.h>
#include <client.h>

View File

@ -0,0 +1,18 @@
#pragma once
enum class Job : int {
Vagrant = 0,
Mercenary = 1,
Acrobat = 2,
Assist = 3,
Magician = 4,
Puppeteer = 5,
Knight = 6,
Blade = 7,
Jester = 8,
Ranger = 9,
Ringmaster = 10,
Billposter = 11,
Psychikeeper = 12,
Elementor = 13
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
#pragma once
enum class ObjectType : int {
Object = 0 /* Background object */,
Animation = 1 /* Animation object */,
Ctrl = 2 /* Special background object */,
Sfx = 3 /* Special effect object */,
Item = 4 /* Item */,
Mover = 5 /* Moving object */,
Region = 6 /* Region (event, attribute) */,
Ship = 7,
Path = 8
};

View File

@ -7,6 +7,7 @@
#include "interop/imports.h"
void *malloc (size_t __size) {
// void * operator new(std::size_t __size) {
using namespace fugg::interop;
// This malloc is always called from the runtime.
@ -19,23 +20,23 @@ void *malloc (size_t __size) {
(*import::_malloc)(__size)
};
#if TRACE_ALLOC
std::cout << "FLYFF: Allocated " << __size << " bytes at " << ptr << std::endl;
#endif
// #if TRACE_ALLOC
std::cout << "FLYFF: Allocated INSIDE " << __size << " bytes at " << reinterpret_cast<void*>(ptr.as_raw()) << std::endl;
// #endif
return ptr;
} else {
auto ptr = emscripten_builtin_malloc(__size);
#if TRACE_ALLOC
std::cout << "FUGG: Allocated " << __size << " bytes at " << ptr << std::endl;
#endif
// #if TRACE_ALLOC
std::cout << "FUGG: Allocated OUTSIDE " << __size << " bytes at " << reinterpret_cast<void*>(ptr) << std::endl;
// #endif
return ptr;
}
}
void free (void *__ptr) {
// void operator delete(void * __ptr) {
using namespace fugg::interop;
// printf("Trying to free ptr %p\n", __ptr);
@ -44,15 +45,15 @@ void free (void *__ptr) {
(*import::_free)(ptr.as_raw());
#if TRACE_ALLOC
std::cout << "FLYFF: Free'd pointer at " << ptr << std::endl;
#endif
// #if TRACE_ALLOC
std::cout << "FLYFF: Free'd INSIDE pointer at " << reinterpret_cast<void*>(ptr.as_raw()) << std::endl;
// #endif
} else {
emscripten_builtin_free(__ptr);
#if TRACE_ALLOC
printf("FUGG: Free'd pointer at %p\n", __ptr);
#endif
// #if TRACE_ALLOC
std::cout << "FUGG: Free'd OUTSIDE pointer at " << reinterpret_cast<void*>(__ptr) << std::endl;
// #endif
}
}

View File

@ -4,5 +4,7 @@ add_library (
"include/fugg.h"
)
set_target_properties(fugg-core PROPERTIES LINKER_LANGUAGE CXX)
target_include_directories(fugg-core PUBLIC "include")
target_link_libraries (fugg-core LINK_PUBLIC flyff-client)

View File

@ -27,6 +27,9 @@ namespace fugg {
// Type &operator*() const {
// return *this->get();
// }
operator bool() {
return this->get() != nullptr;
}
operator Type*() const {
return this->get();
@ -61,9 +64,9 @@ namespace fugg {
return reinterpret_cast<ModulePointerType>(this->get());
}
Type *operator->() {
return this->get();
}
// Type *operator->() {
// return this->get();
// }
// Type &operator*() const {
// return *this->get();
@ -92,7 +95,6 @@ namespace fugg {
explicit RelativePointer(const ModulePointerType& offset) : offset_(offset) { }
explicit RelativePointer(Type *const &offset) : offset_(reinterpret_cast<ModulePointerType>(offset)) { }
// Implicit conversion to PointerType to ease passing pointers to a module.
// FIXME: This is specificly for sending pointers to the module.
ModulePointerType as_raw() const {
const auto start = reinterpret_cast<ModulePointerType>((*memory)->data);
@ -100,6 +102,7 @@ namespace fugg {
return this->offset_ - start;
}
Type *operator->() {
return this->get();
}

View File

@ -135,6 +135,24 @@ namespace fugg {
};
public:
explicit BasicString() {
memset(&__l, 0, sizeof(__long));
}
explicit BasicString(const std::basic_string<T>& existing) {
// Copy the data to the stack.
auto temp = *reinterpret_cast<const RawBasicString*>(&existing);
// If the string is using the __long representation, we need to
// change the pointer to pointer into the module memory.
auto is_small = -1 < (char)reinterpret_cast<__short*>(&temp)->size;
if(!is_small) {
temp.data = RuntimePointer<const char>(existing.c_str()).as_raw();
}
memcpy(&__l, &temp, sizeof(RawBasicString));
}
detail::ArrowProxy<RawBasicString, std::basic_string<T>> operator->() {
// Copy the data to the stack.
auto temp = *reinterpret_cast<RawBasicString*>(&__l);
@ -157,6 +175,7 @@ namespace fugg {
};
using String = BasicString<char>;
static_assert(sizeof(String) == sizeof(std::string), "String needs to be the same size as std::string.");
template<typename T>
class HashTable {

12
run.sh Executable file
View File

@ -0,0 +1,12 @@
source ./vendor/emsdk/emsdk_env.sh
cd build
emcmake cmake ..
make
cd ..
cd ..
cd fugg-launcher
npm run start
cd ..