mist-devel / c64

C64 core
12 stars 13 forks source link

Feature Request: Disable c1541 drive from OSD #17

Closed Maverick-Shark closed 2 months ago

Maverick-Shark commented 3 months ago

Hi,

Some Ocean/Imagine loaders do not allow 1541 drivers or freezer carts to be connected in order to load properly, as part of the copy protection.

An example is Green Beret tape, which displays "FOUND NO PERIPHERALS !" when LOAD starts, and if it detects c1541 drive connected to c64, when LOAD process is finished, it results in a black screen.

Could you please add a disable option for c1541 on OSD? Or enable c1541 only when disk is mounted, like MiSTer, c64.sv, line 234:

"P2O[58:57],Enable Drive #8,If Mounted,Always,Never;",

Thanks and best regards, Shark

gyurco commented 3 months ago

It can be done. I would assume 'FOUND NO PERIPHERALS' is the good case.

gyurco commented 3 months ago

Try the attached core please. The relevant option is in the System menu. c64.zip

Maverick-Shark commented 2 months ago

Hi,

Thanks for your work, but I don't have MiST. I have a Poseidon board with an QMTECH ep4cgx150.

My idea is to apply your changes on the c64 DeMistified core:

https://github.com/retrocrypta/c64_YoMe_Poseidon/tree/master

Kind regards, Shark

gyurco commented 2 months ago

I added the change to the repo already, you can use it. Also you can define DRIVE_N macro to a number of drives (1-4), it would be good to test that feature.

Maverick-Shark commented 2 months ago

Hi,

Sorry but I haven't found your last changes.

Which branch have you updated?

Last commit on master branch was on April 6th.

I've reviewed code and c64_mist entity has defined DRIVE_N as 1.

DRIVE_N : integer := 1;

But I don't understand this thing, I mean, I would want to disable the drive from the OSD. How could I define a macro [1..4] for DRIVE_N to do that?

Thanks and best regards, Shark

gyurco commented 2 months ago

Just define how many drives you want in the core. The GX150 could handle even 4, MiST/SiDi only 1. Then after compiling, you'll find what you want in the OSD.

Maverick-Shark commented 2 months ago

Hi, I think I've understood what you have wanted to tell me, adding MT1541 and ST1541 functions.

I will try to apply those changes.

Thanks a lot, Shark

Maverick-Shark commented 2 months ago

Hi @gyurco,

Sorry to bother you again. But I configured c64 core for Poseidon board applying your last commits (disk drives and 1541 sync) and now, c64 core doesn't starts. It's like a RAM or CIA issue on a real C64. Screen is showing artifacts, blinking and changing colors. But yes, now, if DRIVE_N = 2, OSD menu shows two drives and I can choose enable, if mounted and disable options. By default, drives are enable, could you configure the option by default 'if mounted'?

I tried DRIVE_N = 1, but it didn't solve it, same issue and I couldn't identify the issue.

I created a new branch with your changes, if you have time please, check them:

1541 branch

Thanks and best regards, Shark

gyurco commented 2 months ago

For me, not even the main branch works.

Maverick-Shark commented 2 months ago

MiST branch? Don't you know why?

gyurco commented 2 months ago

I don't know. I added a Poseidon-EP4CGX150 target to this repo, try compiling it.

Maverick-Shark commented 2 months ago

Hi @gyurco,

It works!!! <:o) <:o) <:o)

Now I'll compare it with my code.

The only thing that doesn't work is Tape sound. I've opened a new issue. Sorry!!!!

Thanks a lot for your help, Shark