Commit Graph

26 Commits

Author SHA1 Message Date
uyjulian
48a41966fd Sync with ARAnyM compiler sources 2019-09-01 16:56:03 -05:00
uyjulian
730ca109b7 Remove SDL1 support; add SDL2 support from kanjitalk755 repository 2019-09-01 14:51:28 -05:00
uyjulian
8353a9ed44 Hope it works 2018-06-06 23:11:08 -05:00
uyjulian
c4b1b1937e Remove support for all other platforms other than macOS 2018-04-15 11:17:57 -05:00
asvitkine
cb55b15d39 Change #include <mach/mach_host.h> to #include <mach/mach.h> 2009-08-21 17:39:58 +00:00
asvitkine
5a8dfa1b36 [Charles Srstka]
Attached is a set of patches to port the precise timer that is currently used in the Linux and BeOS builds of SheepShaver to Mac OS X (and any other Mach-based operating systems).

Currently, the Linux build uses the clock_gettime() function to get nanosecond-precision time, and falls back on gettimeofday() if it is not present. Unfortunately, Mac OS X does not currently support clock_gettime(), and gettimeofday() has only microsecond granularity. The Mach kernel, however, has a clock_get_time() function that does very nearly the same thing as clock_gettime(). The patches to BasiliskII cause the timing functions such as timer_current_time() to use clock_get_time() instead of gettimeofday() on Mach-based systems that do not support clock_gettime().

The changes to SheepShaver involve the precise timer. The existing code for Linux uses pthreads and real-time signals to handle the timing. Mac OS X unfortunately does not seem to support real-time signals, so Mach calls are again used to suspend and resume the timer thread in order to attempt to duplicate the Linux and BeOS versions of the timer. The code is somewhat ugly right now, as I decided to leave alone the pre-existing style of the source file, which unfortunately involves #ifdefs scattered throughout the file and some duplication of code. A future patch may want to clean this up to separate out the OS-specific code and put it all together at the top of the file. However, for the time being, this seems to work.

This has not been extensively tested, because I have not been able to get my hands on a good test-case app for the classic Mac OS that would run inside the emulator and try out the timer. However, performance does seem to be better than with the pre-existing code, and nothing seems to have blown up as far as I can tell. I did find a game via a Google search -  Cap'n Magneto - that is known to have problems with Basilisk/SheepShaver's legacy 60 Hz timer, and the opening fade-to-color for this game appears to run much more smoothly with the precise timer code in place.
2009-08-17 20:44:30 +00:00
gbeauche
c8cb4879a4 Happy New Year! 2008-01-01 09:40:36 +00:00
gbeauche
daa0af4da6 improve locks 2006-05-01 13:13:18 +00:00
gbeauche
e867749999 POSIX conforming use of pthread_cond_wait(). 2005-06-30 10:34:31 +00:00
gbeauche
e355c83f59 Add system-specific implementations of idle_{wait,resume} functions. 2005-06-30 10:20:18 +00:00
gbeauche
f29eb7dd1d nanosleep() delays seem better suited to MacOS X, instead of select() 2005-02-21 22:57:03 +00:00
gbeauche
30632aed4f Happy New Year! 2005-01-30 21:42:16 +00:00
cebix
9e7932abf0 Happy New Year! :) 2004-01-12 15:29:31 +00:00
cebix
628533940d - documentation updates
- 2001 -> 2002
- version 0.9 -> 1.0
2002-01-15 14:58:43 +00:00
cebix
305b9ef7f2 Irix needs pthread cond variables which need the pthread.h header file 2001-07-09 15:44:58 +00:00
cebix
5868a40a37 - ADB has its own interrupt flag, INTFLAG_ADB
- ADBMouseMoved(), ADBMouseDown/Up() and ADBKeyDown/Up() trigger the ADB
  interrupt
- ADB mutex is only used for mouse movement (the only input state where it
  matters)
- adb.cpp: toggling relative mouse mode resets mouse_x/y
- PrimeTime(0) schedules a timer task with 0 delay time; this is still not
  the correct implementation, but it makes MacSyndicate work...
- Unix: pthreads are preferred to POSIX.4 timers for 60Hz ticks because the
  timers drift badly under Linux and the thread can compensate for drifting
  well enough
- Unix: moved GetTicks_usec() and Delay_usec() to timer_unix.cpp
- video_x.cpp: X mouse acceleration is disabled in relative mouse mode because
  MacOS does its own acceleration
- video_x.cpp: palette[].pixel and palette[].flags are always preset
- video_x.cpp: decoupled X event handling from 60Hz video refresh cycle by
  using select() with a timeout on the X fd
2001-07-09 11:22:01 +00:00
cebix
e7a13421df replaced TIME_OFFSET constant by portable TimeToMacTime() function 2001-07-06 17:36:09 +00:00
cebix
c23567ab14 - bumped version number to 0.9
- updated copyright dates
2001-02-02 20:53:00 +00:00
cebix
ff5fcd83a7 - first version to run natively on NetBSD/m68k 2000-07-13 13:47:12 +00:00
cebix
97d96bddea - updated copyright info: 1999->2000 2000-04-10 18:53:46 +00:00
cebix
1efa7490cf - Unix: changed time zone handling (again) 2000-02-21 20:04:18 +00:00
cebix
d92b13e550 - added external file system
- moved most init/deinit code to InitAll()/ExitAll() in main.cpp
1999-10-19 17:41:44 +00:00
cebix
0536eb15a4 - fixed small compilation problem 1999-10-15 15:06:55 +00:00
cebix
8edc3aa83c - some fixes for NetBSD 1999-10-15 14:50:39 +00:00
cebix
289f0a588a - corrected time zone handling in TimerDateTime() 1999-10-14 16:05:18 +00:00
cebix
8e491572ca Imported sources 1999-10-03 14:16:26 +00:00