sorgelig / ZX_Spectrum-128K_MIST

ZX Spectrum 128K for MIST Board
GNU General Public License v2.0
31 stars 18 forks source link

+2A/+3 memory modes #4

Closed gyurco closed 7 years ago

gyurco commented 7 years ago

Here's an implementation of the +3 memory modes, with the 4x16k ROM and the special full RAM modes. Unfortunately PlusD is working only in 48k mode, TR-DOS works more or less in all modes. There is no .DSK support (upd765 disk controller), so the machine will be a plain +2A. I think the TR-DOS issues can be solved with just a ROM update (however I didn't find any appropriate ROM yet). Multiface 3 support is added, but without +3 DOS disk, it is not really useful yet. I did not include Genie in the Multiface 3 ROM, I think it is MF128 only.

sorgelig commented 7 years ago

Thanks for info, but when i was thinking what ZX versions to include in my core, i was evaluating +3A and found it useless without +3DOS emulating since almost all apps were distributed on disks. That's why i didn't include +3A support. Currently i'm working on new FPGA retro emulation platform which is much more powerful and will allow to shift some parts like disk system emulation to ARM CPU. I believe it will allow to create a better hybrid emulators when it will be ready.

gyurco commented 7 years ago

Thanks for the info, maybe I'll try to implement (=get from the Amstrad CPC core) the +3 disk drive. Actually this is an exercise project for me (it's my first encounter with Verilog), so no problem if you don't merge. Btw, I successfully loaded a +3 game (Project Stealth Fighter has a +2A/+3 version, with full 64k RAM mode support) from tape and from a TR-DOS disk (the TR-DOS conversion was done by me, to use it on a real +2A with DivIDE/esxdos). Your plans cannot be done on MIST? The cores with disk support are good enough, I think. Even the Amiga with a HDD is very usable. But I don't understand the inner details, yet, maybe the disk emulation is too ugly in its current form?

sorgelig commented 7 years ago

MiST is very good platform. I like it very much. But there is no room to grow.

harbaum commented 7 years ago

There cannot be too much FPGA systems. After all, cores are always being ported forth and back between them and i applause any effort to establish a new platform. And it's even better if it's open source ...

harbaum commented 7 years ago

Do you guys know this one: http://www.specnext.com/

sorgelig commented 7 years ago

This often pops up in my facebook page :) While i like ZX spectrum, i prefer to have other platforms compatibility as well. Currently specs aren't published and it's unknown how it's capable to create more powerful emulators. It may have specs of ZXUno which is hardly can be used for anything interesting.

I can tell what platform i'm working on. It's Terasic DE10-nano: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=1046

As you can see the price is pretty delicious with 4 times bigger FPGA and dual-core ARM 800MHz. Basically it can handle emulators from both worlds: FPGA and ARM(retropie).

For FPGA emulators it requires a small SDR SDRAM daughter board because DDR3 is not capable to squeeze into retro EDO DRAM timings. Currently i'm using SDRAM on proto-board with wires which is basically works, but cannot achieve >100MHz yet. I'm waiting for SDRAM PCB from OSHPark and i hope it will allow me to utilize a full SDRAM speed.

The project will be fully open source. Daughter board will be also published if it will pass tests.

Actually, FPGA on DE10-nano has 5.5Mb (it's almost 10 times more than on MiST) of FPGA RAM and most cores can be implemented without SDRAM at all. But i think SDRAM is very important for high-end emulators like Amiga. DE10-nano has HDMI. And FPGA with DDR3 is capable to handle an internal scaler using standard Altera Video and Image Processing cores (VIP). It's very universal scaler which is capable to handle any resolution and frame rates unlike external scalers. I didn't try yet Amiga's out of standard resolutions like 720i50 but i don't see why it can't be supported. I've built a linux for DE10 which loads in 2 seconds with MiST firmware ported to a Linux application. With Linux as a backend the board can get support of many USB devices like PS3/PS4 wireless controllers, Ethernet. Has support for exFAT (bye bye 4GB limitation). Board doesn't require firmware - everything is on SD card - easy to handle.

I didn't explore compatibility with Raspbery Pi from linux point of view, but i believe RetroPi can be easily ported since specs are pretty close to Raspberry Pi2. So, in the future dual-boot can be implemented and you will get more emulators like N64, SNES, etc...

It still needs a lot of work, so if anyone is willing to help may contact me. Project will be published when/if it will pass initial tests. Basically my first checkpoint is to port Minimig-AGA core. If it will work, then project will be considered as viable. So, help can make it happen sooner.

harbaum commented 7 years ago

Sounds very interesting. Thanks for the explanations.

gyurco commented 7 years ago

Ah, thanks for mentioning the Timex modes, I completely ignored them. However, I just did an OUT 255,6 (AFAIK it should set the hi-res mode), and found no problems with the scandoubler in 56MHz clk_sys. The mode is set, since there's a space between every char with the original ROM, and also the characters' width are halved. (so the original screen only covers half of the screen, as it should). Is there anything I can test to see if it works correctly?

sorgelig commented 7 years ago

try this app: https://mega.nz/#!1UwVGDzZ!RXi5-Ba5oOklB_lA2MQhNUpy0_D02y6fTqOEePJdvQ8

in 56mhz on highres mode in HQ2x characters will look coarser than they should.

sorgelig commented 7 years ago

Actually 56mhz is enough for scandoubler in highres mode. You just need to rewrite ce_pix4 generation which should be always 1 in highres mode.

gyurco commented 7 years ago

Yes, I see the problem now. The characters are ugly with HQ2x. I'll try to fix as you suggested.