Commit Graph
64 Commits
Author SHA1 Message Date
Miro Kropacek 212dd1655f Revert "BACKENDS: ATARI: Remove move16 code"
This reverts commit 0f85939bc5.

Embarrassingly, my benchmark code was broken. move16 very much does
help, both in VRAM<->TT RAM and TT RAM<->TT RAM copying.
2025-04-25 23:27:19 +02:00
Miro Kropacek 84be8c5407 BACKENDS: ATARI: Update readme.txt.in 2025-04-20 21:42:36 +02:00
Miro Kropacek 5680536655 BACKENDS: ATARI: Additional fixes for cursor background
- leftovers after highlighted dirty rectangle

- not updating _surface if moving to fast left/right from screen borders
  (_width == _srcRect.width())

- not drawing cursor if repeatedly intersecting with a refreshing dirty
  rect

- leftover rectangle when leaving game overlay to the launcher

- massive simplification
2025-04-20 21:33:15 +02:00
Miro Kropacek 3eb17e58e3 BACKENDS: ATARI: Don't attempt direct rendering with unsupported engines
If sprites with implicit pitch % 16 == 0 are corrupted in single/triple
buffering, it doesn't make sense to try them unaligned in direct
rendering.
2025-04-20 21:33:15 +02:00
Miro Kropacek 564c503c3d BACKENDS: ATARI: Allow width non-divisible by 16 if not direct rendering
This fixes Phantasmagoria demo which uses 630x450.
2025-04-20 21:33:15 +02:00
Miro Kropacek cca60feaca BACKENDS: ATARI: Fix isOverlayDirectRendering()
When leaving the overlay, ConfMan.getActiveDomain() is already set. Use
OSystem::engineInit and OSystem::engineDone in your favour.
2025-04-20 21:33:15 +02:00
Miro Kropacek e53fc61ceb BACKENDS: ATARI: Move g_unalignedPitch check into OSystem::engineInit() 2025-04-20 21:33:15 +02:00
Miro Kropacek c2310979b1 BACKENDS: ATARI: Fix packaging of symbols
The executable is now stripped so we have to take the original.
2025-04-20 21:33:15 +02:00
Miro Kropacek 9a47e0d4d2 DEVTOOLS: Add Atari to update-version.pl
And regenerate for current 2.10.0git
2024-12-30 19:50:12 +01:00
Miro Kropacek a4ed12b04d BACKENDS: ATARI: Cleanup overlay code
Pretending that the manager starts in the overlay mode was really
confusing.

Also, the concept of _workScreen seemed great in theory but lead to
various subtle errors which were very hard to debug (related to cursor
handling, resolution changing etc).
2024-12-30 18:37:55 +01:00
Miro Kropacek 0f85939bc5 BACKENDS: ATARI: Remove move16 code
There's no evidence of that code being faster than the already optimized
memcpy().
2024-11-21 11:31:25 +01:00
Miro Kropacek 10665fb723 BACKENDS: ATARI: Use DISABLE_TEXT_CONSOLE for release builds
This shaves off a good 800 KB from all the engines. However, do keep
local atari debug messages for diagnostic purposes.

Also, use natfeats for debug output when possible else the classic
stdout/stderr (not both as before).
2024-11-21 11:31:25 +01:00
Miro Kropacek 42a93efd8c BACKENDS: ATARI: Update readme.txt
Clarify usage of DOS/FLAC SOMI talkie.
2024-11-13 21:41:01 +01:00
Miro Kropacek 90f8152171 BACKENDS: ATARI: Super flag may go to ./configure 2024-11-13 21:41:01 +01:00
Hubert Maier 4533e12280 JANITORIAL: BACKENDS: Fix typos 2024-09-16 02:13:34 +03:00
Thorsten Otto 30670e0a46 BACKENDS: ATARI: Add support for -mfastcall 2024-07-15 19:42:51 +02:00
Thorsten Otto 7dabb755dd BACKENDS: ATARI: Fixes to build scripts 2024-07-15 19:42:51 +02:00
Thorsten Otto 4c98561eec BACKENDS: ATARI: Move timer interrupt to ossystem_atari.cpp 2024-07-15 19:42:51 +02:00
Miro Kropacek dd49c9e3ce BACKENDS: ATARI: QoL improvements
- fixed aspect ratio correction (overlay destroyed
  its state, keyboard shortcut didn't always work),
  as well as significantly sped it up on VGA and
  SuperVidel

- smoother transitions between video modes

- reduce the number of video mode changes

- fixed a few extreme cases when triple buffering
  could lose an update

- lighter ST RAM usage in the lite build

- removed hardware accessing init/deinit routines
2024-07-15 19:42:51 +02:00
Miro Kropacek b34af00210 BACKENDS: ATARI: Silence some of dlmalloc warnings
They were printed every time something has been changed in
atari-graphics.cpp.
2024-07-15 19:42:50 +02:00
Miro Kropacek 08bd51f38a BACKENDS: ATARI: Fix a buffer overflow
Apparently 1024 characters is not enough for everyone.
2024-07-15 19:42:50 +02:00
Miro Kropacek c6e0584ed8 BACKENDS: ATARI: Enable HE games (using bink)
It's doesn't cost that much (400k) and it's reasonably fast on CT60.
2024-07-15 19:42:50 +02:00
Hubert Maier b5fb519219 JANITORIAL: Fix preceeding, threshhold and occuring typos in dlmalloc.cpp 2024-05-18 13:52:31 +02:00
Miro Kropacek 17cf6c95c5 BACKENDS: ATARI: Clarify EmuTOS compatibility 2024-04-07 03:15:11 +02:00
Miro Kropacek 74e4973b43 BACKENDS: ATARI: Disable aspect ratio correction
It's used only in surfacesdl backend.
2024-03-10 23:34:33 +01:00
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