Some interesting HW diff's between ST(E), TT, Falcon

Hardware, coding, music, graphic and various applications

Moderators: Mug UK, moondog/.tSCc., [ProToS], lp, Moderator Team

AtariZoll
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2909
Joined: Mon Feb 20, 2012 4:42 pm
Contact:

Some interesting HW diff's between ST(E), TT, Falcon

Postby AtariZoll » Sat Nov 25, 2017 8:35 am

Here want to talk of course not about differences in added new HW, different CPU, bus, and like, but differences in ST(E) compatible mode, with HW what is present in ST(E) too.

1. Falcon PSG (YM) has no shadow register, while others have 63x both (range $FF8804-$FF88FF) . Usual way of writing to PSG, in purpose to set floppy drive select lines for instance, or to produce some sound is to write bytes to $FF8800 and $FF8802 (first is register #, second is value going there).
Some game coders realized that it is more efficient to write at once in more registers using movem . And that will not work on Falcon, because lack of shadow registers, so to have sound on Falcon with such movem using code, need to patch game.
Now, what is for me most interesting here is question: did designers of ST have that movem way in mind when chose such address space for PSG access ?
Especially, because there are no other HW registers with shadows in ST, as I know.
Update: In case of Falcon there is so called "STE bus compatibility mode" setting possible. When it is on, access to area $FF8804-$FF88FF will not cause bus error. But will not change anything in PSG (case of write) , so will not produce sound. I thought first, that at least write to $FF8804-7 will be effective, since in lot of SW there is write with one instruction movep.l what covers area $FF8800-%FF8806 (4 bytes written), so can write to 2 of 3 channels at once.
But only first 2 bytes will be really written to PSG, other is lost. So, I think that that STE bus compat. mode is just some fix, done in later stage, when they realized that many of SW will soon finish with 2 bombs on screen because lack of shadow registers. It was to late to change main (Combel ?) chip, so they solved generating of DTACK signal, in other chip for that address area - but it could not activate PSG chip too.

2. Staying at PSG - and this is fresh discovery, thanx to coder of Hard 'n' Heavy : in TT, and only in TT writing byte to odd address of PSG, so for instance to $FF8801 or $FF8803 will cause bus error. Same code produces proper sound on ST(E), Falcon. Actually I'm surprised that writing to odd produced sound at all, since all SW (except mentioned, and even it mostly) writes to even address.

3. Still at sound: Falcon fixed bad mixing ratio of PSG and DMAA sound, so PSG is not louder (while on STE is much louder) on Falcon.

4. Another only Falcon improvement: writing values stored in video base registers ($FF8201, $FF8203) to video pointers/counters happens at end of V-blank, unlike by ST(E), where it happens at begin of V-blank. The benefit is that if SW writes in those registers in V-blank routine it will have immediate effect, while on ST(E) only 1 V-blank later.

If you know some other diff. in same manner, please share with us. Just to note that only differences in regular (video) usage are interesting. Some overscan code will for sure act different on TT and Falcon, because whole video is different, despite being compatible with ST regular modes.
Last edited by AtariZoll on Sat Dec 02, 2017 1:21 pm, edited 3 times in total.
Negative feedback has usually positive effect.

User avatar
LynXX
Atariator
Atariator
Posts: 20
Joined: Wed Jul 19, 2017 3:15 am
Location: Seattle, WA, USA

Re: Some interesting HW diff's between ST(E), TT, Falcon

Postby LynXX » Mon Nov 27, 2017 3:02 am

Thanks! I enjoyed reading that. How did you found all that out?

AtariZoll
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2909
Joined: Mon Feb 20, 2012 4:42 pm
Contact:

Re: Some interesting HW diff's between ST(E), TT, Falcon

Postby AtariZoll » Mon Nov 27, 2017 8:07 am

1 - That is visible in technical docs, so it is not my discovery.

2 - Hard 'n' Heavy works not on TT, only on it. It is known for years, but I did not went in tracing the reason, because it is not easy on real HW, and emulation of TT with only SW what can do it - Hatari was not much good. Now, I went in trying TT emulation with Hatari 2.0.0 for the first time (1 after it is released) -and I was happy to see that PMMU emulation works, because it is important for my game adaptations. I was able to trace HnH with Hatari, and found the problem in pretty much short time. Writing to odd address of PSG registers - something what probably happens not in any other SW. Because has no sense, and actually, even in HnH most of writes is normal. I disassembled earlier whole game code, but of course did not see those bad lines among 30000 others.
Surprise is that it triggers bus error only on TT.
It is nice that it is properly emulated in Hatari.

3 - Sound mixing ratio - that is simple observation - listening on audio in case of rare SW, what uses YM and DMA audio at once. It is very bad on STE - too loud YM audio in compare to DMA one.
OK, all it was when I did background music playback for STE + TT, Falcon - first with Xenon 2. Sound effects of game go via YM, background music via DMA audio. It was just unbalanced. Then I looked about microwire specs, schematic, expecting that there can set different mixer ratio. Longer story, and there is thread about it in this forum http://atari-forum.com/viewtopic.php?f=15&t=27452&hilit=microwire
Things are simply that in Falcon YM and DMA audio levels are balances, unlike in STE. I would say that they corrected error.

4 - I discovered it when worked on AV - audio video playback for Atari STE. That could work on Falcon too, of course, but there were some unexpected problems on Falcon. Right because that diff. But in that time I had no clue about when exactly that write happens even on ST(E) . So, it needed some testings, experimenting until I realized all it.
Negative feedback has usually positive effect.


Social Media

     

Return to “Professionals”

Who is online

Users browsing this forum: No registered users and 2 guests

cron