VOGONS


The Soundblaster DSP project

Topic actions

Reply 960 of 1051, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
mattw wrote on 2023-10-15, 09:47:

can you say how much faster STC12C5A60S2 compared to regular 8052 MCU in "6T" is in that case? I just wonder what are the speed limits when those problems start to emerge. Also, thank you for giving so much good details about STC chips and how and with what programmers they can be used.

EDIT: For the original question, I think STC12C5A60S2 would be around 2x-3x of a regular MCU in 6T in overall, with MOVX execution speed controllable depending on the external hardware.

STC12 family is 1T, but execution speed of individual instructions vary and not necessarily correspond to being 12x the speed.
- While NOP is said to be only 1 cycle (12x), when I was using C51 with this MCU, __nop__() runs at 6x in practice. That is, any place requiring one __nop__() now needs six to maintain timing.
- Different instructions have varying cycles, most instructions are about 4x-8x the speed of a standard 8051 MCU. For most routines the overall speed would be about 6x, though routines consisting of mostly heavier instructions could be about only 3x-4x.
- Due to varying execution speed of instructions, the behavior of complex delays using for loops and such can be unpredictable and requires manual calibration.
- MOVX execution time for internal XRAM is 3-4 cycles. For external XRAM the speed depends on ALES (P0 address setup and ALE negative edge cycles) and RWS (MOVX r/w pulse cycles), making the overall execution time 7-20 cycles. It defaults to 14 cycles on startup (ALES=2, RWS=3, which means 3 cycles for P0 address setup and ALE negative edge, plus 4 cycles for MOVX r/w pulse).
- Timers are fully compatible with standard 8051 (12T) by default, so with this MCU there's no need to change any timer-related code. You can set the timer to operate at 1T instead via AUXR bits if desired, but in most cases not necessary. I think a good use case for 1T timers would be to reach insane UART baud rates like 921600 bps or even more for specialized purposes.

I haven't tested 6T mode of STC89/90 family. That mode appears to be a simple clock divider toggle, that doubles the execution speed of everything if set, so timers as well as other timing-sensitive code need to be adjusted accordingly, which means changes in several places if you want working MIDI also. For STC12, only one line of code (that is to disable access to internal XRAM) is needed to get everything, including MIDI, work in most cases. It's just some games and software (including Windows) do not seem to like the difference in the execution speed.

EDIT 2: With STC12 MCU, a MOVX instruction with BUS_SPEED maxed out plus two NOPs would be around the same speed as a standard MCU in 6T at around 24 cycles.

Last edited by LSS10999 on 2023-10-15, 12:01. Edited 1 time in total.

Reply 961 of 1051, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
LSS10999 wrote on 2023-10-15, 11:08:

I haven't tested 6T mode of STC89/90 family.

I believe such test worth to be done, because as I understand it - the test you've done is on average higher performance of the MCU than just 2 times. So, it's good we see what happens in 6T mode, i.e. with just 2 times the speed, especially with the clicking problem. Also, @Maelgrum stated many times fixing/patching the MIDI UART timings in the DSP code to make them work with 6T is no problem. last, but not least, I believe MCU with support for 6T are much more common than STC high-performance modes. In fact, on fast search I was not able to find where to buy such STC MCU in PLCC-44 package.

[EDIT] and just an weird idea - what do you all think on slowing down the MCU, i.e. install 12MHz crystal? I mean what are the predictions of the possible behavior other than of course the wrong MIDI UART timings. In any way, I can do such test, because initially I wrongly order 12MHz 8052MCU and also 12MHz Crystal is very common - every broken USB device I have, has one such crystal and so I can borrow it as a donor from there.

Reply 962 of 1051, by LSS10999

User metadata
Rank Oldbie
Rank
Oldbie
mattw wrote on 2023-10-15, 12:00:

I believe such test worth to be done, because as I understand it - the test you've done is on average higher performance of the MCU than just 2 times. So, it's good we see what happens in 6T mode, i.e. with just 2 times the speed, especially with the clicking problem. Also, @Maelgrum stated many times fixing/patching the MIDI UART timings in the DSP code to make them work with 6T is no problem. last, but not least, I believe MCU with support for 6T are much more common than STC high-performance modes. In fact, on fast search I was not able to find where to buy such STC MCU in PLCC-44 package.

[EDIT] and just an weird idea - what do you all think on slowing down the MCU, i.e. install 12MHz crystal? I mean what are the predictions of the possible behavior other than of course the wrong MIDI UART timings. In any way, I can do such test, because initially I wrongly order 12MHz 8052MCU and also 12MHz Crystal is very common - every broken USB device I have, has one such crystal and so I can borrow it as a donor from there.

I just did some tests to be sure.

1. STC90C58RD+ in 6T mode - Other than MIDI (which is expected and this confirms the MCU is indeed running in 6T), everything still works as expected, including Duke Nukem 3D and in Windows.
2. STC12C5A60S2 with BUS_SPEED register maxed out - Still the same with Duke Nukem 3D and Windows (not working). Additionally, MIDI stopped working completely -- games that prefer using MIDI to FM no longer detect MPU401 and use FM instead.

So it seems the issue with STC12C5A60S2 is more than just timing. Rather, the default BUS_SPEED setting is the correct value to be used here, but some programs and drivers are written in a way uncomfortable with the faster MCU.

PS: No noticeable difference regarding clicking between 12T and 6T. I think there may be other factors than DSP code execution time causing it.

Last edited by LSS10999 on 2023-10-15, 13:57. Edited 1 time in total.

Reply 963 of 1051, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
LSS10999 wrote on 2023-10-15, 13:44:

PS: No noticeable difference regarding clicking between 12T and 6T. I think there may be other factors than DSP code execution time causing it.

I start to think the same. maybe only capture in the 'digital domain', i.e. see the 'click' case and 'no-click' case as PCM bytes sequence of the same sound (i.e. we see the corruption and its nature in the data-stream), can give real answers, but that's not easy to be tested and probably the modification I came up with here:

Re: The Soundblaster DSP project

is not even entirely proper and sufficient...

Reply 965 of 1051, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
Maelgrum wrote on 2023-10-15, 14:23:

Still waiting for last 2 tests to be checked)))

they are here:

Re: The Soundblaster DSP project

in case people already with PLCC-44 sockets installed missed them. BTW, maybe end of the next week my PLCC-44 sockets and MCUs will arrive and I will be able to do such tests too.

Reply 967 of 1051, by S95Sedan

User metadata
Rank Member
Rank
Member
Maelgrum wrote on 2023-10-15, 14:23:

Still waiting for last 2 tests to be checked)))

Been a little bit busy but this is for both thests on my card.
There seems to be very little difference between them aswell.
(If you need any specific tests let me know)

Test 1: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Test 2: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Reply 968 of 1051, by Maelgrum

User metadata
Rank Member
Rank
Member
S95Sedan wrote on 2023-10-15, 17:53:
Been a little bit busy but this is for both thests on my card. There seems to be very little difference between them aswell. (If […]
Show full quote
Maelgrum wrote on 2023-10-15, 14:23:

Still waiting for last 2 tests to be checked)))

Been a little bit busy but this is for both thests on my card.
There seems to be very little difference between them aswell.
(If you need any specific tests let me know)

Test 1: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Test 2: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Thank you S95Sedan for testing!
I will go to path of completely new code for playing 0x14 cmd then.

Reply 969 of 1051, by georgel

User metadata
Rank Member
Rank
Member
Maelgrum wrote on 2023-10-15, 18:21:
S95Sedan wrote on 2023-10-15, 17:53:
Been a little bit busy but this is for both thests on my card. There seems to be very little difference between them aswell. (If […]
Show full quote
Maelgrum wrote on 2023-10-15, 14:23:

Still waiting for last 2 tests to be checked)))

Been a little bit busy but this is for both thests on my card.
There seems to be very little difference between them aswell.
(If you need any specific tests let me know)

Test 1: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Test 2: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Thank you S95Sedan for testing!
I will go to path of completely new code for playing 0x14 cmd then.

First make sure the game uses that command.

Reply 970 of 1051, by Maelgrum

User metadata
Rank Member
Rank
Member
georgel wrote on 2023-10-15, 18:25:
Maelgrum wrote on 2023-10-15, 18:21:
S95Sedan wrote on 2023-10-15, 17:53:
Been a little bit busy but this is for both thests on my card. There seems to be very little difference between them aswell. (If […]
Show full quote

Been a little bit busy but this is for both thests on my card.
There seems to be very little difference between them aswell.
(If you need any specific tests let me know)

Test 1: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Test 2: (CT3900 AWE32)
- Card is detected and boots normally.
- Tested audio in Doom, Rott, Duke3d: Seems to work and sound fine.
- Audio works fine in Duke2 shooting still has clicking.

Thank you S95Sedan for testing!
I will go to path of completely new code for playing 0x14 cmd then.

First make sure the game uses that command.

According to this:
https://github.com/lethal-guitar/Duke2 ... DIGISND.C
Duke2 may have samples in PCM and Adpcm,
so it can be not best game to test 0x14 single cycle dma playback.
[Edit] duke2 by default uses Adpcm compressed sound, so it is good test for Adpcm playing, but not for cmd 0x14 test.

Reply 971 of 1051, by maxtherabbit

User metadata
Rank l33t
Rank
l33t

This is what I get when playing DOTT using the first of the two latest test builds. The voice samples are all sped up and sound like the chipmunks. Also it still clicks...

Filename
20231015_195134.mp3
File size
439.18 KiB
Downloads
26 downloads
File license
Public domain

Reply 972 of 1051, by Maelgrum

User metadata
Rank Member
Rank
Member

I've done rebuilding DosBox from sources, added my custom sb trace logging code, run Mikey 123 - and got this:

Details
F2          - IRQ Request, 8-bit
D1 - Enable Speaker
40 B9 - Set Time Constant 14084 Hz
E1 - DSP Version
48 FF 03 - Set DMA Block Size
1C - Auto - Initialize DMA DAC, 8-bit
DA - Exit Auto - Initialize DMA Operation, 8-bit
1C - Auto - Initialize DMA DAC, 8-bit
DA - Exit Auto - Initialize DMA Operation, 8-bit
1C - Auto - Initialize DMA DAC, 8-bit
DA - Exit Auto - Initialize DMA Operation, 8-bit
1C - Auto - Initialize DMA DAC, 8-bit
DA - Exit Auto - Initialize DMA Operation, 8-bit

Not using 0x14 single cycle DMA

With this logging, i can test any game what commands it really uses.

Last edited by Maelgrum on 2023-10-16, 01:59. Edited 1 time in total.

Reply 973 of 1051, by Maelgrum

User metadata
Rank Member
Rank
Member

From Duke Nukem 2:

Details
D1          - Enable Speaker
40 38 - Set Time Constant 5000 Hz
75 15 09 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 38 - Set Time Constant 5000 Hz
75 15 09 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 38 - Set Time Constant 5000 Hz
75 15 09 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 72 - Set Time Constant 7042 Hz
75 3E 05 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 39 - Set Time Constant 5025 Hz
77 25 05 - DMA DAC, 2.6-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 72 - Set Time Constant 7042 Hz
75 3E 05 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 06 - Set Time Constant 4000 Hz
75 3A 03 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit

Uses ADPCM 4 and 2.6 bit

Reply 974 of 1051, by maxtherabbit

User metadata
Rank l33t
Rank
l33t
Maelgrum wrote on 2023-10-16, 01:39:

From Duke Nukem 2:

Details
D1          - Enable Speaker
40 38 - Set Time Constant 5000 Hz
75 15 09 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 38 - Set Time Constant 5000 Hz
75 15 09 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 38 - Set Time Constant 5000 Hz
75 15 09 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 72 - Set Time Constant 7042 Hz
75 3E 05 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 39 - Set Time Constant 5025 Hz
77 25 05 - DMA DAC, 2.6-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 72 - Set Time Constant 7042 Hz
75 3E 05 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit
40 06 - Set Time Constant 4000 Hz
75 3A 03 - DMA DAC, 4-bit ADPCM Reference
D0 - Halt DMA Operation, 8-bit

Uses ADPCM 4 and 2.6 bit

So any "click build" testing we did with duke2 should be invalidated

Reply 975 of 1051, by Maelgrum

User metadata
Rank Member
Rank
Member

DOTT:

Details
E0 C6       - DSP Identification
D3 - Disable Speaker
E0 AA - DSP Identification
E1 - DSP Version
E2 06 - Creative protection check
E2 6B - Creative protection check
E4 AA - Write Test Register
E8 - Read Test Register
40 64 - Set Time Constant 6410 Hz
14 00 00 - DMA DAC, 8-bit
------------- IRQ8
D1 - Enable Speaker
D1 - Enable Speaker
40 A5 - Set Time Constant 10989 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 5A 02 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 80 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 80 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 80 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 80 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 B7 18 - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 B7 18 - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 B7 18 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
Show last 261 lines
14 53 06    - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 88 2F - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 88 2F - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 BF 0B - DMA DAC, 8-bit
------------- IRQ8
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 5A 1C - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 D1 0F - DMA DAC, 8-bit
------------- IRQ8
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 56 1A - DMA DAC, 8-bit
------------- IRQ8
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 FF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 FF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 FF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 1B 10 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 FF 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 53 06 - DMA DAC, 8-bit
------------- IRQ8
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 FF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 36 02 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 DF 2F - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 34 0C - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 F9 0A - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 80 0A - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 23 16 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 40 0D - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 92 17 - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 01 2D - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 DF 2F - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 2B 22 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 2A 00 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 25 23 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 DF 2F - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 3E 10 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 D9 19 - DMA DAC, 8-bit
------------- IRQ8
40 D3 - Set Time Constant 22222 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 FF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 9F 2C - DMA DAC, 8-bit
------------- IRQ8
14 08 06 - DMA DAC, 8-bit
------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 DF 2F - DMA DAC, 8-bit
------------- IRQ8
14 5F 03 - DMA DAC, 8-bit
------------- IRQ8
14 F4 1A - DMA DAC, 8-bit
------------- IRQ8

So DOTT really uses 0x14 cmd,
and does creative protection check ))

Reply 976 of 1051, by maxtherabbit

User metadata
Rank l33t
Rank
l33t
Maelgrum wrote on 2023-10-07, 20:15:

If it works, look at single cycle dma

So I need to retest this build with DOTT in addition to the most recent one you've done

Reply 977 of 1051, by rasz_pl

User metadata
Rank l33t
Rank
l33t

I dont hear clicking in that chipmunk sample 🙁. We really need a standalone test for clicking, small program doing nothing else but playing single cycle DMA with samples exuberating the problem.

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 978 of 1051, by maxtherabbit

User metadata
Rank l33t
Rank
l33t
rasz_pl wrote on 2023-10-16, 02:20:

I dont hear clicking in that chipmunk sample 🙁. We really need a standalone test for clicking, small program doing nothing else but playing single cycle DMA with samples exuberating the problem.

It's there I promise. Was noticable in person, just not my cell phone recording of the sound coming through the speakers

Reply 979 of 1051, by Maelgrum

User metadata
Rank Member
Rank
Member

strange thing i see in log:

------------- IRQ8
40 A5 - Set Time Constant 10989 Hz
14 B7 18 - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 B7 18 - DMA DAC, 8-bit
D0 - Halt DMA Operation, 8-bit
40 A5 - Set Time Constant 10989 Hz
14 B7 18 - DMA DAC, 8-bit
------------- IRQ8

1. Playing buffer is stopped during a play. But stopped by some game timings, so it can end at any sample value. And another playback is started.
If last output sample of first buffer differs significantly from first sample of next buffer, it will click.
2. Halt DMA operation is strange:

    mov r0,#8
movx a,@r0
anl a,#0e7h
orl a,#42h
movx @r0,a
mov 2eh,#64h
djnz 2eh,$
anl a,#0a7h
movx @r0,a
clr ex1

Some embedded delay is here - djnz 100 times.
May be lowering this value can affect clicks ?.... interesting

Last edited by Maelgrum on 2023-10-16, 02:53. Edited 1 time in total.