-
Content Count
2,271 -
Joined
-
Last visited
-
Days Won
3
Posts posted by ivop
-
-
1 hour ago, emkay said:I quess, he wants to use 5x5 to have the middle of the path calculated correctly.
Good observation. Once the extra bit is used, 7x7 might work even better, if that doesn't inflate lookup tables.
-
1
-
-
1 hour ago, Pokeypy said:What, if I divide each of the squares into a 5x5 board.
I would go for 4x4. You know, multiples of two, easier to match and compare to
-
1
-
-
4 minutes ago, emkay said:woaah this is really annoying ...
Duh. That was not the point. The Taylor Dane part shows how three oscillators playing their own freqeuncy, at a bare 100Hz update rate, can create pretty convincing human voices. Other examples were less convincing, but still you hear some interesting sounds during Kraftwerk. Anyway, consider ooooh, aaaah, iiiiih, eeeeh, uuuuh, backing vocals at 800Hz. With the voice of Taylor Dane
-
1
-
-
Found it! This is 100Hz updates of just the frequencies of three oscillators. No samples.
Imagine 800Hz updates on certain channels pokey, with a backing track at 50Hz
-
2
-
-
On 5/7/2021 at 2:37 AM, rensoup said:Possibly but I don't know if there would be any advantage... I'm thinking LZSS can be modified to output all 4 channels at different frequencies so it would be very similar ( in terms of efficiency and code simplicity )
If the interleaving allows that, that would be the answer! 9 streams, 2 at high speed, 7 at 50Hz (PAL).
QuoteThat could be interesting and a nice space saver... But are there any combo that are invalid ? It seems that those registers can be abused in all sorts of ways... Vinscool mentioned that you can use Volume only and still use AUDF for different purposes.
Yeah, it might be difficult to find escape sequences that always work. HARDbass has the advantage that the RMT player is still running. It can act on certain RMT instruments, which is not possible with a SAP-R or LZSS compressed streams. Hence the idea of escape sequences.
Perhaps the different volume only modes could be (ab)used for this. $10-$1f is just volume only, but $30-$3f, $50-$5f etc..., could be used to signal that a certain tone generator should be enabled (ORA #$A0 for example).
You can easily create an RMT instrument that only uses volume only values for AUDC.
QuoteI'm also waiting for that killer tune that proves 200+hz updates are actually useful 😀
This could be done on Pokey, too:https://www.youtube.com/watch?v=lHjn8ffnEKUCurrently, higher update frequencies are mainly used for percussion and drums, but it could also be used for modulations in the higher frequency range.
Edit: Sorry, this is not what I meant. There's a C64 demo that uses its programmable sound generators to generate several frequencies that were present in the original sample. Can't find it, but I'll keep looking
But that's something that could also generate interesting sounds at 200+Hz. Modulating higher freqeuencies.
-
2
-
-
2 hours ago, Rybags said:The thing I'm interested in though is whether you could have coexistent boot sectors for both ST and Amiga. I suspect the answer is yes.
Interesting. As they both run a 68k, I suppose it should be possible to detect if one is running on an ST or Amiga. Do Amiga disks use the same FAT12 boot sector? Otherwise, it could become tricky.
-
Incroyable. They managed 10:30am
First mistake I noticed: it was pretty dumb to do black on yellow. Now my "serial number" window is completely black, which is pretty hard to write on
Next, I need to separate the ROSSH part (hacksaw or boxknife), and then start soldering the switches!
Edit: BTW considering the DHL prices (see two posts above), I was surprised to see a DHL guy at the door, because I ordered FedEx!
Edit2:
-
4
-
-
Well, they took a bit longer.
So that's a ride from Hangzou, China, to Shanghai Airport, several scans, flight to Sennan in Japan, flight to Grace-Hollogne (which is Luik/Liege) in Belgium. That's just across the border of Maastricht, but no, it was flown to Paris, France(!)
Apparently it's now in transit again. I assume to Amsterdam, The Netherlands ? They say they'll deliver it at my doorstep within 10 hours from now. I'm off to bed
-
3 minutes ago, emkay said:It's also about the real note frequencies.
Sure, but I thought that was a given
-
1
-
-
On 4/19/2021 at 1:42 AM, rensoup said:Yes there should be just enough juice for 800hz with 4 channels which like you said is probably not very useful. A single 800hz channel (at fixed updates) would be nicer but it may require changes to LZSS
Perhaps you can have two separate LZSS streams? One for channel 2-4 at 50/60Hz, and one high speed stream for channel 1.
Another option is to just run your LZSS player at 50/60Hz, but use escape sequences (i.e. certain AUDF/AUDC combinations that make no sense) that trigger a parallel waveform player that is run every x scanlines.
-
1
-
-
On 5/4/2021 at 4:51 AM, rensoup said:I'm guessing 16bit here has nothing to do with AUDCTL linked channels ?
I think he means commands for glissandos, vibrato, and arpeggios at 16-bit resolution with AUDCTL linked channels. This is something RMT does not support.
-
1
-
-
3 hours ago, Duke748 said:- Before I power it on are there any pointers on voltages to check on the PSU and the board itself
- Recommened capacitor replacement checks
This explains your Spectrum experience
Yesterday, for the first time in my life, I watched a Spectrum restoration video on YouTube, and they specifically tested several points to assure powering on the board wouldn't fry it
Interesting stuff. And they totally recapped the board.
-
1 hour ago, Wildstar said:reference to the "liz" project
Darn, there already was a Liz Project? That would have been the name of choice for my next hardware project
About the C, MOS indeed had 6502 A/B/C which meant 1/2/4MHZ. The 6502C version never really got any foothold. With "our" 6502C, i.e. Sally, C means Custom. It's a 6502B with extra transistors for the /HALT line. The early Atari 400/800 models used a 6502B, with the HALT circuitry external to the CPU.
-
1
-
-
Here they are pretty cheap, and no need for huge quantities. If I'm not mistaken (to lazy to lookup) this is the same store I bought the non-angled versions for Project Jenny.
Both 2x7 and 2x15 are available.
Edit: just checked, it is indeed the same store.
-
Tried different waveforms:
GENWAVEFORM .macro mem, label, x org :mem .def waveform:label = * ; SQUARE ::x dta $1f ::x dta $10 ; SAW ;::x*2 dta $1f-(#*16/(:x*2)) ; SINE ; dta sin($18, 7, :x*2) ; TRIANGLE ;::x dta $10+(#*16/(:x)) ;::x dta $1f-(#*16/(:x)) .def len_waveform:label = * - waveform:label .endmNote that this uses a 48 byte waveform, or less, down to 26 bytes. Replay rate is 975Hz (PAL). All maximum volume.
Square wave: sounds pretty good. Could also be used as a subwoofer channel.
Saw wave: similar, but you can still hear some aliasing.
Sine wave: horrible bass IMHO. Slightly higher, it still might be useful.
Triangle wave: see sine wave
main.s main-saw.xex main-sine.xex main-square.xex main-triangle.xex
-
1
-
1
-
-
Proof of concept with varying window sizes.
AUDF1 = $d200 AUDC1 = $d201 AUDCTL = $d208 WSYNC = $d40a VCOUNT = $d40b NMIEN = $d40e _frac = $e0 _cnt = $e1 GENWAVEFORM .macro mem, label, x org :mem .def waveform:label = * ::x dta $1f ::x dta $10 .def len_waveform:label = * - waveform:label ; should be 2*:x .endm PLAYWAVEFORM .macro x, int, frac _index = *+1 lda waveform:x :+16 sta WSYNC ; 8=1950Hz, 16=975Hz, PAL sta AUDC1 lda _frac add #:frac sta _frac lda _index adc #:int cmp #len_waveform:x bcc less_than sec sbc #len_waveform:x less_than sta _index .endm LOOPWAVEFORM .macro x, int, frac loopwave PLAYWAVEFORM :x, :int, :frac lda VCOUNT bne loopwave :+8 inc _cnt bpl loopwave lda #0 sta _cnt .endm ; 12 tones, 12-TET GENWAVEFORM $4000, 0, 24 GENWAVEFORM $4100, 1, 23 GENWAVEFORM $4200, 2, 22 GENWAVEFORM $4300, 3, 21 GENWAVEFORM $4400, 4, 20 GENWAVEFORM $4500, 5, 19 GENWAVEFORM $4600, 6, 18 GENWAVEFORM $4700, 7, 17 GENWAVEFORM $4800, 8, 16 GENWAVEFORM $4900, 9, 15 GENWAVEFORM $4a00, 10, 14 GENWAVEFORM $4b00, 11, 13 ; GENWAVEFORM $4c00, 12, 12 ; octave org $5000 main lda #0 sta _frac sta _cnt sta NMIEN sta AUDCTL sta AUDF1 LOOPWAVEFORM 0, 1, 0 LOOPWAVEFORM 1, 1, 0 LOOPWAVEFORM 2, 1, 0 LOOPWAVEFORM 3, 1, 0 LOOPWAVEFORM 4, 1, 0 LOOPWAVEFORM 5, 1, 0 LOOPWAVEFORM 6, 1, 0 LOOPWAVEFORM 7, 1, 0 LOOPWAVEFORM 8, 1, 0 LOOPWAVEFORM 9, 1, 0 LOOPWAVEFORM 10, 1, 0 LOOPWAVEFORM 11, 1, 0 LOOPWAVEFORM 0, 2, 0 LOOPWAVEFORM 1, 2, 0 LOOPWAVEFORM 2, 2, 0 LOOPWAVEFORM 3, 2, 0 LOOPWAVEFORM 4, 2, 0 LOOPWAVEFORM 5, 2, 0 LOOPWAVEFORM 6, 2, 0 LOOPWAVEFORM 7, 2, 0 LOOPWAVEFORM 8, 2, 0 LOOPWAVEFORM 9, 2, 0 LOOPWAVEFORM 10, 2, 0 LOOPWAVEFORM 11, 2, 0 LOOPWAVEFORM 0, 1, 0 jmp * run mainNote that this is by no means tuned to anything. It plays samples at 975Hz, and the intervals are all the twelve notes in an octave that work without fractions. Tuning means calculating compromises between window size and int.frac increments.
-
2
-
1
-
-
Do you measure under load (i.e. connected with the computer turned on) or just the unloaded output?
In any case, 5.82V sounds a bit high.
-
1
-
-
It could be nice to also create an Android/Linux or iOS version
-
I did some test, and without proper resampling on the Atari side, the round-robin 256 bytes at different speeds at such a low sample rate, simply doesn't work. It causes a LOT of aliasing. Code:
AUDF1 = $d200 AUDC1 = $d201 AUDCTL = $d208 IRQEN = $d20e WSYNC = $d40a NMIEN = $d40e _frac = $e0 org $4000 waveform :128 dta $1f :128 dta $10 main sei lda #0 sta _frac sta NMIEN sta IRQEN sta AUDCTL sta AUDF1 loop _index = *+1 lda waveform :16 sta WSYNC sta AUDC1 lda _frac clc adc #$00 ; frac increment sta _frac lda _index adc #$08 ; int increment sta _index jmp loop run mainIt only works with common dividers of the sample window. Try changing the integer increment, or add a fractional part, and you'll hear what I mean.
The cause is that you are basically doing a very crude resampling if you use an increment to "hop" through your sample window.
A solution is to use varying window sizes for each of the twelve notes per octave. Lower octaves can be achieved by stepping slower through the window, with half the increment/fraction/hop size.
Or, trigger an IRQ at AUDF frequency, step through one fixed window byte by byte, but that'll mean interrupts are fired all over the place, depending on the frequency of the tone played.
Edit: BTW, if you wonder, turning off DMACTL does not have any effect.
-
2
-
-
16 minutes ago, bfollowell said:Maybe I'm still missing something.
No, you are right. I missed/forgot that particular board that adds another bunch of resistors. As you say, redundant. And it even slightly decreases the response time
-
@rensoup how do you synchronize a 800Hz replay routine? Seems hard to me. There's a reason HARDbass is 1950Hz on PAL, without sacrificing an IRQ timer.
$ bc 312*50/8 1950.000000 312/8 39.000000 312*50/16 975.000000 312/16 19.500000 312*50/24 650.000000 312/24 13.000000Playing a sample once every 8 scanlines. 312 scanlines are exactly 39 times 8 scanlines.
Playing one sample every 16 scanlines, resulting in a 975Hz replay rate, does not fit in 312 scanlines. It's 19 and a half period.
Once every 24 scanlines fits again.
-
1
-
-
The resistors are current limiters, in case of shorts. All models have them on the motherboard, except for the 600XL. They have a small PCB insert which has the resistors on it, before it goes to the mylar.
-
-
1 hour ago, bfollowell said:I was seriously considering that but, depending on how often I remove the keyboard, and how much flexing there is on those wires, I could see them breaking off of the pin header.
True, but that's much easier to fix again.
Or wait for this to be tested and working
That'll be just flat cables going to the motherboard.
I'm also considering a small adapter board similar to @tf_hh 's KEYCON project:
https://atariage.com/forums/topic/270312-new-tiny-project-keycon-keyboard-adapter-for-xlxe/
A very small 0.8mm PCB with a pin header, for those who can't or won't desolder the keyboard edge connector.

Atari 1400XL Lives!
in Atari 8-Bit Computers
Posted
Now that sounds like a cool trick. Let us know how it works out