What's new
I'd be interested in seeing your code once you're ready to share. i don't have a ID3 setup but I do have a NAOMI 2 with pi-force so I could definitely test it out/play around with it a bit.
And if you can post how you did the conections that would also be great.
 
I'd be interested in seeing your code once you're ready to share. i don't have a ID3 setup but I do have a NAOMI 2 with pi-force so I could definitely test it out/play around with it a bit.
And if you can post how you did the conections that would also be great.
NAOMI 2 CN8 header to 9-pin d-sub serial adapter:
Pin 1: RXD to Pin 3: TXD
Pin 2: TXD to Pin 2: RXD
Pin 3: GND to Pin 5: GND
Pin 4: RTS to Pin 8: CTS (This may actually not be needed)
Pin 5: CTS to Pin 7: RTS

The serial adapter I have is:
TRENDnet TU-S9 USB to Serial Converter

The header at NAOMI 2 CN8 needs a 6 pin .100" connector/pins. I happened to have this size connector housing and crimp pins on hand for when I work on my pinball machines.

I haven't wired up an adapter straight from the NAOMI to serial port yet, but that will just be a matter of wiring into a female d-sub.
 
If we're going to get to a point of ever having a GUI front end that interprets these cards, it's probably not coming from me.

Here's data from a card:
02 D5 33 78 30 30 2E 5D 01 19 F8 68 8D 8D E7 8E 0D 0A 5B 72 C0 FE 87 B6 2E FA E7 D1 2A B5 25 59 4A E6 17 DF 79 37 7E 4C 8F D7 89 88 39 E6 61 33 C6 C6 AB 10 B4 88 13 BF 5D 10 20 7B A2 CA 6E F0 2C 7D E3 1E B9 5A D3 68 8E 1C 56 3D 46 F9 AE C0 08 A3 97 66 D0 AC 46 DA 74 DC 3B DB 5C 89 9D 8C EF 76 56 40 87 30 8A 2B B5 C9 A8 A4 54 20 3B 94 11 57 D9 A1 D8 CE 8C DC 76 57 5B 1E 9E F7 A9 DB 06 B4 CB 14 19 AA 75 00 31 E8 7E 31 BF A8 94 E6 53 45 47 41 42 48 52 33 48 30 B2 62 EC 41 56 0B A4 39 2E C9 0D CC 9D ED 10 62 28 C2 05 FA C8 B4 B8 E2 70 0D DA F6 CF 29 A8 6E 72 D6 77 91 6E C1 4F 9F 89 9D C6 15 92 72 45 FC F2 3F 46 E6 27 BC C7 1F 74 D5 E9 03 B2

Here's the data from a subsequent saving from the same card... I think the only difference would be points and number of plays until servicing:
02 D5 33 78 30 30 36 59 04 11 24 78 AE D3 AD 44 BF A0 41 7A E5 E9 B7 24 41 D8 C9 D2 9A 66 1B E7 0D 20 FE B9 03 06 B4 BA AA 18 5D 01 A9 CD F5 1C 66 FB E2 19 61 B4 CC 83 6E 37 A8 59 B5 30 DB 49 D8 C2 23 FA 88 AB 13 D3 EE CA 2F 8E 9E E1 1C EB 84 29 95 C6 C0 04 23 0C 74 6D 6B CC A2 27 BC 79 73 5B 70 11 94 05 F9 29 40 9C AB 77 23 17 81 56 79 9E D3 10 39 CA B6 35 05 E3 C4 E5 87 2B C4 1B 41 38 60 55 31 FB 2D B0 73 CD 4B F4 66 6A 1A A4 53 45 47 41 42 48 52 33 55 5A 58 31 32 F5 79 19 23 98 3E BD CA 58 59 96 C0 4A 70 29 D8 45 BF 64 4E DA DA 7F 20 F0 AA 2E B7 FD FB B8 FD 58 BD 57 9E C7 93 1E EE D7 C6 13 EA E5 B2 D3 96 CE 91 08 84 D6 14 2C 5C 03 FA

So both of these cards would display nearly identical information with the exception of a couple things.

The only constant (excluding the beginning of the command) is:
53 45 47 41 42 48 52
Otherwise read in ASCII as:
SEGABHR3

Maybe a code for the game so that if you tried loading into ID1 or 2, it would be rejected?


MetalliC mentioned that the cards are encrypted, so I suspect that's the reason for the vastly different data. Unless that is cracked, I'm not sure how the card data can be interpreted in an external program.
 
i don't have a ID3 setup
Maybe boot it up in your VO cab and try to drive with the sticks if they map up? :P
VOOT sticks are 8-way, there's no analog anything in that cab.

also medium res monitors no 31K support

I've been wanting to buy an outrun 2 for a couple of years now but I've yet to see the right one come up.
 
Otherwise read in ASCII as:
SEGABHR3
Maybe a code for the game so that if you tried loading into ID1 or 2, it would be rejected?
most likely, 3 chars after SEGA is game ID, ID3 EXP have it BHR, ID2 EXP - BFS, ID1 EXP - BEM, etc
this ID can be seen in ROM header.
 
The workflow I'm planning is that you specify the card file when initially running the script.

If the file doesn't exist, it will be made and you have to choose to start a new game and purchase new card.

If the file exists, but is blank, same as previous workflow.

If the file contains data, it will be loaded up and automatically inserted when a game is started.

I still need to monitor new card creation so I can get through that step, but I've figured out the logic for handling the above workflows. If you specify a non-existant or blank file, the emulator does not insert a card at game start. If the file contains data, it does insert and load up.
 
Here's the log for starting a game and purchasing a card starting at the Insert Card or Start to Continue screen:

WAITING FOR CARD


2016-03-09 15:06:13.938197: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:14.235074: NAOMI2
05
2016-03-09 15:06:14.235074: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:14.531930: NAOMI2
05
2016-03-09 15:06:14.547574: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:14.828824: NAOMI2
05
2016-03-09 15:06:14.844449: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:15.125682: NAOMI2
05
2016-03-09 15:06:15.141318: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:15.438201: NAOMI2
05
2016-03-09 15:06:15.438201: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:15.735057: NAOMI2
05
2016-03-09 15:06:15.750682: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:16.031933: NAOMI2
05
2016-03-09 15:06:16.047558: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:16.328809: NAOMI2
05
2016-03-09 15:06:16.344453: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:16.641327: NAOMI2
05
2016-03-09 15:06:16.641327: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:16.938204: NAOMI2
05
2016-03-09 15:06:16.953810: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:17.235060: NAOMI2
05
2016-03-09 15:06:17.250705: READER
02 06 33 A0 30 34 03 92
2016-03-09 15:06:17.547561: NAOMI2
05
2016-03-09 15:06:17.547561: READER
02 06 33 A0 30 34 03 92


Pushed start and purchased new card:


2016-03-09 15:06:17.953831: NAOMI2
05 02 06 40 00 00 00 03 45 05
2016-03-09 15:06:17.969455: READER
02 06 33 A0 30 34 03 92 06 02 06 40 A0 30 30 03
E5
2016-03-09 15:06:18.125687: NAOMI2
02 06 40 00 00 00 03 45 05
2016-03-09 15:06:18.266312: NAOMI2
02 06 20 00 00 00 03 25 05
2016-03-09 15:06:18.531938: NAOMI2
02 06 40 00 00 00 03 45 05 02 07 D0 00 00 00 30
03 E4 05
2016-03-09 15:06:18.547582: READER
06 02 06 40 A0 30 32 03 E7 06 02 06 20 A0 30 30
03 85 06 02 06 40 A0 30 32 03 E7 06 02 06 D0 A0
30 33 03 76
2016-03-09 15:06:18.828832: NAOMI2
05
2016-03-09 15:06:18.844439: READER
02 06 D0 60 30 30 03 B5
2016-03-09 15:06:24.406951: NAOMI2
02 06 40 00 00 00 03 45 05 02 06 20 00 00 00 03
25 05
2016-03-09 15:06:24.422576: READER
06 02 06 40 60 30 32 03 27 06 02 06 20 60 30 30
03 45
2016-03-09 15:06:24.688218: NAOMI2
02 06 40 00 00 00 03 45 05 02 07 B0 00 00 00 31
03 85 05
2016-03-09 15:06:24.688218: READER
06 02 06 40 60 30 32 03 27 06 02 06 B0 60 30 33
03 D6
2016-03-09 15:06:24.985094: NAOMI2
05
2016-03-09 15:06:25.000720: READER
02 06 B0 60 30 33 03 D6
2016-03-09 15:06:25.281970: NAOMI2
05
2016-03-09 15:06:25.297576: READER
02 06 B0 78 30 33 03 CE
2016-03-09 15:06:25.578826: NAOMI2
05
2016-03-09 15:06:25.594470: READER
02 06 B0 78 30 33 03 CE
2016-03-09 15:06:25.891328: NAOMI2
05
2016-03-09 15:06:25.891328: READER
02 06 B0 7C 30 30 03 C9


-Configuration starts and then game - no activity


-Game ends and chose not to continue


2016-03-09 15:11:44.688826: NAOMI2
02 06 40 00 00 00 03 45 05
2016-03-09 15:11:44.970078: READER
06 02 06 40 7C 30 32 03 3B 06 02 06 20 7C 30 30
03 59 06 02 06 40 7C 30 32 03 3B
2016-03-09 15:11:45.204451: NAOMI2
02 06 20 00 00 00 03 25 05 02 06 40 00 00 00 03
45 05 02 67 7C 00 00 00 30 30 00 20 20 20 20 20
20 20 20 1B 73 32 31 82 60 82 61 82 62 20 20 20
20 14 20 20 20 1B 67 01 37 32 31 0D 20 20 20 20
20 20 20 20 53 55 5A 55 4B 49 0D 20 20 20 20 20
20 20 20 43 41 50 50 55 43 43 49 4E 4F 0D 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 0D 03 FB 05
2016-03-09 15:11:45.266954: READER
06 02 06 7C 7C 30 33 03 06
2016-03-09 15:11:45.563846: NAOMI2
05
2016-03-09 15:11:45.579452: READER
02 06 7C 7C 30 33 03 06
2016-03-09 15:11:45.860722: NAOMI2
05
2016-03-09 15:11:45.876328: READER
02 06 7C 7C 30 33 03 06
2016-03-09 15:11:47.720082: NAOMI2
05
2016-03-09 15:11:47.735726: READER
02 06 7C 67 30 33 03 1D
2016-03-09 15:11:48.016976: NAOMI2
05
2016-03-09 15:11:48.032601: READER
02 06 7C 67 30 33 03 1D
2016-03-09 15:11:48.329477: NAOMI2
05
2016-03-09 15:11:48.329477: READER
02 06 7C 67 30 30 03 1E
2016-03-09 15:11:48.641958: NAOMI2
02 06 40 00 00 00 03 45 05 02 06 20 00 00 00 03
25 05
2016-03-09 15:11:48.657583: READER
06 02 06 40 67 30 32 03 20 06 02 06 20 67 30 30
03 42
2016-03-09 15:11:48.860728: READER
06 02 06 40 67 30 32 03 20
2016-03-09 15:11:49.204478: NAOMI2
02 06 40 00 00 00 03 45 05 02 D8 53 00 00 00 30
31 36 63 11 74 28 82 C0 F1 42 BC 28 30 BD 07 01
A9 05 B4 A8 C7 1E FF 63 96 40 0A 83 A3 A4 64 C9
55 8A B6 D3 90 5E 75 CE 38 29 1C F3 A4 61 A2 AE
4F 3E D8 AC C3 1E CB 08 4B F0 1E F8 F3 5A 87 C4
FA 9D 5A 96 51 61 71 6E E6 42 92 12 02 28 C7 46
EA A0 55 94 4D 12 51 58 87 70 D6 61 64 6F 36 28
CA 10 E9 D6 4D 3C 48 CA D3 1F 77 51 B4 FA 6A 0A
BE 73 FA 22 E6 02 B4 87 8B 69 0E B7 F1 33 A1 CA
95 3B 2C 2B F2 A7 2E D9 B9 8D 61 91 53 45 47 41
42 48 52 33 FA 6A 77 1B 40 2B F8 74 1E 97 61 48
53 45 E8 B3 33 B2 C9 A9 AE A1 9B 39 18 65 B4 50
FD EE 25 BC A8 EA EA EF BB 1D 42 26 D2 A2 49 63
0C 39 28 6D 3D CB 06 67 CA BC 8B E4 31 C4 8C 74
9D 03 E6 05
2016-03-09 15:11:49.266960: READER
06 02 06 53 67 30 33 03 32
2016-03-09 15:11:49.563853: NAOMI2
05
2016-03-09 15:11:49.579460: READER
02 06 53 6C 30 33 03 39
2016-03-09 15:11:50.782588: NAOMI2
05
2016-03-09 15:11:50.798232: READER
02 06 53 78 30 33 03 2D
2016-03-09 15:11:51.095107: READER
02 06 53 78 30 30 03 2E
2016-03-09 15:11:51.220107: NAOMI2
05 02 06 40 00 00 00 03 45 05
2016-03-09 15:11:51.235714: READER
06 02 06 40 78 30 32 03 3F
2016-03-09 15:11:51.345108: NAOMI2
02 07 D0 00 00 00 31 03 E5 05
2016-03-09 15:11:51.360727: READER
06 02 06 D0 78 30 33 03 AE
2016-03-09 15:11:51.657608: READER
02 06 D0 B8 30 30 03 6D
2016-03-09 15:11:51.923233: NAOMI2
05 02 06 40 00 00 00 03 45 05 02 06 80 00 00 00
03 85 05
2016-03-09 15:11:51.938859: READER
06 02 06 40 B8 30 32 03 FF 06 02 06 80 B8 30 33
03 3E
2016-03-09 15:11:52.235734: NAOMI2
05
2016-03-09 15:11:52.251359: READER
02 06 80 AE 30 33 03 28
2016-03-09 15:11:52.532609: NAOMI2
05
2016-03-09 15:11:52.548234: READER
02 06 80 A7 30 33 03 21
2016-03-09 15:11:52.845092: NAOMI2
05
2016-03-09 15:11:52.845092: READER
02 06 80 A1 30 33 03 27
2016-03-09 15:11:53.454470: NAOMI2
05 02 06 20 00 00 00 03 25 05 02 06 20 00 00 00
03 25 05 02 06 20 00 00 00 03 25 05
2016-03-09 15:11:53.470093: READER
02 06 80 A1 30 30 03 24 06 02 06 20 A1 30 30 03
84 06 02 06 20 A1 30 30 03 84 06 02 06 20 A0 30
30 03 85
2016-03-09 15:12:14.767010: NAOMI2
02 06 40 00 00 00 03 45 05 02 06 20 00 00 00 03
25 05
2016-03-09 15:12:14.767010: READER
06 02 06 40 A0 30 32 03 E7 06 02 06 20 A0 30 30
03 85
 
I'm working on trying to get through the new game/new card process. It's been challenging trying to figure out the correct sequence of responses. So far it hasn't liked letting me try to skip steps and sometimes ends in a card jam error. It may need to see the various stages of loading a card from the dispenser and say it's ready to go.

What I'm attempting to do now is duplicate the exact sequence from the logs and get it to let me go to the car configuration step.
 
It may need to see the various stages of loading a card from the dispenser and say it's ready to go.
no, its not, at least under my emulation. it works well with "final result" codes immediately.
also it not require exact card sensors statuses, this game code happy with constant 0x18 then card present inside reader, e.g. after 0xB0 'get new card form hopper' command and upto ejecting it using 0x80 command after all needed was written and printed.

however, it seems in real reader sensors bits have more significant values than I was thinking:
- during B0 (get card from hopper) command it becomes 0x1C
- during 7C (print) command it becomes 0x07
- during 53 (data write) cmd it is 0x18, wich was known already.
so, it looks like card have several positions in reader, one for printing, other for data read/write, and another after extraction from hopper.
 
I'll have to play around with it more. I'm not usually reading over the commands to interpret what it's actually asking for, so I'm likely responding in ways that don't always make sense.

All I know is when I try to shortcut it to the final reply before the game starts from the logs, I'm getting RW errors.
 
is there any un-encrypted data being sent?... for instance, the stuff getting printed on the card? or is the card reader decrypting that information to determine what to print?

I ask because if we're going to make a UI to select different cards it would be nice to know what the printed information is so you could see that when selecting a card.
 
I have no idea... somewhere in the most recent log I posted where it's the communication during a new game/new card, that data would be getting sent for printing.

I did 2 test cards and can't remember which was which:

One has:
Driver: TEST
Key431
Car:TOYOTA
MR-S S EDITION

The other has:
Driver: ABC
Key721
Car: SUZUKI
CAPPUCCINO

At various points in the game, it prints other things on the card, though, like which areas have been completed and racer level stars.
 
Ok, it might not have been the most efficient way possible, but I've got the game thinking I've purchased a new card and it lets me configure a car and start a game.

Now to see if I can respond correctly when the game ends...
 
is there any un-encrypted data being sent?... for instance, the stuff getting printed on the card? or is the card reader decrypting that information to determine what to print?

I ask because if we're going to make a UI to select different cards it would be nice to know what the printed information is so you could see that when selecting a card.
Oh, here's something interesting:
This appears to be the command to print the data:
02 67 7C 00 00 00 30 30 00 20 20 20 20 20 20 20 20 1B 73 32 31 82 60 82 61 82 62 20 20 20 20 14 20 20 20 1B 67 01 37 32 31 0D 20 20 20 20 20 20 20 20 53 55 5A 55 4B 49 0D 20 20 20 20 20 20 20 20 43 41 50 50 55 43 43 49 4E 4F 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 03 FB 05

Here's the ASCII representation:
.g|...00. .s21‚`‚a‚b . .g.721. SUZUKI. CAPPUCCINO. ..û.

So it was this card:
Driver: ABC
Key721
Car: SUZUKI
CAPPUCCINO

I can see where the Key and the Car info are saved, but not sure about driver name.
 
Interesting, the command to print actually seems to be variable in the amount of data according what it needs to send, so I can't take the easy way out and just search for the same beginning sequence of bytes every time.

I'll have to specifically check for command 7C:

Here's the one from the log:
HEX:
02 67 7C 00 00 00 30 30 00 20 20 20 20 20 20 20 20 1B 73 32 31 82 60 82 61 82 62 20 20 20 20 14 20 20 20 1B 67 01 37 32 31 0D 20 20 20 20 20 20 20 20 53 55 5A 55 4B 49 0D 20 20 20 20 20 20 20 20 43 41 50 50 55 43 43 49 4E 4F 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 03 FB 05
ASCII:
.g|...00. .s21‚`‚a‚b . .g.721. SUZUKI. CAPPUCCINO. ..û.

Here's the one from my latest attempt to get through the new game process where it failed to give the correct response:
HEX:
02 74 7C 00 00 00 30 30 00 20 20 20 20 20 20 20 20 1B 73 32 31 82 69 82 68 82 6C 20 20 20 20 14 20 20 20 1B 67 01 32 37 35 0D 20 20 20 20 20 20 20 20 4D 49 54 53 55 42 49 53 48 49 20 4C 41 4E 43 45 52 0D 20 20 20 20 20 20 20 20 45 56 4F 4C 55 54 49 4F 4E 1B 67 09 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 03 E2
ASCII:
.t|...00. .s21‚i‚h‚l . .g.275. MITSUBISHI LANCER. EVOLUTION.g.. ..â

It had not even occurred to me that these print commands could come in at any time you're ending the game because it could be printing a star or completed location. I'll need to make to come up with the correct reply. Hopefully it accepts the same same reply for all print commands.
 
I think I've got the new game/new card process working now!

I'm going to have to do more testing to make sure I can get through the various print commands that come after winning races without error.
 
Awesome! I finished won all of the Myogi races and successfully saved and ejected the card.

Here was the print command that would have printed the small black rectangle with "MYG" in it (not sure if Racer level star would have printed at this point, too):

2016-03-11 10:33:58.756488: NAOMI2
05 02 28 7C 00 00 00 30 30 00 0D 0D 0D 0D 20 20 20 20 20 20 20 20 1B 67 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 03 21
Received print command!
Reader Emulator: Sending: 06 02 06 7C 67 30 30 03 1E

The ASCII doesn't translate to anything meaningful to me.

Now on to trying to see what happens at the Next Inspection process where the card data has to be transferred to a new card. I might get lucky and all the responses I've programmed will align with what the game expects. Otherwise I'm going to have to get one of my physical cards to that point and monitor the communication. I'm not looking forward to that.
 
If anyone wants to play with the script I've currently got together, let me know and I can send it.
 
What kind of hardware/cables would be needed to use this on a Naomi 2?
 
Back
Top