#include "THISDUST.H" #include "FMVPLAY.H" #include "LIBETC.H" #include "LIBSPU.H" #include "LIBGPU.H" #include "LIBMCRD.H" #include "SYSTEM.H" #include "PAD.H" #include "SOUND.H" #include "FMVPLAY.H" #include "E3STUFF.H" #include "GAMESND.H" #include "SCORES.H" // FMV int gSubtitles = 0; // decompiled code // original method signature: // void /*$ra*/ ReInitSystem() // line 23, offset 0x0004d478 /* begin block 1 */ // Start line: 25 // Start offset: 0x0004D478 /* end block 1 */ // End offset: 0x0004D518 // End Line: 48 /* begin block 2 */ // Start line: 46 /* end block 2 */ // End Line: 47 /* begin block 3 */ // Start line: 47 /* end block 3 */ // End Line: 48 /* WARNING: Unknown calling convention yet parameter storage is locked */ // [D] void ReInitSystem(void) { StopCallback(); ResetCallback(); ResetGraph(1); SetVideoMode(video_mode); InitGeom(); SetGeomOffset(0xa0, 0x80); scr_z = 0x100; SetGeomScreen(0x100); MemCardInit(1); InitControllers(); CdInit(); InitSound(); SetMasterVolume(gMasterVolume); SetXMVolume(gMusicVolume); } // decompiled code // original method signature: // void /*$ra*/ PlayFMV(unsigned char render /*$s0*/) // line 68, offset 0x0004d518 /* begin block 1 */ // Start line: 69 // Start offset: 0x0004D518 // Variables: // struct RENDER_ARGS args; // stack offset -40 /* begin block 1.1 */ // Start line: 75 // Start offset: 0x0004D544 /* end block 1.1 */ // End offset: 0x0004D544 // End Line: 75 /* begin block 1.2 */ // Start line: 80 // Start offset: 0x0004D570 /* end block 1.2 */ // End offset: 0x0004D578 // End Line: 81 /* end block 1 */ // End offset: 0x0004D5D0 // End Line: 96 /* begin block 2 */ // Start line: 133 /* end block 2 */ // End Line: 134 /* begin block 3 */ // Start line: 136 /* end block 3 */ // End Line: 137 // [D] void PlayFMV(unsigned char render) { RENDER_ARGS args; if ((render - 0x10 < 0xd) || (render == 97)) { CheckForCorrectDisc(1); } else if (((render - 1 & 0xff) < 0xf) || (render == 98)) { CheckForCorrectDisc(0); } args.nRenders = 1; args.Args[0].credits = render == 28; args.Args[0].recap = 0; args.Args[0].render = render; PlayRender(&args); if ((render - 1 & 0xff) < 0x62) SetPleaseWait(NULL); } // decompiled code // original method signature: // void /*$ra*/ PlayRender(struct RENDER_ARGS *args /*$s0*/) // line 107, offset 0x0004d5d0 /* begin block 1 */ // Start line: 108 // Start offset: 0x0004D5D0 // Variables: // static unsigned long oldsp; // offset 0x0 /* begin block 1.1 */ // Start line: 129 // Start offset: 0x0004D634 /* end block 1.1 */ // End offset: 0x0004D678 // End Line: 138 /* end block 1 */ // End offset: 0x0004D690 // End Line: 141 /* begin block 2 */ // Start line: 210 /* end block 2 */ // End Line: 211 /* begin block 3 */ // Start line: 222 /* end block 3 */ // End Line: 223 // [D] [A] void PlayRender(RENDER_ARGS *args) { #ifdef PSX static unsigned long oldsp; StopAllChannels(); FreeXM(); SpuQuit(); args->screenx = draw_mode_pal.framex; args->screeny = draw_mode_pal.framey; args->subtitle = gSubtitles; if (Loadfile("FMV\\FMV.EXE", &DAT_800ff800) != 0) { oldsp = GetSp(); EnterCriticalSection(); FlushCache(); ExitCriticalSection(); Exec(&DAT_800ff810, 1, args); SetSp(oldsp); } ReInitSystem(); #else // TODO: use jpsx? #endif }