SNK Ikari Warriors Arcade Core
Re: SNK Ikari Warriors Arcade Core
After removing all the connections for Player 1 and Player 2 gun directional control I only ever selected P1 LS-30 SNAC in the core menu and the game would not coin up but the shorting of player 2's LEFT input to GND would coin and start the game for player 1
-
- Core Developer
- Posts: 90
- Joined: Mon May 25, 2020 1:20 pm
- Has thanked: 2 times
- Been thanked: 47 times
Re: SNK Ikari Warriors Arcade Core
the resistors connected to 3.3V are called Pull-Up resistors sre their function is to hold the input to a well known value (in this case 3.3v or logic 1) when the circuit is open (the buttom or switch is not pressed). When you press the button you close the circuit conecting it to GND and you get a 0v voltage or logic 0 value in the STM32 port pin, this is called reverse logic because you get low logic value when you press the button or close the switch. The resistors that are connected to the caps make it a debounce circuit to smooth out the spikes that can occur when you close/open a mechanical electric switch.
These last ones work together with an internal device of the STM32 that is in each one of the IO pins called a Schmitt trigger that makes a clean digital value of 0 or 1 be obtained from the input value that can contain high frequency oscillations. . Since the schematic for the original arcade board uses something like this, this is what I tried to repkicar on my adapter. Since I wanted to simplify the design and try new things for the rest of the buttons, I didn't use the RC debounce network and only used the Schmitt trigger for the debounce (which would not be correct at all), but I compensated by using high quality switches that in theory generate less noise) and activate the internal pull-up resistors of the IO pins. Conclusion: the circuit works correctly as I have designed it, but the most correct thing would be to apply the same circuit of resistors and debounce capacitors of the LS-30 harness to the rest of the inputs (this would entail making some change to the STM32 code).
These last ones work together with an internal device of the STM32 that is in each one of the IO pins called a Schmitt trigger that makes a clean digital value of 0 or 1 be obtained from the input value that can contain high frequency oscillations. . Since the schematic for the original arcade board uses something like this, this is what I tried to repkicar on my adapter. Since I wanted to simplify the design and try new things for the rest of the buttons, I didn't use the RC debounce network and only used the Schmitt trigger for the debounce (which would not be correct at all), but I compensated by using high quality switches that in theory generate less noise) and activate the internal pull-up resistors of the IO pins. Conclusion: the circuit works correctly as I have designed it, but the most correct thing would be to apply the same circuit of resistors and debounce capacitors of the LS-30 harness to the rest of the inputs (this would entail making some change to the STM32 code).
Re: SNK Ikari Warriors Arcade Core
I now understand how you implemented the circuit overall from reading the above.
You have used the STM32's internal pull up resistors for the joystick movement and buttons so in theory as long as the coin, start inputs etc. are grounded they should produce the desired result as those inputs are implemented by the STM32 internally, the STM32 then sends these signal inputs to the Ikari Warrior core.
This at the moment is not working correctly with my adapter so I need to figure out why the STM32 is not reading these inputs correctly, as you have stated above there are no pull up resistors involved in the direction and button inputs, all these inputs are handled internally by the STM32.
I will have to start from the beginning again and just connect Player 1 control inputs one by one and see if I can figure out where the issue is.
I am waiting on some more veroboard so I can build a new one as I don't really want to destroy the one I've already made if it turns out to be something simple that I may have done wrong.
You have used the STM32's internal pull up resistors for the joystick movement and buttons so in theory as long as the coin, start inputs etc. are grounded they should produce the desired result as those inputs are implemented by the STM32 internally, the STM32 then sends these signal inputs to the Ikari Warrior core.
This at the moment is not working correctly with my adapter so I need to figure out why the STM32 is not reading these inputs correctly, as you have stated above there are no pull up resistors involved in the direction and button inputs, all these inputs are handled internally by the STM32.
I will have to start from the beginning again and just connect Player 1 control inputs one by one and see if I can figure out where the issue is.
I am waiting on some more veroboard so I can build a new one as I don't really want to destroy the one I've already made if it turns out to be something simple that I may have done wrong.
-
- Posts: 109
- Joined: Wed May 27, 2020 11:33 pm
- Has thanked: 101 times
- Been thanked: 15 times
Re: SNK Ikari Warriors Arcade Core
If you guys hurry, this guy is selling two nice LS30s AND a Victory Road PCB for a total of $200.
https://forums.arcade-museum.com/thread ... ks.510499/
That price is worth just the PCB or sticks IMO!
https://forums.arcade-museum.com/thread ... ks.510499/
That price is worth just the PCB or sticks IMO!
Re: SNK Ikari Warriors Arcade Core
Hi again, I have been reading through your code (LS30_READ.ino) to try to understand how you programmed the STM32 and looking at some of your code I noticed what seems like missing code for Player 1 inputs.
I am no programmer but the lines of code I commented in bold just didn't look correct.
void setup() {
//Free PA11, PA12 from USB Serial port.
Serial.end();
//PLAYER1 control set: port A pins 0,1,2,3,4,5,6,7,8,9,10,11
//Setup port A[11:0] as input at max speed.
//direct port manipulation to setup pins.
GPIOA->CRL = (GPIOA->CRL & 0x00000000) | 0x88888888; <- Player 1 GPIOA IS NOT commented out and therefore will be included in program compile (looks correct)
GPIOA->CRH = (GPIOA->CRH & 0xffff0000) | 0x00008888;
GPIOA->ODR = (GPIOA->ODR & 0xf000) | 0x0CFC; //input for pins 0,1,8,9 input pull-up for pins 2,3,4,5,6,7,10,11
<- No set up of Player 1 inputs have been placed here?, i.e. pinMode(PA0,INPUT_PULLUP); pinMode(PA1,INPUT_PULLUP); pinMode(PA2,INPUT_PULLUP); ...etc.
//PLAYER2 control set: port B pins 4,5,6,7,8,9,10,11,12,13,14,15
//direct port manipulation to setup pins.
// GPIOB->CRL = (GPIOB->CRL & 0x0000ffff) | 0x88880000; <- Player 2 GPIOB IS commented out and therefore will not be included in the program compile (does not seem correct?)
// GPIOB->CRH = (GPIOB->CRH & 0x00000000) | 0x88888888;
// GPIOB->ODR = (GPIOB->ODR & 0x000f) | 0xCFC0; //input for pins 4,5,12,13 input pull-up for pins 6,7,8,9,10,11,14,15
//Arduino way to setup pins.
pinMode(PB4,INPUT_PULLUP); <- Setting up inputs for Player 2
pinMode(PB5,INPUT_PULLUP);
pinMode(PB6,INPUT_PULLUP);
pinMode(PB7,INPUT_PULLUP);
pinMode(PB8,INPUT_PULLUP);
pinMode(PB9,INPUT_PULLUP);
pinMode(PB10,INPUT_PULLUP);
pinMode(PB11,INPUT_PULLUP);
pinMode(PB12,INPUT_PULLUP);
pinMode(PB13,INPUT_PULLUP);
pinMode(PB14,INPUT_PULLUP);
pinMode(PB15,INPUT_PULLUP);
I changed your program to read as follows (changes in BOLD):-
//PLAYER1 control set: port A pins 0,1,2,3,4,5,6,7,8,9,10,11
//Setup port A[11:0] as input at max speed.
//direct port manipulation to setup pins.
GPIOA->CRL = (GPIOA->CRL & 0x00000000) | 0x88888888;
GPIOA->CRH = (GPIOA->CRH & 0xffff0000) | 0x00008888;
GPIOA->ODR = (GPIOA->ODR & 0xf000) | 0x0CFC; //input for pins 0,1,8,9 input pull-up for pins 2,3,4,5,6,7,10,11
//Arduino way to setup pins.
pinMode(PA0,INPUT_PULLUP); <- Setting up inputs for Player 1
pinMode(PA1,INPUT_PULLUP);
pinMode(PA2,INPUT_PULLUP);
pinMode(PA3,INPUT_PULLUP);
pinMode(PA4,INPUT_PULLUP);
pinMode(PA5,INPUT_PULLUP);
pinMode(PA6,INPUT_PULLUP);
pinMode(PA7,INPUT_PULLUP);
pinMode(PA8,INPUT_PULLUP);
pinMode(PA9,INPUT_PULLUP);
pinMode(PA10,INPUT_PULLUP);
pinMode(PA11,INPUT_PULLUP);
//PLAYER2 control set: port B pins 4,5,6,7,8,9,10,11,12,13,14,15
//direct port manipulation to setup pins.
GPIOB->CRL = (GPIOB->CRL & 0x0000ffff) | 0x88880000; <-uncommented GPIOB so it is now included in the program compile
GPIOB->CRH = (GPIOB->CRH & 0x00000000) | 0x88888888; <-same as above
GPIOB->ODR = (GPIOB->ODR & 0x000f) | 0xCFC0; //input for pins 4,5,12,13 input pull-up for pins 6,7,8,9,10,11,14,15 <- same as above
//Arduino way to setup pins.
pinMode(PB4,INPUT_PULLUP);
pinMode(PB5,INPUT_PULLUP);
pinMode(PB6,INPUT_PULLUP);
pinMode(PB7,INPUT_PULLUP);
pinMode(PB8,INPUT_PULLUP);
pinMode(PB9,INPUT_PULLUP);
pinMode(PB10,INPUT_PULLUP);
pinMode(PB11,INPUT_PULLUP);
pinMode(PB12,INPUT_PULLUP);
pinMode(PB13,INPUT_PULLUP);
pinMode(PB14,INPUT_PULLUP);
pinMode(PB15,INPUT_PULLUP);
This stopped the the NATIVE LS-30 ADAPTER:ONLY P2 enabled option from crashing the game although didn't fix the coining up of the game in Player 1 mode.
Now If I select NATIVE LS-30 ADAPTER:ONLY P1 and plug my controller into Player 2's controller header on the SNAC adapter then ground Player 2 (RIGHT) this coins the game up normally then if I ground Player 2 (LEFT) then the game starts normally. I got the Ikari Warrior to move in game but it was very jerky movement and very slow.
I also noticed this time around that each time the direction controls were grounded I also got a green LED flash on the STM32 signalling that it was receiving an input on one of its pins.
The thing I did notice is the only input that was not making the LED flash was A2 again which as I suspected maybe a faulty input as I had previously performed a resistance test to GND and there was no reading showing.
I have ordered a new STM32 as they are cheap to buy so at at least I can rule that out as causing some or all of my issues.
I am no programmer but the lines of code I commented in bold just didn't look correct.
void setup() {
//Free PA11, PA12 from USB Serial port.
Serial.end();
//PLAYER1 control set: port A pins 0,1,2,3,4,5,6,7,8,9,10,11
//Setup port A[11:0] as input at max speed.
//direct port manipulation to setup pins.
GPIOA->CRL = (GPIOA->CRL & 0x00000000) | 0x88888888; <- Player 1 GPIOA IS NOT commented out and therefore will be included in program compile (looks correct)
GPIOA->CRH = (GPIOA->CRH & 0xffff0000) | 0x00008888;
GPIOA->ODR = (GPIOA->ODR & 0xf000) | 0x0CFC; //input for pins 0,1,8,9 input pull-up for pins 2,3,4,5,6,7,10,11
<- No set up of Player 1 inputs have been placed here?, i.e. pinMode(PA0,INPUT_PULLUP); pinMode(PA1,INPUT_PULLUP); pinMode(PA2,INPUT_PULLUP); ...etc.
//PLAYER2 control set: port B pins 4,5,6,7,8,9,10,11,12,13,14,15
//direct port manipulation to setup pins.
// GPIOB->CRL = (GPIOB->CRL & 0x0000ffff) | 0x88880000; <- Player 2 GPIOB IS commented out and therefore will not be included in the program compile (does not seem correct?)
// GPIOB->CRH = (GPIOB->CRH & 0x00000000) | 0x88888888;
// GPIOB->ODR = (GPIOB->ODR & 0x000f) | 0xCFC0; //input for pins 4,5,12,13 input pull-up for pins 6,7,8,9,10,11,14,15
//Arduino way to setup pins.
pinMode(PB4,INPUT_PULLUP); <- Setting up inputs for Player 2
pinMode(PB5,INPUT_PULLUP);
pinMode(PB6,INPUT_PULLUP);
pinMode(PB7,INPUT_PULLUP);
pinMode(PB8,INPUT_PULLUP);
pinMode(PB9,INPUT_PULLUP);
pinMode(PB10,INPUT_PULLUP);
pinMode(PB11,INPUT_PULLUP);
pinMode(PB12,INPUT_PULLUP);
pinMode(PB13,INPUT_PULLUP);
pinMode(PB14,INPUT_PULLUP);
pinMode(PB15,INPUT_PULLUP);
I changed your program to read as follows (changes in BOLD):-
//PLAYER1 control set: port A pins 0,1,2,3,4,5,6,7,8,9,10,11
//Setup port A[11:0] as input at max speed.
//direct port manipulation to setup pins.
GPIOA->CRL = (GPIOA->CRL & 0x00000000) | 0x88888888;
GPIOA->CRH = (GPIOA->CRH & 0xffff0000) | 0x00008888;
GPIOA->ODR = (GPIOA->ODR & 0xf000) | 0x0CFC; //input for pins 0,1,8,9 input pull-up for pins 2,3,4,5,6,7,10,11
//Arduino way to setup pins.
pinMode(PA0,INPUT_PULLUP); <- Setting up inputs for Player 1
pinMode(PA1,INPUT_PULLUP);
pinMode(PA2,INPUT_PULLUP);
pinMode(PA3,INPUT_PULLUP);
pinMode(PA4,INPUT_PULLUP);
pinMode(PA5,INPUT_PULLUP);
pinMode(PA6,INPUT_PULLUP);
pinMode(PA7,INPUT_PULLUP);
pinMode(PA8,INPUT_PULLUP);
pinMode(PA9,INPUT_PULLUP);
pinMode(PA10,INPUT_PULLUP);
pinMode(PA11,INPUT_PULLUP);
//PLAYER2 control set: port B pins 4,5,6,7,8,9,10,11,12,13,14,15
//direct port manipulation to setup pins.
GPIOB->CRL = (GPIOB->CRL & 0x0000ffff) | 0x88880000; <-uncommented GPIOB so it is now included in the program compile
GPIOB->CRH = (GPIOB->CRH & 0x00000000) | 0x88888888; <-same as above
GPIOB->ODR = (GPIOB->ODR & 0x000f) | 0xCFC0; //input for pins 4,5,12,13 input pull-up for pins 6,7,8,9,10,11,14,15 <- same as above
//Arduino way to setup pins.
pinMode(PB4,INPUT_PULLUP);
pinMode(PB5,INPUT_PULLUP);
pinMode(PB6,INPUT_PULLUP);
pinMode(PB7,INPUT_PULLUP);
pinMode(PB8,INPUT_PULLUP);
pinMode(PB9,INPUT_PULLUP);
pinMode(PB10,INPUT_PULLUP);
pinMode(PB11,INPUT_PULLUP);
pinMode(PB12,INPUT_PULLUP);
pinMode(PB13,INPUT_PULLUP);
pinMode(PB14,INPUT_PULLUP);
pinMode(PB15,INPUT_PULLUP);
This stopped the the NATIVE LS-30 ADAPTER:ONLY P2 enabled option from crashing the game although didn't fix the coining up of the game in Player 1 mode.
Now If I select NATIVE LS-30 ADAPTER:ONLY P1 and plug my controller into Player 2's controller header on the SNAC adapter then ground Player 2 (RIGHT) this coins the game up normally then if I ground Player 2 (LEFT) then the game starts normally. I got the Ikari Warrior to move in game but it was very jerky movement and very slow.
I also noticed this time around that each time the direction controls were grounded I also got a green LED flash on the STM32 signalling that it was receiving an input on one of its pins.
The thing I did notice is the only input that was not making the LED flash was A2 again which as I suspected maybe a faulty input as I had previously performed a resistance test to GND and there was no reading showing.
I have ordered a new STM32 as they are cheap to buy so at at least I can rule that out as causing some or all of my issues.
Re: SNK Ikari Warriors Arcade Core
So in my final attempt to get this working I purchased a new STM32 which is a slightly different model to the one I previously purchased this is a STMF103C8T6 exactly as per your circuit diagram (the last STM32 I had was STM103C6T6)
I'll run you through all the steps I took in order to try to get your SNAC adapter working so we can rule out any other variables like bad soldering, broken, shorted or incorrect wiring preventing the SNAC adapter from working.
First I checked pin A2 on the new STM32 and sure enough I got a resistance reading to GND so was happy that my assumption of the other STM32 being faulty on this particular pin was probably correct.
Next I removed all pins on my stacked turned pin socket so that only the following pins would now be left connected between my SNAC board connections and the new STM32.
As per image image below only the USB 3.0 connections were left connected.
USB PIN 1 (+5v PWR) - STM (5v Pin 18)
USB PIN 2 (D-) - STM Pin C15
USB PIN 3 (D+) - STM Pin C14
USB PIN 4 (GND) - STM (G Pin 19)
USB PIN 8 (TX-) - STM Pin C13
NOTE: There are no grounds connected to any controls either rotational or directional.
I next loaded your unmodified LS-30_READ.ino file into Arduino then selected board: "Generic STM32F1 series" then Board Part Number: "Generic F103C8Tx" and proceeded to upload the .ino file to the STM32.
After successful confirmation of the upload I then soldered directly a push button between A10 and GND pin 40 on the STM32 to ensure I had one good single connection to be able to coin up the game for Player 1.
I booted Mister up and there was only the RED led showing lit up on the STM32 module at this point.
I next loaded the Ikari Warriors core - now the GREEN led is permanently lit on the STM32
I pressed F12 to bring up menu and selected NATIVE LS-30 ADAPTER:ONLYP1 then selected RESET AND CLOSE OSD
I then pressed my soldered button on the STM32 which grounds the A10 (coin) hoping to be able to coin the game up but the game does not coin up.
Hopefully from the above you may be able to figure out what may be the issue as now I only had one coin connection, 5x USB 3.0 connections for power and data transfer between the STM32 and Mister and that is it, there are no other connections to the STM32.
I'll run you through all the steps I took in order to try to get your SNAC adapter working so we can rule out any other variables like bad soldering, broken, shorted or incorrect wiring preventing the SNAC adapter from working.
First I checked pin A2 on the new STM32 and sure enough I got a resistance reading to GND so was happy that my assumption of the other STM32 being faulty on this particular pin was probably correct.
Next I removed all pins on my stacked turned pin socket so that only the following pins would now be left connected between my SNAC board connections and the new STM32.
As per image image below only the USB 3.0 connections were left connected.
USB PIN 1 (+5v PWR) - STM (5v Pin 18)
USB PIN 2 (D-) - STM Pin C15
USB PIN 3 (D+) - STM Pin C14
USB PIN 4 (GND) - STM (G Pin 19)
USB PIN 8 (TX-) - STM Pin C13
NOTE: There are no grounds connected to any controls either rotational or directional.
I next loaded your unmodified LS-30_READ.ino file into Arduino then selected board: "Generic STM32F1 series" then Board Part Number: "Generic F103C8Tx" and proceeded to upload the .ino file to the STM32.
After successful confirmation of the upload I then soldered directly a push button between A10 and GND pin 40 on the STM32 to ensure I had one good single connection to be able to coin up the game for Player 1.
I booted Mister up and there was only the RED led showing lit up on the STM32 module at this point.
I next loaded the Ikari Warriors core - now the GREEN led is permanently lit on the STM32
I pressed F12 to bring up menu and selected NATIVE LS-30 ADAPTER:ONLYP1 then selected RESET AND CLOSE OSD
I then pressed my soldered button on the STM32 which grounds the A10 (coin) hoping to be able to coin the game up but the game does not coin up.
Hopefully from the above you may be able to figure out what may be the issue as now I only had one coin connection, 5x USB 3.0 connections for power and data transfer between the STM32 and Mister and that is it, there are no other connections to the STM32.
-
- Core Developer
- Posts: 90
- Joined: Mon May 25, 2020 1:20 pm
- Has thanked: 2 times
- Been thanked: 47 times
Re: SNK Ikari Warriors Arcade Core
This will fail because the core expects to receive correct (consistent) information from the SNAC adapter. If you only connect a pushbutton to an input and don't connect the LS-30 harness, or at least include the pull-up resistors (external or internal) you will read garbage from the IO pins (random and meaningless data) and this will surely interfere with the logic of the game code, although it may not seem like it, this is a reason why the core often crashed until I debugged the operation of the code that runs on the STM32.
-
- Core Developer
- Posts: 90
- Joined: Mon May 25, 2020 1:20 pm
- Has thanked: 2 times
- Been thanked: 47 times
Re: SNK Ikari Warriors Arcade Core
You should be one method to setup GPIO pins of port B, not enable both methods at the same time or odd things could occurr. Remember, you have to follow a methodology, this means that you should not introduce more than one change at a time each time you want to try something, or you will never be sure what is failing, because each time you introduce more factors than they can cause failures instead of limiting them.
Re: SNK Ikari Warriors Arcade Core
Obviously I was trying to eliminate all my issues by going back to basics but not fully understanding how you implemented the programming interaction between the STM32 and the core.
So from your last comment posted today you are effectively saying that all connections should be connected regardless of whether the input is activated?.
Surely the push buttons do not have to be connected as these button presses would only be read by the STM32 when a pin is grounded so the core would be waiting for these inputs to be activated but should not crash the game as these are open circuits until a button is pressed?.
I think from what you are saying your main concern is that the core is actually constantly try to read an input from the rotational inputs 1-13 so it can determine where the Ikari Warriors current gun position is at all times so will crash if these connections providing a resistive/pull down are not present?.
I mentioned that the purple wire Pin 7 (GND) on the joystick was re-ordered to Pin 1 on the PCB side so should I start again concentrating on setting up Player 1 controls only ensuring USB 3.0 connections, Player one directional and rotational inputs are connected, only this time rewiring the rotational inputs as per your hand diagram above and see if this works?.
Re: SNK Ikari Warriors Arcade Core
Making reference to your hand drawn circuit diagram I have edited the original SNAC circuit diagram for when Pin 7 gets re-ordered to Pin 1 on connecter header of the Ikari Board.
Hopefully this makes it easier to read and the modifications I made are correct?
Hopefully this makes it easier to read and the modifications I made are correct?
Re: SNK Ikari Warriors Arcade Core
Well I am totally defeated on this one
I made a brand new adapter up from scratch I connected the LS-30 13 pin connections up as per your hand drawn diagram but again I didn't connect all the direction and push button connections as these are all open circuit and would be undetectable by the STM32 until they were grounded.
I left the coin push button intact to see if I could coin the game up with the LS-30 joystick connected to the Player 1's 13 pin rotary connector on the SNAC adapter.
I loaded the game, selected NATIVE LS-30 ADAPTER: ONLYP1 then reset the game
The game went to boot into the game but got stuck with the follow blue checked screen:-
I know a few other people had bought the parts to make this adapter so if you managed to get yours working could you please let me know how...thanks
![Confused :?](./images/smilies/icon_e_confused.gif)
I made a brand new adapter up from scratch I connected the LS-30 13 pin connections up as per your hand drawn diagram but again I didn't connect all the direction and push button connections as these are all open circuit and would be undetectable by the STM32 until they were grounded.
I left the coin push button intact to see if I could coin the game up with the LS-30 joystick connected to the Player 1's 13 pin rotary connector on the SNAC adapter.
I loaded the game, selected NATIVE LS-30 ADAPTER: ONLYP1 then reset the game
The game went to boot into the game but got stuck with the follow blue checked screen:-
I know a few other people had bought the parts to make this adapter so if you managed to get yours working could you please let me know how...thanks
Re: SNK Ikari Warriors Arcade Core
Just been reading the Ikari Warriors manual and the cross hatch screen only occurs when you hold Player 1 START button down whilst booting the board, considering I don't have the Player 1 START button connected I can rule out that this is being pressed due to incorrect wiring.
Something else is going on that I haven't quite figured out.
With this particular new SNAC board setup I ruled out a programming issue by programming the same LS-30_READ.ino file 3 times using the below STM32 board settings in Arduino:-
Board: "Generic STM32F1 series"
then selecting:-
1. BluePill F103C8
2. BluePill F1038CB (or C8 with 128k)
3. Generic F103C8Tx
I have ruled out the 13 pin wiring with revised Pin 1 being ground instead of Pin 7 by using your revised connections.
I have even tried separating the TX- D- and D+ wires in case there is an issue with crosstalk with the data lines on the USB 3.0 connector.
Something else is going on that I haven't quite figured out.
With this particular new SNAC board setup I ruled out a programming issue by programming the same LS-30_READ.ino file 3 times using the below STM32 board settings in Arduino:-
Board: "Generic STM32F1 series"
then selecting:-
1. BluePill F103C8
2. BluePill F1038CB (or C8 with 128k)
3. Generic F103C8Tx
I have ruled out the 13 pin wiring with revised Pin 1 being ground instead of Pin 7 by using your revised connections.
I have even tried separating the TX- D- and D+ wires in case there is an issue with crosstalk with the data lines on the USB 3.0 connector.
- Attachments
-
- Cross Hatch Screen.PNG (64.62 KiB) Viewed 3355 times
Re: SNK Ikari Warriors Arcade Core
For completeness I have updated your circuit diagram, it doesn't make any difference to how the adapter will function but it makes the routing neater and matches your original circuit layout when Pin 7 gets re-ordered to Pin 13 at the PCB
I have effectively swapped around 2 of the connections at the 10k resistor array so that the pin order from the array follow a more sequential numbering pattern on the Ls-30 pin numbering, i.e
Pin 6 of resistor array now goes to 2, 6, 10
Pin 7 goes to 3, 7, 11
Pin 8 goes to 4, 8, 12
and Pin 9 goes to 5, 9, 13
Just to add, this was how I wired up my adapter which is currently producing the blue test grid pattern.
I have effectively swapped around 2 of the connections at the 10k resistor array so that the pin order from the array follow a more sequential numbering pattern on the Ls-30 pin numbering, i.e
Pin 6 of resistor array now goes to 2, 6, 10
Pin 7 goes to 3, 7, 11
Pin 8 goes to 4, 8, 12
and Pin 9 goes to 5, 9, 13
Just to add, this was how I wired up my adapter which is currently producing the blue test grid pattern.
Re: SNK Ikari Warriors Arcade Core
I anyone selling the adaptor for this so I can use my LS-30 with Ikari Warriors
Re: SNK Ikari Warriors Arcade Core
Beaps whereabouts are you in Essex, I know you are a member of UKVAC and so am I but would be happy to bring over both my adapters I have made to see if we can find out why this adapter doesn't work on my setup, also would be useful to know if this works on someone else's setup.
The only difference from RndMnkIII's setup and mine is that I am running Mister through a Jamma Expander I bought so would like to rule this out as having any influence on the SNAC adapter's functionality.
Re: SNK Ikari Warriors Arcade Core
Yeah man I am the same dude from VAC, drop me a PM over there and we can chat please buddy
Re: SNK Ikari Warriors Arcade Core
So the latest on this is I managed to get Player 1 to coin up now and all directions are working.
The only issue I have now is after wiring the 13 Pin directional wires up when Pin 7 gets re-routed to Pin 1 (GND) at the board end is that when the Warrior first appears on the screen his gun remains static as it should but if I then rotate the joystick by one click in the RIGHT direction the the warrior will constantly rotate right until I rotate click LEFT then he stops rotating and the same happens when I start to rotate LEFT I have to counteract the constant rotating of the gun by rotating RIGHT by one click.
As I have re-routed the wires is there anything in the coding LS-30_READ.ino code below that will cause the constant rotation in either direction and if so what needs changing in the code to make this work?.
//PLAYER1 ST CO D2/E D3/F U D L R A B D0/C D1/D
//PLAYER2 A B D0/C D1/D ST CO D2/E D3/F U D L R
//data_out is used as PISO register
data_out = 0xFF000000 |
(var_portA & 0x00ff ) |
((var_portB & 0x0f00) ) |
((var_portA & 0x0f00)<<4) |
((var_portB & 0xf000)<<4) |
((var_portB & 0x00f0)<<16);
The only issue I have now is after wiring the 13 Pin directional wires up when Pin 7 gets re-routed to Pin 1 (GND) at the board end is that when the Warrior first appears on the screen his gun remains static as it should but if I then rotate the joystick by one click in the RIGHT direction the the warrior will constantly rotate right until I rotate click LEFT then he stops rotating and the same happens when I start to rotate LEFT I have to counteract the constant rotating of the gun by rotating RIGHT by one click.
As I have re-routed the wires is there anything in the coding LS-30_READ.ino code below that will cause the constant rotation in either direction and if so what needs changing in the code to make this work?.
//PLAYER1 ST CO D2/E D3/F U D L R A B D0/C D1/D
//PLAYER2 A B D0/C D1/D ST CO D2/E D3/F U D L R
//data_out is used as PISO register
data_out = 0xFF000000 |
(var_portA & 0x00ff ) |
((var_portB & 0x0f00) ) |
((var_portA & 0x0f00)<<4) |
((var_portB & 0xf000)<<4) |
((var_portB & 0x00f0)<<16);
Re: SNK Ikari Warriors Arcade Core
Not sure why this is proving so difficult to get working. I have had to strip out any reference to Player 2 in the LS-30_READ.ino code just to get directions and the rotation of the warrior partially working, the rotation is back to front and the warrior occasionally wants to rotate by one turn on it's own. This is going to be my last post on this subject.
Re: SNK Ikari Warriors Arcade Core
Awww... i was reading this thread in excitement!
I have two snk rotary sticks i want to hook up to my mister but I am not good at building these things myself.
Is anyone selling pre-built adaptors?
I have two snk rotary sticks i want to hook up to my mister but I am not good at building these things myself.
Is anyone selling pre-built adaptors?
Re: SNK Ikari Warriors Arcade Core
I built a similiar thing to this as found here:
https://github.com/va7deo/SNK68/tree/main/dev/rp2040
And i get the same result, the inputs gets stuck when i rotate the ls-30. Stuck as if a key is held down until i rotate in the other direction. Then it gets stuck on that key instead.
What could be wrong?
https://github.com/va7deo/SNK68/tree/main/dev/rp2040
And i get the same result, the inputs gets stuck when i rotate the ls-30. Stuck as if a key is held down until i rotate in the other direction. Then it gets stuck on that key instead.
What could be wrong?
- atrac17
- Core Developer
- Posts: 162
- Joined: Sun May 24, 2020 10:51 pm
- Has thanked: 32 times
- Been thanked: 380 times
Re: SNK Ikari Warriors Arcade Core
This only works with the SNK68 core at the moment.spotUP wrote: ↑Tue Sep 27, 2022 10:36 pm I built a similiar thing to this as found here:
https://github.com/va7deo/SNK68/tree/main/dev/rp2040
And i get the same result, the inputs gets stuck when i rotate the ls-30. Stuck as if a key is held down until i rotate in the other direction. Then it gets stuck on that key instead.
What could be wrong?
Re: SNK Ikari Warriors Arcade Core
atrac17 adapter is USB based device and is wired differently, all 12 rotations are wired individually whereas RndMnkIII is SNAC based, has 3 wires joined together x 4 to interpret the rotation directions.
RndMnkIII would have coded his core to read his own inputs from the adapter.
atrac17 said he would kindly make another firmware so this one can be used for all other games using the LS-30 joystick so you will have to wait until that firmware is released then program that on to the PICO for use with Ikari Warriors.
Re: SNK Ikari Warriors Arcade Core
So, is this the expected behaviour? Keys should be stuck?
https://youtu.be/7HNYnXcWogk
https://youtu.be/7HNYnXcWogk
- atrac17
- Core Developer
- Posts: 162
- Joined: Sun May 24, 2020 10:51 pm
- Has thanked: 32 times
- Been thanked: 380 times
Re: SNK Ikari Warriors Arcade Core
Did you test it in the core it's for? This thread isn't for SNK projects I work on and is for his Ikari core and his adapter.spotUP wrote: ↑Wed Sep 28, 2022 9:32 am So, is this the expected behaviour? Keys should be stuck?
https://youtu.be/7HNYnXcWogk
It works for what it was designed for. From a user who built out a panel. Anyways, good luck.
Re: SNK Ikari Warriors Arcade Core
OK, sticks buttons and rotation working now, thanks for the input!
Re: SNK Ikari Warriors Arcade Core
Any news on this?
It would be great to be able to use it with heavy barrel as well!