Commit Graph
39 Commits
Author SHA1 Message Date
Miro Kropacek 9152c3dc4e BACKENDS: ATARI: Buffer also mouse buttons state
Now double-click works also on really slow hardware. And Hatari.

Also, partially revert commit 01a2d2ed because events can't be passed
to the (multitasking) OS. So basically let's hope that it works fine now
even without handling IKBD overruns. I'm not able to replicate the issue
with Hatari + FF + slow UI + mouse movement anymore.
2024-02-24 06:21:43 +01:00
Miro Kropacek 01a2d2edab BACKENDS: ATARI: Call original keyboard/mouse routines
This helps to solve the issue when one pushes 'Return' immediately after
Hatari's start. This issue appeared after introducing the
interrupt-driven audio mixer.

Not sure whether this was a real bug but it's much cleaner
implementation now anyway.
2024-02-24 03:54:54 +01:00
Miro Kropacek f41a678ba1 GRAPHICS: ATARI: Utilize dlmalloc
- every malloc is now aligned on 16 bytes

- no need for the hidden pointers

- ct60_vmalloc() is called only once, the rest is handled
  by dlmalloc (SV XBIOS' vmalloc is pretty fragile)
2024-02-24 03:54:54 +01:00
Miro Kropacek e1bda48e05 BACKENDS: ATARI: Change version to 2.9.0 2024-01-28 21:59:13 +01:00
Miro Kropacek 3e85aa3f4b BACKENDS: ATARI: Provide dlmalloc locally
It's much cleaner and easier to use than to depend on an unofficial mintlib fork...

Plus we are going to use its MSPACES feature anyway.
2024-01-28 21:59:13 +01:00
Miro Kropacek 4e285bdd0b BACKENDS: ATARI: Fix build 2024-01-01 17:26:22 +01:00
Miro Kropacek 7fed4fd9ba BACKENDS: ATARI: Disable ultima & hugo engines
- The only non-hires ultima engine is ultima1, not worth it. See
  also https://bugs.scummvm.org/ticket/14790. This prevents adding
  the 15 MB ultima.dat to the release archive.

- Disable hugo also in full version (oversight).

- Mention freemint version in readme.txt.
2024-01-01 16:27:01 +01:00
Le Philousophe 01ebece807 COMMON: Make getDefaultConfigFileName return a Path instead of a String 2023-12-24 13:19:25 +01:00
Miro Kropacek 969e82fce7 BACKENDS: ATARI: Last minute changes (cosmetic) 2023-12-19 14:56:04 +01:00
Miro Kropacek f490760955 BACKENDS: ATARI: Re-add classicmacfonts.dat
As it seems to be used in some lowres games as well. Also remove
hugo.dat (which is explicitly disabled in the full version).

Change 'rm -f' to 'rm' to see what is actually deleted for real.
2023-12-19 13:20:11 +01:00
Miro Kropacek 59748b028f BACKENDS: ATARI: Prepare for release 2023-12-16 10:10:31 +01:00
Miro Kropacek 37ad974fbb ATARI: Don't include classicmacfonts.dat and encoding.dat
Atari backend doesn't support mac games and it's unlikely someone will miss CJK support as well. A few hundreds of KB down.
2023-11-27 21:18:42 +01:00
Miro Kropacek 43eb596d40 BACKENDS: ATARI: Set ST-MIDI driver for all audio
Also, MT-32 and MIDI are set to "auto" so no need to change those, too.
2023-11-09 18:20:06 +01:00
Miro Kropacek f7d78ec70a BACKENDS: ATARI: Implement internal downsampling to 8-bit
So we don't rely on STFA's questionable algorithms and we can use
X-SOUND, too.
2023-11-09 18:20:06 +01:00
Miro Kropacek fb8528ac77 BACKENDS: ATARI: Various fixes
- composer unaligned pitch fix
- error() doesn't work while in OSystem_Atari c-tor
- when a crash occurs, restore at least the cursor
- fix a crash when "data" doesn't exist
2023-09-24 17:48:54 +02:00
Miro Kropacek dcab5d3369 CONFIGURE: Add support for m68k-atari-mintelf
This is basically the same as m68k-atari-mint host os but with a
different compiler/file format.
2023-09-24 17:48:54 +02:00
Miro Kropacek b510eff336 BACKENDS: ATARI: Implement aspect ratio correction 2023-09-24 17:48:54 +02:00
Miro Kropacek 2ab9ba353a BACKENDS: ATARI: Remove the SCI hack
It was wrong (other engines are allowed to do infinite recursions?) and
Future Wars still isn't working properly at all times. I've decided to
remove it (i.e. Future Wars and Operation Stealth are not supported
anymore).

Small updates in readme.txt.
2023-08-12 17:38:49 +02:00
Miro Kropacek 87f1cd25be BACKENDS: ATARI: Don't initialize GEM before initBackend()
This caused unnecessary desktop redraw, clearing text output from the
console.
2023-08-12 17:38:49 +02:00
Miro Kropacek f8f22c6e85 BACKENDS: ATARI: Fix a stuck key repeat
Sometimes the new IKBD handler would take over before TOS got a message
about key release event, leading to an infinite key stuck sound.
2023-08-12 17:38:49 +02:00
Miro Kropacek c1354b8589 BACKENDS: ATARI: Fix crash when exit() is called
exit() can be handled at user level via atexit(), there's no need to use
the critical handler routine.

Removed GEM restore from the critical handler as this uncovered its
instability while being in the critical handler.
2023-08-12 17:38:49 +02:00
Miro Kropacek 18dafa1742 BACKENDS: ATARI: Disable director & remove unused dat files 2023-08-12 17:38:49 +02:00
Miro Kropacek 7e3b9cceec BACKENDS: ATARI: Direct rendering support
Similar to SuperVidel's but requires an additional C2P pass.

Also, a few optimizations added like cursor is being assumed to be in
a persistent memory so we don't copy it over. And it's using a mask
instead of key.

This graphics mode is not perfect though and works reliably only with
source surfaces allocated via Surface::init() otherwise wrong memory
location is being read.

Still, can gain quite a few CPU cycles, especially on 640x480 screens.
2023-08-12 17:38:49 +02:00
Miro Kropacek d9a5de0fe6 BACKEND: ATARI: Screen shaking and some fixes
- surface setup for optimized 4-bit C2P routine wasn't properly detected

- STFA pretends to support Falcon sampling frequencies on TT leading to
  suboptimal sample mixing

- delayMillis() should check also for other events (fixes Future Wars)
  but avoid doing it for SCI as its MIDI timer would call itself in a
  recursive loop

- SuperVidel doesn't need to use VsetScreen() in VBL anymore

- Wetlands, Teen Agent, Shivers and Private Eye need non-aligned
  surface  widths

- However Wetlands and Private Eye use setCursorPalette, see
  https://bugs.scummvm.org/ticket/14524

- Added warning for Phantasmagoria's 630x450, nothing can be done there
  as the game also requires non-aligned surfaces and at the same time
  the buffer has to be aligned on 16 bytes.

- BDF scaling disabled by default
2023-07-19 22:22:11 +02:00
Miro Kropacek 2ce02658ec BACKENDS: ATARI: DMA playback is not always active
E.g. in the overlay there's no need to steal cycles for playing empty
sample buffer.

Also make STMIDI default audio driver for the slim version.
2023-06-15 22:57:55 +02:00
Miro Kropacek 5537759c53 BACKENDS: ATARI: Rework
- Atari TT support
- all video and audio is now handled via XBIOS
- reworked IKBD handling using Kbdvbase vectors, esp. Kbdvec()
- video uses proper triple buffer
- arbitrary game screen size support
- many fixes and optimizations
2023-06-15 22:57:55 +02:00
Miro Kropacek a6a5b8ab42 BACKENDS: ATARI: Handle themes in installation script
- "fat" version uses repacked (zip -0) archives; also separate "data"
  and "themes" folders
- "slim" version doesn't use any external themes (for speed reasons)
2023-05-11 00:03:44 +02:00
Miro Kropacek 76d3706492 BACKENDS: ATARI: Add build scripts
- consolidate public #define's (just ATARI)
- cpu compiler flags are specified in the script
- allow explicit move16, SV and SV Blitter features enabled/disabled

Provide two build scripts:

1. "Fat" one targeted at 040/060 machines (possibly with SuperVidel)

This one is optimized for 68020-60 (so it's still possible to try
highres engines on 68030 machines).

2. "Slim" one targeted at 030 machines (Falcon030+DFB/CT2 or TT030)

This one is optimized for 68030 and stripped from even more features:
"fancy" (highres) themes, move16 & SuperVidel routines and most
importantly the highres engines.
2023-05-10 22:58:26 +02:00
Miro Kropacek a4e85dab01 BACKENDS: ATARI: Remove double buffering & vsync
ScummVM engines are not built for synchronous screen locking (i.e.
updateScreen() can't be really used for any sort of blocking updates
otherwise performance suffers).

Single buffering now means deliberate tearing as a speed optimization
and triple buffering provides a tearingless picture with slight overhead.
2023-04-08 20:27:43 +02:00
Miro Kropacek 9ed3d0b5fe BACKENDS: ATARI: Avoid depletion of mixer slots
This was a bad idea from the beginning (see https://github.com/scummvm/scummvm/pull/4687/files#r1096804842)
but fortunately there is an easy and safe workaround: providing a buffer
with zero length. That way mixCallback() is always called while mixing
is avoided.

Also rename "output_samples" to "audio_buffer_size" to be on par with
the official documentation: https://docs.scummvm.org/en/latest/advanced_topics/understand_audio.html#buffer.
2023-04-07 17:31:40 +02:00
Miro Kropacek 64c864b5d3 BACKENDS: ATARI: Add "data" folder to search set
"make dist-generic" doesn't automatically look for files in "data"
folder. Commit be98f2a8 is somewhat related to this problem but only
for debugging purposes.

As relative "data" clashes with game's relative "data" (e.g. Full
Throttle demo), do the right thing and add it as absolute path.
2023-04-03 20:19:46 +02:00
Miro Kropacek 4e4aea1463 BACKENDS: ATARI: Don't call clock() and usleep()
Avoiding overhead when accessing system functions / variables.
2023-04-03 20:19:04 +02:00
Miro Kropacek cef14a7c6a BACKENDS: ATARI: Small fixes
- fix restoration of dirty rects from overlay
- fix vsync handling (don't try to be too smart; we can't store "vsync"
  from anywhere because that wouldn't play nicely if a game has its own
  "vsync" set) ... so keep the checkbox as is
- overlay restore for 640x400
- never wait for vbl in overlay
- readme.txt
2023-03-29 20:17:43 +02:00
Miro Kropacek a98ce2c211 BACKENDS: ATARI: Double/triple buffering doesn't enforce fullscreen redraws
Also, massively refactored, single/double/triple/overlay rendering is
finally united.
2023-03-25 21:45:50 +01:00
Miro Kropacek 52f8bd45e2 BACKENDS: ATARI: Use RGB332 for the overlay 2023-03-25 21:45:50 +01:00
Miro Kropacek 6c5e3dbfd5 BACKENDS: ATARI: Refactor 2023-03-25 21:45:50 +01:00
Miro Kropacek 896d7cf309 BACKENDS: ATARI: Use "saves" directory for savegames 2023-03-04 23:38:42 +01:00
Miro Kropacek 276cf354bf BACKENDS: ATARI: Separate AtariEventSource from OSystem_Atari 2023-03-04 23:38:42 +01:00
Miro Kropacek 4d21a496d2 BACKENDS: ATARI: Add new backend (graphics, mixer, platform)
Compile as:

./configure --backend=atari --host=m68k-atari-mint --enable-release --disable-mt32emu --disable-lua --disable-nuked-opl --disable-16bit --disable-scalers --disable-translation --disable-eventrecorder --disable-tts --disable-bink --opengl-mode=none --enable-verbose-build --prefix=/usr --bindir=/ --datarootdir=share --datadir=data && make -j 16 && m68k-atari-mint-flags -S -r ./scummvm && make install DESTDIR=$PWD/_release/ && mv $PWD/_release/scummvm $PWD/_release/scummvm.ttp
2023-03-04 23:38:42 +01:00