NAOMI 2/Chihiro/Triforce Card Reader Emulator (Initial D3/WMMT/Mario Kart/F-ZERO AX)

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • freddiefiasco wrote:

      winteriscoming wrote:

      I put together a blank ID4 US card based on my logs. I edited the ID code to be FF FF FF FF and successfully simulated purchasing a new card with data written to my card file!

      The game does not appear to care about the ID. It doesn't appear to be informing any kind of stored checksum or anything, so the good news is that a random ID should be possible in order to make unique cards. This will be needed if it turns out the game tracks cards based on ID. If it doesn't care about multiple cards with the same ID, then this won't matter.

      At least for ID4 US a blank card appears to have specific data in the header, including counters, and then everything else is filled with FF. I haven't gotten into attempting something similar with ID5.
      This might be a ways off (or I have asked already) but I'm curious if that ID code correlates to the card restore IDs in TEST. I know that when one of my cards was corrupted, I was able to restore it from one of the IDs that was in TEST. Huge leap in assuming that ID is probably only used for restoration purposes considering that the times/story status are loaded from the current card that is loaded and the saves are only written to the card before stage selection and after stage completion.
      I suppose game could be storing card data based on the ID, but I have not seen any options to restore cards in the test menu the few times I checked. The menu item is there for restoring cards, but there are no actions that can be taken. I wonder if it only gives the option to restore a card if there was an error during the write process. I didn't check it during my failed write tests.

      It might be that the latest card data for so many cards gets stored and there is some kind of verification process that checks that counters are the same or less than the saved data, and maybe it compares some other data to prevent tampering, but it has to allow for some changes since a card could be run in a separate machine and changes made/counters decreased.

      At any rate, even if the card is stored based on ID, the act of restoring to a new card (or even transferring to a new card upon expiration) would change the ID.

      It remains to be seen how robust the backups and verification processes are. And I can only test in ID4/5. Newer games may be different.
    • winteriscoming wrote:

      I suppose game could be storing card data based on the ID, but I have not seen any options to restore cards in the test menu the few times I checked. The menu item is there for restoring cards, but there are no actions that can be taken. I wonder if it only gives the option to restore a card if there was an error during the write process. I didn't check it during my failed write tests.
      The only time i have seen any options with available actions was when I restored corrupted data to a card. other times, I see the same things you have seen in the test menu for restore card. (On ID5)



      winteriscoming wrote:

      It remains to be seen how robust the backups and verification processes are. And I can only test in ID4/5. Newer games may be different.
      During your testing, are you able to purposely corrupt a card? I'm kinda curious now to see what the read/write commands are for card restore if you are able to load this data from the test menu onto your test card.
    • One test I did in ID5 was to stop the script during a race. The race finished normally and an error didn't come up until after. However nothing showed in the test menu as an option to restore the card.

      I guess corruption would have to be introduced at some point after the card has been read in correctly.

      I was looking over header data from the single ID5 and ID8 cards I have. More than just the ID codes are different, but I don't know how that data is getting used. I have a theory that some of it might be used to generate the avatar faces seen when you start a game with a new card, but digging into that would be time consuming because you'd have to sit through race after race to confirm if changes do anything. Then if it results in an error, rebooting takes forever.

      I haven't gotten far enough into testing with multiple new cards to tell if there will be any conflicts with my planned random generation of ID codes.

      I did confirm I could get a blank ID5 card loaded and new game started, saved and resumed successfully in that game, so the script I have works with both.
    • winteriscoming wrote:

      One test I did in ID5 was to stop the script during a race. The race finished normally and an error didn't come up until after. However nothing showed in the test menu as an option to restore the card.

      I guess corruption would have to be introduced at some point after the card has been read in correctly.

      I was looking over header data from the single ID5 and ID8 cards I have. More than just the ID codes are different, but I don't know how that data is getting used. I have a theory that some of it might be used to generate the avatar faces seen when you start a game with a new card, but digging into that would be time consuming because you'd have to sit through race after race to confirm if changes do anything. Then if it results in an error, rebooting takes forever.

      I haven't gotten far enough into testing with multiple new cards to tell if there will be any conflicts with my planned random generation of ID codes.

      I did confirm I could get a blank ID5 card loaded and new game started, saved and resumed successfully in that game, so the script I have works with both.
      awesome! that test menu for restore seems to happen randomly for me. some corrupt data can be restored, others, not. at least when i noticed.
    • I think I figured out the bytes in the header data that identify the card as either Export or JP. I was able to get Export ID4 to load up JP ID5 card data and it had to read the first chunk of body data to know it was data from the wrong game, whereas it was rejecting it based on header data previously.

      The real benefit in having this information is that it can be used for generating new card files for the appropriate region.

      My hope is that you'll just specify a new card filename like you do with the other scripts I have made, and the script will build out the blank card if it doesn't exist. I will probably have to integrate some kind of argument for region so that the script knows which card to generate.
    • Limited testing so far makes me think I am successfully generating usable new card files. ID4 is not complaining.

      I am randomizing bytes that appear different on the cards I have analyzed. I don't know for sure what some of the variables are except for the ID code used in the authorization process. At worst a card could be generated that is invalid, but it hasn't happened in about 5 tests so far.

      The post was edited 1 time, last by winteriscoming ().

    • I think I'm finished with the ID4-5 card emulator script. I have not had any failures on ID4 and 5 with the testing I have done.

      If anyone wants to test, let me know.

      You would need a serial adapter to go from the port on the Lindbergh to the port on the PC running the script (i.e. I use a TU-S9 USB adapter on my laptop). I haven't tested to tell if RTS/CTS are needed, but the physical card reader has them and I incorporated them into my adapter.

      Basically you need an adapter that does this:
      PC to Lindbergh
      GND (pin5) - GND (pin5)
      RX (pin2) -TX (pin3)
      TX (pin3) -RX (pin2)
      RTS (pin7) -CTS
      CTS (pin8) -RTS (pin7)

      You can buy a ready-made cable to do this, but make sure it is NOT a straight-through cable. You need a female to female null modem cable that crosses the wires over from one to the other as needed.
    • winteriscoming wrote:

      Does anyone know if there is variety in the avatars in ID5? I keep getting the same male and female.

      In ID4 I see at least 2 variations of male and female.

      I have played around with variables on the new cards a little bit, but haven't come across anything with observable impact.
      The gender for both male and female base avatars are the same. Additional variety was added in ID6 to have different facial expressions and wardrobe.
    • winteriscoming wrote:

      I think I'm finished with the ID4-5 card emulator script. I have not had any failures on ID4 and 5 with the testing I have done.If anyone wants to test, let me know.You would need a serial adapter to go from the port on the Lindbergh to the port on the PC running the script (i.e. I use a TU-S9 USB adapter on my laptop). I haven't tested to tell if RTS/CTS are needed, but the physical card reader has them and I incorporated them into my adapter.Basically you need an adapter that does this:PC to LindberghGND (pin5) - GND (pin5)RX (pin2) -TX (pin3)TX (pin3) -RX (pin2)RTS (pin7) -CTSCTS (pin8) -RTS (pin7)You can buy a ready-made cable to do this, but make sure it is NOT a straight-through cable. You need a female to female null modem cable that crosses the wires over from one to the other as needed.

      I would be more than happy to help testing this on my Lindbergh multi kit.

      Would this work with the USB to Serial Adapter I used for the Naomi Script?

      The post was edited 1 time, last by gamemaster14 ().

    • nismopunch wrote:

      Would have been cool if ID8 printed the avatar with all the custom stuff you get...sigh lol
      Yeah, I can't understand why Sega decided to drop printing the avatar on the ID8 cards.
      But right now I'd be happy if my card readers would actually print something on my ID8 cards! :rolleyes:

      Hopefully sometime in the future someone releases the info on how to flash the unofficial card readers so they work 100%.
    • Hello.
      First of all, please forgive me for dialogue with Google translation because I am not good at English.
      I have a cabinet and games that use the same card R / W unit as used in WMMT.

      Cabinet name: Rewritable stage
      System board: System 246/256
      Game:
      The iDOLM @ STER
      Dragon Chronicle
      Minna de Kitaeru Zenno Training

      The number of operation remaining in Japan is already less than 20 stores, but it is a game that is cherished.
      In these games card depletion problem has occurred, I was interested in this project.

      I am thinking mainly of The iDOLM @ STER (imas) which has many remaining numbers.
      Since it is the same cabinet, if the software can cope with imas, there is a high possibility that the other two works can be used as it is.

      The main difference in the behavior with the drive game is below.
      ・ Use two cards
      ・ In order to play a new game, it is necessary to reproduce the card discharge state.


      Below, I write what I tried under the current situation.

      I used the CH340D USBtoRS232C adapter on a laptop PC.

      First I tried FZEROCARDEMU but it is recognized as Triforce and it does not work well.
      Next I tried WMMTCARDEMU, it was recognized as Chihiro, the dispenser test from the initialization and test mode, the read / write test worked.
      However, the test print on the printed side did not succeed because of an undefined command, nor was it possible to restore the card.

      Operation is necessary for new game, card discharge status. The continuation game starts as soon as you insert it.
      As a result, cards are always inserted, so new games can not be done and card data can not be created.

      Also, this game uses two cards, unlike a drive game.
      ・ "Producer card" which holds player information (P)
      ・ "Unit card" (U) that holds breeding character
      It is necessary to have a function to receive an eject command and enter the eject state and insert any card of any of the two types at an arbitrary timing.

      I am planning to modify the existing python script, but since python is not familiar with it, I am glad if there is help from participants.
      For the above game, I will provide necessary information as much as possible. Please tell me if there is any doubt or indication.
      Thank you.
    • UYO wrote:

      Hello.
      First of all, please forgive me for dialogue with Google translation because I am not good at English.
      I have a cabinet and games that use the same card R / W unit as used in WMMT.

      Cabinet name: Rewritable stage
      System board: System 246/256
      Game:
      The iDOLM @ STER
      Dragon Chronicle
      Minna de Kitaeru Zenno Training

      The number of operation remaining in Japan is already less than 20 stores, but it is a game that is cherished.
      In these games card depletion problem has occurred, I was interested in this project.

      I am thinking mainly of The iDOLM @ STER (imas) which has many remaining numbers.
      Since it is the same cabinet, if the software can cope with imas, there is a high possibility that the other two works can be used as it is.

      The main difference in the behavior with the drive game is below.
      ・ Use two cards
      ・ In order to play a new game, it is necessary to reproduce the card discharge state.


      Below, I write what I tried under the current situation.

      I used the CH340D USBtoRS232C adapter on a laptop PC.

      First I tried FZEROCARDEMU but it is recognized as Triforce and it does not work well.
      Next I tried WMMTCARDEMU, it was recognized as Chihiro, the dispenser test from the initialization and test mode, the read / write test worked.
      However, the test print on the printed side did not succeed because of an undefined command, nor was it possible to restore the card.

      Operation is necessary for new game, card discharge status. The continuation game starts as soon as you insert it.
      As a result, cards are always inserted, so new games can not be done and card data can not be created.

      Also, this game uses two cards, unlike a drive game.
      ・ "Producer card" which holds player information (P)
      ・ "Unit card" (U) that holds breeding character
      It is necessary to have a function to receive an eject command and enter the eject state and insert any card of any of the two types at an arbitrary timing.

      I am planning to modify the existing python script, but since python is not familiar with it, I am glad if there is help from participants.
      For the above game, I will provide necessary information as much as possible. Please tell me if there is any doubt or indication.
      Thank you.
      It would be easiest to get logs from actual hardware to fill in gaps for missing commands.

      I found that the horse racing cards or Initial D cards worked for WMMT. The printed graphics would not erase, though they should be sufficient for getting logs if you don't have original cards.

      Note that for each script, the system is identified as a hard-coded value, so the WMMT just identifies the system as "Chihiro" simply because that is what WMMT runs on and I put that name into the script. It would say "Chihiro" no matter which system is actually plugged up as long as it was receiving commands. It sounds like the WMMT script would be your starting point since it apparently has the correct communication standards configured.

      I'm not sure how much help I can be, but feel free to post logs if you can generate them. I believe the information I have to provide is all buried within this thread.
    • winteriscoming wrote:

      I think I'm finished with the ID4-5 card emulator script. I have not had any failures on ID4 and 5 with the testing I have done.

      If anyone wants to test, let me know.

      You would need a serial adapter to go from the port on the Lindbergh to the port on the PC running the script (i.e. I use a TU-S9 USB adapter on my laptop). I haven't tested to tell if RTS/CTS are needed, but the physical card reader has them and I incorporated them into my adapter.

      Basically you need an adapter that does this:
      PC to Lindbergh
      GND (pin5) - GND (pin5)
      RX (pin2) -TX (pin3)
      TX (pin3) -RX (pin2)
      RTS (pin7) -CTS
      CTS (pin8) -RTS (pin7)

      You can buy a ready-made cable to do this, but make sure it is NOT a straight-through cable. You need a female to female null modem cable that crosses the wires over from one to the other as needed.
      Wow I'm late seeing this, amazing work!

      I also would love to test your script if you're willing. I'd have to pick up the cable, any links on where to buy a pre-made?