MiSTer-devel / Amstrad_MiSTer

Amstrad CPC 6128 for MiSTer
26 stars 15 forks source link

Boot ROMs management. #25

Open renaudguerin opened 1 year ago

renaudguerin commented 1 year ago

Hello,

I'm new to MiSTeR but not to the Amstrad. Super happy to see the CPC in the list of cores, thank you for your work !

I have two UI requests :

I'm happy to help in any way if you don't have time but can point me in the right direction. I'm an experienced dev, I know nothing about VHDL/Verilog but maybe with the help of ChatGPT there can be miracles 😄

Thank you !

sorgelig commented 1 year ago

I've updated readme and renamed the rom.

From practical point of view 464 model is not useful as it cannot save. There is no way you can save into tape file. At the same time model 664 is pretty much the same where may be couple specific games won't run even if you choose to load from tape file. Probably there are patches to make them compatible with 664. This is why core offers 664 and 6128 as a full featured models. 464 still can be enabled through ROM loading.

Comparing with console's region is not correct as it exists there for compatibility purpose. Not all games are multi-region. MiSTer doesn't support national keyboards in emulated systems. So there is no benefit to enable such keyboard in Amstrad. It simply won't work correctly, keys won't match the real keyboard connected to MiSTer. Generally speaking You don't need to fiddle with roms. Provided ROM is already enough to load any game and even do some fun in Basic. However, MiSTer already supports persistent ROM loading. I need to update the core a little so it will be able to remember main and extension ROMs and will reload it on the next boot. In this case you may prepare your customized ROM version and choose it from OSD.

You also need to understand, MiSTer is not like emulator on desktop OS. It has its own pros and cons.

renaudguerin commented 1 year ago

Thank you Alexey for taking the time to reply and explain, very appreciated. I like this community already !

I've updated readme and renamed the rom.

Perfect, thank you for the quick fix !

From practical point of view 464 model is not useful as it cannot save. There is no way you can save into tape file.

Maybe one day who knows ? :) The ZX Spectrum core supports this, correct ? I suppose it's the reason the MiSTer MultiSystem board has a tape connector

At the same time model 664 is pretty much the same where may be couple specific games won't run even if you choose to load from tape file. Probably there are patches to make them compatible with 664. This is why core offers 664 and 6128 as a full featured models. 464 still can be enabled through ROM loading.

From a purely gaming perspective, you are right. It's probably best to show beginners the 6128 by default. It can do everything and is very compatible (well, not Plus features but that's another story...)

But, the 464 does have some real differences like BASIC 1.0 which has some limitations compared to BASIC 1.1 in the 664/6128 (missing commands like FILL, and some direct assignments are not possible).

A developer might want to check their program for 464 BASIC compatibility. Or simply, somebody may just want the 464 ROM's boot screen for nostalgia reasons. After all, you have brand selection (Amstrad/Schneider) in the OSD probably for this reason, and it's even less useful :)

Comparing with console's region is not correct as it exists there for compatibility purpose. Not all games are multi-region. MiSTer doesn't support national keyboards in emulated systems. So there is no benefit to enable such keyboard in Amstrad. It simply won't work correctly, keys won't match the real keyboard connected to MiSTer.

Maybe I wasn't clear : I'm not asking for character-based logical key mapping in the core or in MiSTer (that would be nice, but it's probably more of a feature for emulators). Physical key mapping as it is implemented currently is enough.

I know that PC keyboards don't match keyboards in vintage emulated systems 100%, but this is also true for UK/US keyboards and the Amstrad UK ROM. I have a French PC keyboard and if I load the French 6128 ROM the mapping is mostly correct (at least, it's not worse than UK keyboard -> Amstrad UK ROM) and of course much better than FR->UK.

Also, I'm sure you know this but the national ROMs in the Amstrad don't just have a different physical key -> character mapping. There are differences in the character font. I think the Spanish ROM has the character for the old Spanish currency pesetas instead of "£". In the French ROM, the "|" character is "ù" instead (same character id, just different in the font). So, for example you type "ùCPM" instead of "|CPM". It also means that BASIC games from France (which was maybe the largest CPC market with 1 million units) will wrongly display "|" instead of the letter "ù" in a text, if they are run on an English ROM.

So in my opinion, these ROMs represent different flavours of the system with real differences, and they should be supported at the same level. But, I am new here and I don't know how things are typically done in MiSTer, so sorry if I'm talking too much :) I need to read about boot extensions because I don't understand this yet.

Generally speaking You don't need to fiddle with roms. Provided ROM is already enough to load any game and even do some fun in Basic. However, MiSTer already supports persistent ROM loading. I need to update the core a little so it will be able to remember main and extension ROMs and will reload it on the next boot. In this case you may prepare your customized ROM version and choose it from OSD.

That would be great ! Like Kickstart in MiniMig.

You also need to understand, MiSTer is not like emulator on desktop OS. It has its own pros and cons.

Yes sure. But I love what I'm seeing in MiSTer so far !

renaudguerin commented 1 year ago

By the way, slightly off topic but in case you missed it there is a new incredibly detailed technical doc about the CRTC, written by the guy who invented the CRTC numbers (CRTC0, CRTC1 etc). There is a test suite here and here for emulators.

And in case you or anybody who reads this wants to add Plus / GX4000 support one day, probably the best implementation right now is in CPCEC. The best testing for it is probably when you can run this demo (by the same guy as the CRTC book !)

sorgelig commented 1 year ago

None of cores support tape writing. Of course cores can produce sound of tape over the audio output, so you can record it and convert by some utility into tape file. But i don't count it as "support for tape write" :)

sorgelig commented 1 year ago

I've added changes into core and Main. So now it's possible to create a special romset and select it from extension. It will be remembered across boots. Honestly, after all these changes i'm not sure if it really better than old method. I think switching to 464 is more a temporary mode than permanent. Probably you may create a ROM for 664 using old Basic and still use the disk.