New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Willy Byte loads slowly with MB enabled #52
Comments
[2008-October-18 20:11, by: tomch] Tested with 1.15.0.4: . MB in slot4 & slot5:
. Phasor in slot4:
I have now fixed the MB loading time problem (in my branch). |
I've revisited this after #765 was reported, and it seemed similar (since both using timers in one-shot mode). As it turns out the Lancaster issue was to do with Timer2 not actually being active. Re-cap on Willy Byte:
|
In AppleWin if I comment out the SSI263 I/O support, then Willy Byte doesn't lock-up as above (obviously there's no speech, just the AY8910 intro tune & in-game sfx). It also has this SSI263 detection at $7863:
@peterferrie: maybe of interest to you? Since I know you did one recently for Total Replay. |
Here's the code that sets up the speech for "Prepare to enter the digital dimension":
|
It also has this SSI263 detection at $7863:
```
; Pre: I flag=1
7863:A9 02 LDA #$02
7865:8D 8D C4 STA $C48D ; clr IFR.b1 (speech irq)
7868:A9 0C LDA #$0C
786A:8D 8C C4 STA $C48C ; PCR
786D:A9 80 LDA #$80
786F:8D 43 C4 STA $C443 ; SSI263.CTTRAMP
7872:A9 C0 LDA #$C0
7874:8D 40 C4 STA $C440 ; SSI263.DURPHON
7877:A9 70 LDA #$70
7879:8D 43 C4 STA $C443 ; SSI263.CTTRAMP
787C:A9 FF LDA #$FF
787E:20 A8 FC JSR WAIT
7881:AD 8D C4 LDA $C48D
7884:29 02 AND #$02 ; tst IFR.b1 / speech irq occurred?
7886:F0 02 BEQ $788A
7888:A9 01 LDA #$01
788A:8D 95 B6 STA $B695 ; 0=No SSI263, 1=Found SSI263
788D:60 RTS
```
@peterferrie: maybe of interest to you? Since I know you did one recently
for Total Replay.
Thanks Tom, this is essentially the same solution that I found to
work, except that I was setting the "IRQ fired" state from within the
IRQ handler itself, and reading the result from a memory location
instead of a card register.
I thought that the $8x registers were specific to the second AY chip,
since all of the stereo games check that $8x responds like $0x. Or is
it that the range for AY is x0-x7, and speech is x8+?
The Sound/Speech I has only one AY chip and the sound chip.
|
Yes, the $8x regs are for the 2nd 6522+AY chip.
From the wikipedia article this old card used the old SC-01 speech chip, which interfaces differently to the SSI263. |
Yes, the $8x regs are for the 2nd 6522+AY chip.
But the SSI263 is also connected to this 2nd 6522 chip, eg. for some setup &
the interrupt.
$C48C is 6522 PCR (Peripheral Control reg), and needs to be set to 0x0C for
the SSI263.
>The Sound/Speech I has only one AY chip and the sound chip.
From the [wikipedia article](https://en.wikipedia.org/wiki/Mockingboard)
this old card used the old SC-01 speech chip, which interfaces differently
to the SSI263.
From the implementation in Berzap, the interface looks at least
similar but using $0x registers instead of $8x.
|
It'll depend on which socket you plug your SSI263 into on the Mockingboard (I guess). AppleWin only supports the SSI263 mapped to $Cn4x, connected to the (2nd) 6522 at $Cn8x. I will check the Berzap code... |
AppleWin only supports the SSI263 mapped to $Cn4x, connected to the (2nd)
6522 at $Cn8x.
But I wonder where the SSI263 gets mapped if you plug it into the other
socket?
I have no idea.
I will check the Berzap code...
Specifically the "GRADER" file. It's the one that has the speech, and
$38A holds the type of MB that was selected from the configuration.
|
Aside relating to Berzap! ...Berzap! from Asimov (berzap.dsk) MB-A: in game music, no speech
So like Willy Byte, this uses the SSI263 at $C440 and the 6522 at $C480. MB Sound II: in game music, no speech
This older MB uses the Votrax/SC-01 speech chip, which just hangs off the 6522 at $C400. |
NB. AppleWin emulates an enhanced Mockingboard-C with support for both SSI263 and Votrax/SC-01 speech chips... so in Berzap! both MB-C and MB Sound/Speech will support speech. |
Great, thanks.
I just found the bug on my side so everything is good now.
|
I see that you changed the TR scan order (when initially looking for a MB) - so that Berzap! is patched to MB in slot-4, instead of MB in slot-5. AppleWin should work with Berzap! patched to a MB in slot-5... so potentially still a bug in AppleWin? |
No, my bug. I just pushed the fix. Swapping the scan order allowed
me to hide it while I was searching.
|
Thanks. Good to know :-) |
Back to Willy Byte...
The short summary is that this code is executed on pressing space during the intro/title sequence:
The "T1 one-shot mode" still sets IFR.b6 on T1 counter underflow, because IER.b6 is set. But since SEI has 6502 interrupts disabled, and they're never re-enabled, then it doesn't matter for the non-SSI263 case. Even during the game, pressing CTRL+R to restart, just takes you back to the "Type in your own message..." message... but never re-enables 6502 interrupts (and never clears IFR.b6 or IER.b6). Things to try:
|
Willy Byte with real Phasor:
Basically: all working fine. |
Limit to just the no-PX variants (06f8ccb). |
Here's the PPT from Kansasfest 2020 (without my pre-recorded audio - just because I don't want to attach a 17MB file!), which explains the Willy Byte (and AppleWin) bugs: And here's the YT/KFest presentation: (audio is a bit noisy for some reason, and the subtitles are poor + annoying!) The AppleWin fix was easy:
NB. AppleWin's CPU (6502/65C02) emulation doesn't support false-reads. Instead of re-writing the CPU emulation to support them (which would impact performance and likely add new bugs), I chose to localise the support in the peripheral card's emulation code. This is in line with the LC support for ProDOS 2.5.0's exploit (see #700 (comment)). |
Use cmake native find_package for OpenGL.
BerliOS Bug #11593
Date: 2007-July-20 21:46
Submitted By: tomch
Category: 1.13.2
Bug Group: none
Assigned To: tomch
Priority: 5
[From cea2, Xorxif]
As an interesting side note, Willy Byte in the Digital Dimension loads painfully slowly if Mockingboard cards are enabled, and doesn't work at all with the Phasor card, but I suspect that is just a matter of incompatibility.
The text was updated successfully, but these errors were encountered: