Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Ultimax unleashed..
2019-11-21 10:59
andym00

Registered: Jun 2009
Posts: 44
Ultimax unleashed..

Well, someone did what I've been wanting to do for some time.. Driving VIC fetches from external memory, and stuffing register writes over the bus.. Hooray for Ultimax mode I guess :)

Always wanted to build something like this, but kudos to Laurent for acutally getting there..

https://www.youtube.com/watch?v=yy4Gr11EXHM

He's got a few videos up of it in action.. Nothing ultra crazy, but proof it's all working..
https://www.youtube.com/channel/UCDfSVxlHK9AJHPRCoGqDYZQ
 
... 43 posts hidden. Click here to view all posts....
 
2020-03-24 13:28
tlr

Registered: Sep 2003
Posts: 1723
Quote: a wave of a single channel has that resolution, and you can manipulate 1 sid register at a time at 1 mhz...

The SID is clocked at 1 MHz so the sample rate at the output is at most 1 MHz. This gives a theoretical maximum signal frequency of 500 KHz.
2020-03-24 16:40
Laurent

Registered: Apr 2004
Posts: 40
Speaking about the SID, if only we had a register that simply latches to a voice internal accumulator, with freq = 0 we'd have a trivial way to play 8 bits samples, and voice ADSR would be still available.
I assume back then they didn't think people would want to play PCM samples ?
2020-03-24 16:46
chatGPZ

Registered: Dec 2001
Posts: 11136
There is hardly any memory for it in the first place :)
2020-03-24 17:49
ChristopherJam

Registered: Aug 2004
Posts: 1380
Oh, oops. I missed that the "it" in Frantic's comment was SID. Please to ignore my NTSC remark /o\
2020-03-24 23:39
Comos

Registered: May 2004
Posts: 71
Isn't this a similar technique what SuperCPU actually does on the C64 bus?
2020-03-25 08:25
MagerValp

Registered: Dec 2001
Posts: 1059
Kinda but the SuperCPU does it on the CPU half of the cycle, while this cart does it on the VIC half.
2020-03-25 09:29
JackAsser

Registered: Jun 2002
Posts: 1990
Quote: Isn't this a similar technique what SuperCPU actually does on the C64 bus?

This is more similar to the 2Mhz mode on C128.
2020-03-25 09:32
Krill

Registered: Apr 2002
Posts: 2852
Internal 6510 is stalled most/all of the time by the DMA, isn't it?
2020-03-25 11:37
Laurent

Registered: Apr 2004
Posts: 40
The cart handles both phases of the cycle CPU & VIC, but unlike the SuperCPU or a FPGA-based CPU, the cart CPU cannot be synchronous to the clock and still be efficient.
The GPIOs are slow so the "c64 bus handler" loop cannot do anything too fancy. Writing or reading prepared data to/from the bus is fine, but not having actual code or CPU emulation there.
So the prepared data are altered in another core of the cart CPU, every frame. By prepared data, i mean a sort of "copper" for the CPU cycle and a "VIC feeder" for the VIC cycle.
Like Krill mentioned, for the copper to be allowed to read/write the bus, DMA must be turned ON (6510 stalled), and to handle data to the VIC, ULTIMAX mode must be ON with A15 low so that RAM is masked from VIC.
(In fact, i am not sure what role should be left to the c64's 6510 and RAM with this cartridge)

So far in all the test examples i have posted on youtube, the code that alters the copper & vic feeder structures and access flash is written in C, compiled for the cart's ARM core and is also mixed with the rest of the firmware.
I understand this is not viable for release, and ideally the cartridge would be supportable by VICE.
I'm working on some way for people to write their code and access the cart features via functions, like allocating memory in the cart, reading/writing flash, moving memory, doing simple logic/math operations on array of data (int & float32), then drawing lines, filling triangles, etc..

The question is what CPU(s) should be made available on the cart for the user ?
I have a simple non cycle-based 6510 emu that i have already used to play SID tunes without involving the C64's 6510 (then the copper updates the C64 SID registers).
But for the main demo/game code, i feel a more powerful CPU would be neat so the code could be written in C with 32bits support.
So I started using the Cortex M0 instruction set in thumb mode only, it quite simple to emulate this small CPU for an emulator, and it runs natively on the cart.

To write code, the user uses a .h and a symbol file for the functions, then uses GCC.
Well, at least that's my plan for now !
2020-03-25 12:39
chatGPZ

Registered: Dec 2001
Posts: 11136
i'd probably prefer some kind of fixed function pipeline that the C64 CPU can setup and use.... writing the payload in C for an ARM cpu just feels wrong :)
Previous - 1 | 2 | 3 | 4 | 5 | 6 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Frostbyte/Artline De..
LDX#40
d'Arc/Topaz Beerline
Mace/Xenon
hedning/G★P
zscs
Marvin
DeeKay/Crest
Twilight/Excess/Arcade
Guests online: 131
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Memento Mori  (9.6)
10 Bromance  (9.5)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Dawnfall V1.1  (9.5)
8 Quadrants  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Birth of a Flower  (9.5)
Top Groups
1 Nostalgia  (9.3)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Musicians
1 Vincenzo  (9.8)
2 Rob Hubbard  (9.7)
3 Stinsen  (9.7)
4 Jeroen Tel  (9.6)
5 Linus  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.213 sec.