This should probably fix multiplayer desync, but is the result of fiddling while pretty sick/feverish so, needs testing, and the water/scaling stuff is disabled.
+ − #ifndef _FPCRTL_H_
+ − #define _FPCRTL_H_
+ −
+ − #include <stdio.h>
+ − #include <stdlib.h>
+ − #include <string.h>
+ − #include <unistd.h>
+ − #include <math.h>
+ −
+ − #include "SysUtils.h"
+ − #include "system.h"
+ − #include "misc.h"
+ − #include "fileio.h"
+ − #include "pmath.h"
+ −
+ − #ifndef EMSCRIPTEN
+ − #if __APPLE__
+ − #define main SDL_main
+ − #endif
+ − #include "GL/glew.h"
+ − #endif
+ −
+ − #define fpcrtl_memcpy memcpy
+ −
+ − #define luapas_lua_gettop lua_gettop
+ − #define luapas_lua_close lua_close
+ − #define luapas_lua_createtable lua_createtable
+ − #define luapas_lua_error lua_error
+ − #define luapas_lua_gc lua_gc
+ − #define luapas_lua_getfield lua_getfield
+ − #define luapas_lua_objlen lua_objlen
+ − #define luapas_lua_call lua_call
+ − #define luapas_lua_pcall lua_pcall
+ − #define luapas_lua_pushboolean lua_pushboolean
+ − #define luapas_lua_pushcclosure lua_pushcclosure
+ − #define luapas_lua_pushinteger lua_pushinteger
+ − #define luapas_lua_pushnil lua_pushnil
+ − #define luapas_lua_pushnumber lua_pushnumber
+ − #define luapas_lua_pushlstring lua_pushlstring
+ − #define luapas_lua_pushstring lua_pushstring
+ − #define luapas_lua_pushvalue lua_pushvalue
+ − #define luapas_lua_rawgeti lua_rawgeti
+ − #define luapas_lua_setfield lua_setfield
+ − #define luapas_lua_settop lua_settop
+ − #define luapas_lua_toboolean lua_toboolean
+ − #define luapas_lua_tointeger lua_tointeger
+ − #define luapas_lua_tolstring lua_tolstring
+ − #define luapas_lua_tonumber lua_tonumber
+ − #define luapas_lua_type lua_type
+ − #define luapas_lua_typename lua_typename
+ − #define luapas_luaL_argerror luaL_argerror
+ − #define luapas_luaL_checkinteger luaL_checkinteger
+ − #define luapas_luaL_checklstring luaL_checklstring
+ − #define luapas_luaL_loadfile luaL_loadfile
+ − #define luapas_luaL_loadstring luaL_loadstring
+ − #define luapas_luaL_newstate luaL_newstate
+ − #define luapas_luaL_optinteger luaL_optinteger
+ − #define luapas_luaL_optlstring luaL_optlstring
+ − #define luapas_luaL_prepbuffer luaL_prepbuffer
+ − #define luapas_luaL_ref luaL_ref
+ − #define luapas_luaL_unref luaL_unref
+ − #define luapas_luaopen_base luaopen_base
+ − #define luapas_luaopen_math luaopen_math
+ − #define luapas_luaopen_string luaopen_string
+ − #define luapas_luaopen_table luaopen_table
+ − #define luapas_lua_load lua_load
+ −
+ − #define sdlh_IMG_Load IMG_Load
+ − #define sdlh_IMG_Load_RW IMG_Load_RW
+ −
+ − #ifndef EMSCRIPTEN
+ − #define sdlh_Mix_AllocateChannels Mix_AllocateChannels
+ − #define sdlh_Mix_CloseAudio Mix_CloseAudio
+ − #define sdlh_Mix_FadeInChannelTimed Mix_FadeInChannelTimed
+ − #define sdlh_Mix_FadeInMusic Mix_FadeInMusic
+ − #define sdlh_Mix_FadeOutChannel Mix_FadeOutChannel
+ − #define sdlh_Mix_FreeChunk Mix_FreeChunk
+ − #define sdlh_Mix_FreeMusic Mix_FreeMusic
+ − #define sdlh_Mix_HaltChannel Mix_HaltChannel
+ − #define sdlh_Mix_HaltMusic Mix_HaltMusic
+ − #define sdlh_Mix_LoadMUS Mix_LoadMUS
+ − #define sdlh_Mix_LoadMUS_RW Mix_LoadMUS_RW
+ − #define sdlh_Mix_LoadWAV_RW Mix_LoadWAV_RW
+ − #define sdlh_Mix_OpenAudio Mix_OpenAudio
+ − #define sdlh_Mix_PauseMusic Mix_PauseMusic
+ − #define sdlh_Mix_PlayChannelTimed Mix_PlayChannelTimed
+ − #define sdlh_Mix_Playing Mix_Playing
+ − #define sdlh_Mix_ResumeMusic Mix_ResumeMusic
+ − #define sdlh_Mix_Volume Mix_Volume
+ − #define sdlh_Mix_VolumeMusic Mix_VolumeMusic
+ − #else
+ − #define sdlh_Mix_AllocateChannels stub_Mix_AllocateChannels
+ − #define sdlh_Mix_CloseAudio stub_Mix_CloseAudio
+ − #define sdlh_Mix_FadeInChannelTimed stub_Mix_FadeInChannelTimed
+ − #define sdlh_Mix_FadeInMusic stub_Mix_FadeInMusic
+ − #define sdlh_Mix_FadeOutChannel stub_Mix_FadeOutChannel
+ − #define sdlh_Mix_FreeChunk stub_Mix_FreeChunk
+ − #define sdlh_Mix_FreeMusic stub_Mix_FreeMusic
+ − #define sdlh_Mix_HaltChannel stub_Mix_HaltChannel
+ − #define sdlh_Mix_HaltMusic stub_Mix_HaltMusic
+ − #define sdlh_Mix_LoadMUS stub_Mix_LoadMUS
+ − #define sdlh_Mix_LoadMUS_RW stub_Mix_LoadMUS_RW
+ − #define sdlh_Mix_LoadWAV_RW stub_Mix_LoadWAV_RW
+ − #define sdlh_Mix_OpenAudio stub_Mix_OpenAudio
+ − #define sdlh_Mix_PauseMusic stub_Mix_PauseMusic
+ − #define sdlh_Mix_PlayChannelTimed stub_Mix_PlayChannelTimed
+ − #define sdlh_Mix_Playing stub_Mix_Playing
+ − #define sdlh_Mix_ResumeMusic stub_Mix_ResumeMusic
+ − #define sdlh_Mix_Volume stub_Mix_Volume
+ − #define sdlh_Mix_VolumeMusic stub_Mix_VolumeMusic
+ − #endif
+ −
+ − #define sdlh_SDL_ConvertSurface SDL_ConvertSurface
+ − #define sdlh_SDL_CreateRGBSurface SDL_CreateRGBSurface
+ − #define sdlh_SDL_CreateThread SDL_CreateThread
+ − #define sdlh_SDL_Delay SDL_Delay
+ − #define sdlh_SDL_EnableKeyRepeat SDL_EnableKeyRepeat
+ − #define sdlh_SDL_EnableUNICODE SDL_EnableUNICODE
+ − #define sdlh_SDL_FillRect SDL_FillRect
+ − #define sdlh_SDL_FreeSurface SDL_FreeSurface
+ − #define sdlh_SDL_GetError SDL_GetError
+ − #define sdlh_SDL_GetKeyName SDL_GetKeyName
+ − #define sdlh_SDL_GetKeyState SDL_GetKeyState
+ − #define sdlh_SDL_GetMouseState SDL_GetMouseState
+ − #define sdlh_SDL_GetRGBA SDL_GetRGBA
+ − #define sdlh_SDL_GetTicks SDL_GetTicks
+ − #define sdlh_SDL_GL_SetAttribute SDL_GL_SetAttribute
+ − #define sdlh_SDL_GL_SwapBuffers SDL_GL_SwapBuffers
+ − #define sdlh_SDL_Init SDL_Init
+ − #define sdlh_SDL_InitSubSystem SDL_InitSubSystem
+ − #define sdlh_SDL_JoystickClose SDL_JoystickClose
+ − #define sdlh_SDL_JoystickEventState SDL_JoystickEventState
+ − #define sdlh_SDL_JoystickName SDL_JoystickName
+ − #define sdlh_SDL_JoystickNumAxes SDL_JoystickNumAxes
+ − #define sdlh_SDL_JoystickNumButtons SDL_JoystickNumButtons
+ − #define sdlh_SDL_JoystickNumHats SDL_JoystickNumHats
+ − #define sdlh_SDL_JoystickOpen SDL_JoystickOpen
+ − #define sdlh_SDL_LockSurface SDL_LockSurface
+ − #define sdlh_SDL_MapRGB SDL_MapRGB
+ − #define sdlh_SDL_MapRGBA SDL_MapRGBA
+ − #define sdlh_SDL_NumJoysticks SDL_NumJoysticks
+ − #define sdlh_SDL_PeepEvents SDL_PeepEvents
+ − #define sdlh_SDL_PumpEvents SDL_PumpEvents
+ − #define sdlh_SDL_Quit SDL_Quit
+ − #define sdlh_SDL_RWFromFile SDL_RWFromFile
+ − #define sdlh_SDL_SetColorKey SDL_SetColorKey
+ − #define sdlh_SDL_SetVideoMode SDL_SetVideoMode
+ − #define sdlh_SDL_WaitThread SDL_WaitThread
+ − #define sdlh_SDL_CreateMutex SDL_CreateMutex
+ − #define sdlh_SDL_DestroyMutex SDL_DestroyMutex
+ − #define SDL_LockMutex SDL_mutexP
+ − #define SDL_UnlockMutex SDL_mutexV
+ − #ifndef EMSCRIPTEN
+ − #define sdlh_SDL_ShowCursor SDL_ShowCursor
+ − #else
+ − #define sdlh_SDL_ShowCursor SDL_ShowCursor_patch
+ − #endif
+ − #define sdlh_SDL_UnlockSurface SDL_UnlockSurface
+ − #define sdlh_SDL_UpperBlit SDL_UpperBlit
+ − #define sdlh_SDL_VideoDriverName SDL_VideoDriverName
+ − #define sdlh_SDL_WarpMouse SDL_WarpMouse
+ − #define sdlh_SDL_WM_SetCaption SDL_WM_SetCaption
+ − #define sdlh_SDL_WM_SetIcon SDL_WM_SetIcon
+ − #define sdlh_SDLNet_AddSocket SDLNet_AddSocket
+ − #define sdlh_SDLNet_AllocSocketSet SDLNet_AllocSocketSet
+ − #define sdlh_SDLNet_CheckSockets SDLNet_CheckSockets
+ − #define sdlh_SDLNet_FreeSocketSet SDLNet_FreeSocketSet
+ − #define sdlh_SDLNet_Init SDLNet_Init
+ − #define sdlh_SDLNet_Quit SDLNet_Quit
+ − #define sdlh_SDLNet_ResolveHost SDLNet_ResolveHost
+ − #define sdlh_SDLNet_TCP_Close SDLNet_TCP_Close
+ − #define sdlh_SDLNet_TCP_Open SDLNet_TCP_Open
+ − #define sdlh_SDLNet_TCP_Recv SDLNet_TCP_Recv
+ − #define sdlh_SDLNet_TCP_Send SDLNet_TCP_Send
+ − #define sdlh_TTF_Init TTF_Init
+ − #define sdlh_TTF_OpenFont TTF_OpenFont
+ − #define sdlh_TTF_OpenFontRW TTF_OpenFontRW
+ − #define sdlh_TTF_Quit TTF_Quit
+ − #define sdlh_TTF_RenderUTF8_Blended TTF_RenderUTF8_Blended
+ − #define sdlh_TTF_RenderUTF8_Solid TTF_RenderUTF8_Solid
+ − #define sdlh_TTF_SetFontStyle TTF_SetFontStyle
+ − #define sdlh_TTF_SizeUTF8 TTF_SizeUTF8
+ −
+ − #define uphysfslayer_physfsReaderSetBuffer physfsReaderSetBuffer
+ − #define uphysfslayer_physfsReader physfsReader
+ − #define uphysfslayer_hedgewarsMountPackage hedgewarsMountPackage
+ − #define uphysfslayer_hedgewarsMountPackages hedgewarsMountPackages
+ −
+ − #define uphysfslayer_PHYSFSRWOPS_openRead PHYSFSRWOPS_openRead
+ − #define uphysfslayer_PHYSFSRWOPS_openWrite PHYSFSRWOPS_openWrite
+ −
+ − #define _strconcat fpcrtl_strconcat
+ − #define _strappend fpcrtl_strappend
+ − #define _strprepend fpcrtl_strprepend
+ − #define _strcompare fpcrtl_strcompare
+ − #define _strncompare fpcrtl_strncompare
+ − #define _strcomparec fpcrtl_strcomparec
+ − #define _chrconcat fpcrtl_chrconcat
+ − #define _pchar fpcrtl_pchar
+ − #define _strconcatA fpcrtl_strconcatA
+ − #define _strncompareA fpcrtl_strncompareA
+ − #define _strappendA fpcrtl_strappendA
+ −
+ − // hooks are implemented in javascript
+ − void start_hook(void);
+ − void mainloop_hook(void);
+ − void clear_filelist_hook(void);
+ − void add_file_hook(const char* ptr);
+ − void idb_loader_hook();
+ − void showcursor_hook();
+ − void hidecursor_hook();
+ − void drawworld_init_hook();
+ − #endif