Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disc-Press not implemented or mappable as a button #16

Closed
KremlingKuthroat19 opened this issue Jun 2, 2022 · 9 comments
Closed

Disc-Press not implemented or mappable as a button #16

KremlingKuthroat19 opened this issue Jun 2, 2022 · 9 comments

Comments

@KremlingKuthroat19
Copy link

One of the unique controller features of the Intellivison is the ability to use the disc as a pressable button, similar to modern L3 and R3 buttons. I don't know how many games necessarily use this button, but one game in particular that uses it is Mountain Madness! Super Pro Skiing. The disc press button in this game allows you to preview the map before you hit the slopes.

I tried every button to do this, but to no avail. I also went through the button mapping prompts and there doesn't appear to be a mappable disc press as a button. It's the only missing button in the core currently afaik.

Can this disc press button please be added?

@KremlingKuthroat19 KremlingKuthroat19 changed the title Disc-Press not implemented as a button Disc-Press not implemented or mappable as a button Jun 2, 2022
@KremlingKuthroat19
Copy link
Author

Another example of the disc press button being needed is Atlantis. After choosing your settings, the game prompts you to press the disc button, but you can't press the disc button bc it's not mappable. The game will eventually proceed after about 10-30 seconds, but the point remains.

@zachmayer
Copy link

This core hasn't had any commits in ~1 year. I wonder how hard it would be to make a PR to try to fix this

@zachmayer
Copy link

Anyways I have an ultimate pc interface v2 and all the buttons work (including all 16 directions) but the "disk press" does not.

@zachmayer
Copy link

Maybe somewhere in here:

Intv_MiSTer/rtl/intv/intv.vhd

Lines 978 to 1044 in 92f17fb

BEGIN
-- PORT A
io_v:=dirtable(to_integer(unsigned(joystick_0(3 DOWNTO 0)))); -- Direction cross
io_v:=io_v OR dir16(to_integer((unsigned(joystick_analog_0( 7 DOWNTO 4)) + x"8") &
(unsigned(joystick_analog_0(15 DOWNTO 12)) + x"8")));
io_v:=io_v OR ("10100000" AND sext(joystick_0( 4),8)); -- Action UP
io_v:=io_v OR ("01100000" AND sext(joystick_0( 5),8)); -- Action BL
io_v:=io_v OR ("11000000" AND sext(joystick_0( 6),8)); -- Action BR
io_v:=io_v OR ("10001000" AND sext(joystick_0( 7),8)); -- Clear
io_v:=io_v OR ("00101000" AND sext(joystick_0( 8),8)); -- Enter
io_v:=io_v OR ("01001000" AND sext(joystick_0( 9),8)); -- 0
io_v:=io_v OR ("10000001" AND sext(joystick_0(10),8)); -- 1
io_v:=io_v OR ("01000001" AND sext(joystick_0(11),8)); -- 2
io_v:=io_v OR ("00100001" AND sext(joystick_0(12),8)); -- 3
io_v:=io_v OR ("10000010" AND sext(joystick_0(13),8)); -- 4
io_v:=io_v OR ("01000010" AND sext(joystick_0(14),8)); -- 5
io_v:=io_v OR ("00100010" AND sext(joystick_0(15),8)); -- 6
io_v:=io_v OR ("10000100" AND sext(joystick_0(16),8)); -- 7
io_v:=io_v OR ("01000100" AND sext(joystick_0(17),8)); -- 8
io_v:=io_v OR ("00100100" AND sext(joystick_0(18),8)); -- 9
t_v:=key_up & key_down & key_left & key_right;
IF ecs='0' THEN
io_v:=io_v OR dirtable(to_integer(unsigned(t_v)));
io_v:=io_v OR ("10100000" AND sext(key_lctrl,8)); -- Action UP
io_v:=io_v OR ("10100000" AND sext(key_rctrl,8)); -- Action UP
io_v:=io_v OR ("01100000" AND sext(key_lshift,8)); -- Action BL
io_v:=io_v OR ("11000000" AND sext(key_rshift,8)); -- Action BR
io_v:=io_v OR ("10001000" AND sext(key_space,8)); -- Clear
io_v:=io_v OR ("00101000" AND sext(key_enter,8)); -- Enter
io_v:=io_v OR ("01001000" AND sext(key_0,8)); -- 0
io_v:=io_v OR ("10000001" AND sext(key_1,8)); -- 1
io_v:=io_v OR ("01000001" AND sext(key_2,8)); -- 2
io_v:=io_v OR ("00100001" AND sext(key_3,8)); -- 3
io_v:=io_v OR ("10000010" AND sext(key_4,8)); -- 4
io_v:=io_v OR ("01000010" AND sext(key_5,8)); -- 5
io_v:=io_v OR ("00100010" AND sext(key_6,8)); -- 6
io_v:=io_v OR ("10000100" AND sext(key_7,8)); -- 7
io_v:=io_v OR ("01000100" AND sext(key_8,8)); -- 8
io_v:=io_v OR ("00100100" AND sext(key_9,8)); -- 9
END IF;
---------------------------------
-- PORT B
io2_v:=dirtable(to_integer(unsigned(joystick_1(3 DOWNTO 0))));
io2_v:=io2_v OR dir16(to_integer((unsigned(joystick_analog_1( 7 DOWNTO 4)) + x"8") &
(unsigned(joystick_analog_1(15 DOWNTO 12)) + x"8")));
io2_v:=io2_v OR ("10100000" AND sext(joystick_1( 4),8)); -- Action UP
io2_v:=io2_v OR ("01100000" AND sext(joystick_1( 5),8)); -- Action BL
io2_v:=io2_v OR ("11000000" AND sext(joystick_1( 6),8)); -- Action BR
io2_v:=io2_v OR ("10001000" AND sext(joystick_1( 7),8)); -- Clear
io2_v:=io2_v OR ("00101000" AND sext(joystick_1( 8),8)); -- Enter
io2_v:=io2_v OR ("01001000" AND sext(joystick_1( 9),8)); -- 0
io2_v:=io2_v OR ("10000001" AND sext(joystick_1(10),8)); -- 1
io2_v:=io2_v OR ("01000001" AND sext(joystick_1(11),8)); -- 2
io2_v:=io2_v OR ("00100001" AND sext(joystick_1(12),8)); -- 3
io2_v:=io2_v OR ("10000010" AND sext(joystick_1(13),8)); -- 4
io2_v:=io2_v OR ("01000010" AND sext(joystick_1(14),8)); -- 5
io2_v:=io2_v OR ("00100010" AND sext(joystick_1(15),8)); -- 6
io2_v:=io2_v OR ("10000100" AND sext(joystick_1(16),8)); -- 7
io2_v:=io2_v OR ("01000100" AND sext(joystick_1(17),8)); -- 8
io2_v:=io2_v OR ("00100100" AND sext(joystick_1(18),8)); -- 9
pa_i<=NOT mux(swap,io_v,io2_v);
pb_i<=NOT mux(swap,io2_v,io_v);
END PROCESS;

@zachmayer
Copy link

@KremlingKuthroat19 I am using the ultimate PC interface V2 with the intellivision flashback controllers. Start for atlantis and course preview for mountain madness totally work!

You might need to make sure all 16 directions are mapped

But I think you can close this issue

@Grabulosaure
Copy link
Member

Are you sure that the "disc press" input exists?
The two games mentioned don't actually need it.
I've tried to add an input that sets all the direction bits at once, but it doesn't seem to do anything in these games, nor it is detected by the "MTE201 Test Cartridge"
Finally, this combination isn't recognised by the JZINTV emulator, which is the reference Intellivision emulators (mapping.c).

The disc is handled both by the D-pad, which allows 8 directions, and by analog stick, which can generate all 16 directions.

@zachmayer
Copy link

@Grabulosaure yeah— you're correct. There is no special "disc press" on the intellvision.

Games that have a "press the disc" action are really just looking for any of the 16 directions from the disc. I have 2 flashback controllers and and ultimate PC interface, and after a bunch of work to get them setup properly I've confirmed that all 16 directions work, and that games with a "disc press" action like atlantis and skiing also work correct.

We can close this issue.

@KremlingKuthroat19
Copy link
Author

@zachmayer You know what you're totally right. I assumed that the disc press was its own button. I was confused bc on the game Mountain Madness! Super Pro Skiing the it asks you to "press the disc" to preview a course. I thought it meant that it had to be a mappable button, but it turns out if you enter "1-32" and press any direction on the disc then it previews the Mountain. My bad guys and thanks for clearing this up for me :)

I'm closing the ticket now since this seems to be resolved.

@zachmayer
Copy link

zachmayer commented Mar 19, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants