From 029528bdb37f7b0aecaa8f806df93b6f9756ea6d Mon Sep 17 00:00:00 2001 From: Alexander Batalov Date: Sun, 19 Feb 2023 16:42:53 +0300 Subject: [PATCH] Refactor mve IO --- src/int/movie.cc | 10 +++------- src/movie_lib.cc | 14 +++++++------- src/movie_lib.h | 4 ++-- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/int/movie.cc b/src/int/movie.cc index 7b3b50b..3814669 100644 --- a/src/int/movie.cc +++ b/src/int/movie.cc @@ -11,7 +11,6 @@ #include "int/window.h" #include "movie_lib.h" #include "platform_compat.h" -#include "pointer_registry.h" #include "plib/color/color.h" #include "plib/db/db.h" #include "plib/gnw/debug.h" @@ -209,7 +208,6 @@ static DB_FILE* alphaHandle; static unsigned char* alphaBuf; static SDL_Surface* gMovieSdlSurface = NULL; -static int gMovieFileStreamPointerKey = 0; // 0x4783F0 void movieSetPreDrawFunc(MoviePreDrawFunc* func) @@ -243,9 +241,9 @@ static void movieFree(void* ptr) } // 0x47843C -static bool movieRead(int fileHandle, void* buf, int count) +static bool movieRead(void* handle, void* buf, int count) { - return db_fread(buf, 1, count, (DB_FILE*)intToPtr(fileHandle)) == count; + return db_fread(buf, 1, count, reinterpret_cast(handle)) == count; } // 0x478464 @@ -829,8 +827,6 @@ static int movieStart(int win, char* filePath, int (*a3)()) return 1; } - gMovieFileStreamPointerKey = ptrToInt(handle); - GNWWin = win; running = 1; movieFlags &= ~MOVIE_EXTENDED_FLAG_0x01; @@ -858,7 +854,7 @@ static int movieStart(int win, char* filePath, int (*a3)()) v15 = 0; } - _MVE_rmPrepMovie(gMovieFileStreamPointerKey, v15, v16, v17); + _MVE_rmPrepMovie(handle, v15, v16, v17); if (movieScaleFlag) { debug_printf("scaled\n"); diff --git a/src/movie_lib.cc b/src/movie_lib.cc index 451bb84..70123e6 100644 --- a/src/movie_lib.cc +++ b/src/movie_lib.cc @@ -33,7 +33,7 @@ typedef struct STRUCT_4F6930 { int field_0; MovieReadProc* readProc; STRUCT_6B3690 field_8; - int fileHandle; + void* fileHandle; int field_18; SDL_Surface* field_24; SDL_Surface* field_28; @@ -56,7 +56,7 @@ static void _MVE_MemInit(STRUCT_6B3690* a1, int a2, void* a3); static void _MVE_MemFree(STRUCT_6B3690* a1); static void _do_nothing_2(SDL_Surface* a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9); static int _sub_4F4B5(); -static int _ioReset(int fileHandle); +static int _ioReset(void* handle); static void* _ioRead(int size); static void* _MVE_MemAlloc(STRUCT_6B3690* a1, unsigned int a2); static unsigned char* _ioNextRecord(); @@ -393,7 +393,7 @@ static int _rm_dy; static int _gSoundTimeBase; // 0x6B39CC -static int _io_handle; +static void* _io_handle; // 0x6B39D0 static int _rm_len; @@ -639,7 +639,7 @@ void _MVE_rmFrameCounts(int* a1, int* a2) } // 0x4F4BF0 -int _MVE_rmPrepMovie(int fileHandle, int a2, int a3, char a4) +int _MVE_rmPrepMovie(void* handle, int a2, int a3, char a4) { _sub_4F4DD(); @@ -651,7 +651,7 @@ int _MVE_rmPrepMovie(int fileHandle, int a2, int a3, char a4) _rm_track_bit = 1; } - if (!_ioReset(fileHandle)) { + if (!_ioReset(handle)) { _MVE_rmEndMovie(); return -8; } @@ -673,11 +673,11 @@ int _MVE_rmPrepMovie(int fileHandle, int a2, int a3, char a4) } // 0x4F4C90 -static int _ioReset(int stream) +static int _ioReset(void* handle) { Mve* mve; - _io_handle = stream; + _io_handle = handle; mve = (Mve*)_ioRead(sizeof(Mve)); if (mve == NULL) { diff --git a/src/movie_lib.h b/src/movie_lib.h index daa6286..9d52389 100644 --- a/src/movie_lib.h +++ b/src/movie_lib.h @@ -7,7 +7,7 @@ namespace fallout { typedef void*(MveMallocFunc)(size_t size); typedef void(MveFreeFunc)(void* ptr); -typedef bool MovieReadProc(int fileHandle, void* buffer, int count); +typedef bool MovieReadProc(void* handle, void* buffer, int count); typedef void(MovieShowFrameProc)(SDL_Surface*, int, int, int, int, int, int, int, int); void movieLibSetMemoryProcs(MveMallocFunc* mallocProc, MveFreeFunc* freeProc); @@ -20,7 +20,7 @@ void movieLibSetPaletteEntriesProc(void (*fn)(unsigned char*, int, int)); void _MVE_rmCallbacks(int (*fn)()); void _sub_4F4BB(int a1); void _MVE_rmFrameCounts(int* a1, int* a2); -int _MVE_rmPrepMovie(int fileHandle, int a2, int a3, char a4); +int _MVE_rmPrepMovie(void* handle, int a2, int a3, char a4); int _MVE_rmStepMovie(); void _MVE_rmEndMovie(); void _MVE_ReleaseMem();