- getcwd(jaguar_boot_dir, 1024);
- log_init("vj.log");
- memory_init();
- version_init();
- version_display(log_get());
- jaguar_init();
-
- // Get the BIOS ROM
- if (jaguar_use_bios)
- JaguarLoadROM(jaguar_bootRom, jaguar_bootRom_path);
-
- SET32(jaguar_mainRam, 0, 0x00200000); // Set top of stack...
-
-//This is done here, so that we get valid numbers from TOM... !!! FIX !!!
- jaguar_reset();
-
- // Set up the backbuffer
-// int16 * backbuffer = (int16 *)malloc(845 * 525 * sizeof(int16));
- backbuffer = (int16 *)malloc(845 * 525 * sizeof(int16));
- memset(backbuffer, 0x22, tom_getVideoModeWidth() * tom_getVideoModeHeight() * sizeof(int16));
-
- InitSDL();
-
- // Get the cartridge ROM (if passed in)
-// if (haveCart)
-// JaguarLoadCart(jaguar_mainRom, argv[1]);
- // Now with crunchy GUI goodness!
- JaguarLoadCart(jaguar_mainRom, (haveCart ? argv[1] : (char *)""));
-
-//Do this again??? Hmm... This is not very nice.
-//Maybe it's not necessary??? Seems to be, at least for PD ROMs... !!! FIX !!!
- jaguar_reset();
-
- totalFrames = 0;
- startTime = clock();
- nNormalLast = 0; // Last value of timeGetTime()
- nNormalFrac = 0; // Extra fraction we did
- nNormalLast = SDL_GetTicks(); //timeGetTime();
-
- while (!finished)
- {
-#ifdef SPEED_CONTROL
- nTime = SDL_GetTicks() - nNormalLast; // calcule le temps écoulé depuis le dernier affichage
- // nTime est en mili-secondes.
- // détermine le nombre de trames à passer + 1
- nCount = (nTime * 600 - nNormalFrac) / 10000;
-
- // si le nombre de trames à passer + 1 est nul ou négatif,
- // ne rien faire pendant 2 ms
- if (nCount <= 0)
- {
- //Sleep(2);
- //SDL_Delay(1);
- } // No need to do anything for a bit
- else
- {
- nNormalFrac += nCount * 10000; //
- nNormalLast += nNormalFrac / 600; // add the duration of nNormalFrac frames
- nNormalFrac %= 600; //
-
- // Pas plus de 9 (10-1) trames non affichées
- if (nCount > 10)
- nCount = 10;
- for(int i=0; i<nCount-1; i++)
- jaguar_exec(backbuffer, false);
-#endif
- // Setting up new backbuffer with new pixels and data
- JaguarExecute(backbuffer, true);
- totalFrames++;
-
- // GUI stuff here...
- if (showGUI)
- {
- extern uint32 gpu_pc, dsp_pc;
- DrawString(backbuffer, 8, 8, false, "GPU PC: %08X", gpu_pc);
- DrawString(backbuffer, 8, 16, false, "DSP PC: %08X", dsp_pc);
- }
-
- // Simple frameskip
- if (nFrame == nFrameskip)
- {
- RenderBackbuffer();
- nFrame = 0;
- }
- else
- nFrame++;
-
- joystick_exec();
-
-#ifdef SPEED_CONTROL
- }
-#endif
- }
-
- int elapsedTime = clock() - startTime;
- int fps = (1000 * totalFrames) / elapsedTime;
- fprintf(log_get(), "VJ: Ran at an average of %i FPS.\n", fps);
-
- jaguar_done();
- version_done();
- memory_done();
- log_done();
-
- if (useOpenGL)
- sdlemu_close_opengl();
- SDL_JoystickClose(joystick);
- SDL_FreeSurface(surface);
- SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO | SDL_INIT_TIMER);
- SDL_Quit();
-
- return 0;
-}
-
-//
-// Prime SDL and create surfaces
-//
-void InitSDL(void)
-{