You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
7.5 KiB
133 lines
7.5 KiB
7 months ago
|
# Wangan Midnight Maximum Tune
|
||
|
|
||
|
## Versions supported
|
||
|
- Full support and tested
|
||
|
- Wangan Midnight Maximum Tune 3 (Export)
|
||
|
- Wangan Midnight Maximum Tune 3DX+ (Export, Japan)
|
||
|
- Should also work just fine
|
||
|
- Wangan Midnight Maximum Tune 3DX
|
||
|
- Other regions (china?) of wangan midnight 3(DX(+))
|
||
|
- Not tested but should potentially work
|
||
|
- Wangan Midnight Maximum Tune 1
|
||
|
- Wangan Midnight Maximum Tune 2
|
||
|
|
||
|
## Versions not supported
|
||
|
- Wangan Midnight Maximum Tune 4 onwards (use IC cards already)
|
||
|
|
||
|
## Wiring info:
|
||
|
|
||
|
> Following is mostly an example, colors are reference of what I've seen on two
|
||
|
real arcade machines but might differ, pinout should be the same, however. Also,
|
||
|
only applies for Wangan Midnight Maximum Tune 3DX+, previous versions may or may
|
||
|
not have different connections and/or cable colors.
|
||
|
|
||
|
Game communicates with card reader using a standard serial (RS-232) interface, but
|
||
|
uses 3 pins and a non-standard (i.e. not D-Sub) connector. There is a 8 pin JST connector
|
||
|
on game's case:
|
||
|

|
||
|
Looks like this:
|
||
|

|
||
|
First 3 wires are for force feedback controller/motor, last 3 wires are for card reader
|
||
|
You'll need to disconnect those and connect them to device running SugoiDeCard and YACardEmu
|
||
|
|
||
|
Here's an example wiring for connecting to a DB9 connector:
|
||
|

|
||
|
|
||
|
RX and TX need to be connected cross-over (i.e. RX on game to TX on emulator and
|
||
|
vice-versa). Two pins on game side are left unused and not connected to anything
|
||
|
|
||
|
If you're planning on switching between emulated card reader and real one it's
|
||
|
probably a good idea to make a Y cable or additional custom connector just for
|
||
|
card reader side.
|
||
|
|
||
|
**NOTICE**: Sometimes game can get stuck showing an error for either card reader or
|
||
|
force-feedback which *will* persists between soft reboots, this can be fixed by
|
||
|
hard-rebooting (i.e. power-cycling) the machine.
|
||
|
|
||
|
## Concessions
|
||
|
### New card registration
|
||
|
Originally paper cards could be purchased from game itself for extra price, which
|
||
|
is contrast to buying modern IC cards from arcade operator or elsewhere. This makes
|
||
|
new IC card registration somewhat unintuitive - you'll need to scan your card, select
|
||
|
"no card" and then "buy new card", even though game happily gives away cards in freeplay
|
||
|
mode.
|
||
|
|
||
|
LCD display will display instructions as a workaround for this.
|
||
|
|
||
|
Potentially, if game running is a decrypted/modified version, this could potentially be
|
||
|
fixed by messing with game's localization strings and sprites.
|
||
|
|
||
|
### Present/disused vehicle cards
|
||
|
Original paper cards had a "feature" that they have limited use of 60 games (cards themselves
|
||
|
physically can endure many more rewrite cycles, it's purely marketing trick) after which they
|
||
|
must be renewed (internally game calls it "overhaul" which makes sense in car tuning world, but
|
||
|
game itself never refers to it as that, I wonder why), in which you're essentially buying a new
|
||
|
card, and your old card becomes a "Present card" (or "Disused vehicle card" depending how far
|
||
|
you were in story mode) which in theory you could give away to your friend and after they played
|
||
|
it for 5 times it would create one or several new cards with identical pre-tuned car on it.
|
||
|
Additionally, when renewing card you'll be able to pick a new custom color.
|
||
|
|
||
|
This whole ordeal is very nice and cool and potentially extracts even more money out of players,
|
||
|
and cards themselves can be a nice memorabilia but otherwise it's mostly annoying and useless.
|
||
|
Implementing it would also take extra effort as well as some hoops to jump through for the player,
|
||
|
so those are not supported right now.
|
||
|
|
||
|
We might implement saving present card data separately, so that it could be transferred to a real
|
||
|
card if somebody *really* wants physical memorabilia.
|
||
|
|
||
|
### AAAAA Player or pseudo-guest play.
|
||
|
Since original paper cards are purchased from game itself, card reader comes with a built-in
|
||
|
dispenser that arcade operator supposed to fill with blank cards (used cards also work), this
|
||
|
dispenser has empty/full status, so that when it's empty game won't "sell" new cards and only
|
||
|
allow either guest play or playing with existing card (as long as it doesn't need renewal).
|
||
|
|
||
|
Game seem to only read dispenser status at boot (and after dispensing a card?), which means
|
||
|
if you "refill" the dispenser (either real or emulated) you'll need to restart the game for
|
||
|
it to recognize that it can dispense more cards. As a result, we can't really force guest
|
||
|
play (unless we also hack into JVS?) if no card was scanned, so we do a pseudo "guest play"
|
||
|
meaning YACE will just write data to a dummy file (`dummy.bin`) and essentially discard all
|
||
|
of the save data created this way. This is mostly harmless but it might fill the high scores
|
||
|
and ghost data with players named AAAAA.
|
||
|
|
||
|
## Game state estimation and issues.
|
||
|
Currently, our only source of information are card and shutter status of the card reader,
|
||
|
as result we can only guess what is actually happening with the game at the moment. This works
|
||
|
for 90% of supported cases but can get out of sync if anything unexpected happens. This also
|
||
|
means than initial state must be synchronized manually, i.e. currently it means you must start
|
||
|
SugoiDeCard when game is in attract (or similar, i.e. real guest play) mode. There are some
|
||
|
safety timeouts in some cases so that if it does get stuck you might get it un-stuck simply by
|
||
|
waiting, but certain cases might require manual reboot.
|
||
|
|
||
|
### Note about renewal
|
||
|
Current version of SugoiDeCard does not have save data parsing, so it has no idea if card needs
|
||
|
renewal or not, since card renewal involves ejecting old card this eject must be ignored, otherwise
|
||
|
it would be treated as a "game over" and renewed card's data would be discarded. To account for this
|
||
|
we wait for a while right after inserting existing card and wait for ejection. In future we might
|
||
|
add optional (since save data is encrypted and you'll need to get keys yourself) save file parsing
|
||
|
to streamline the process.
|
||
|
|
||
|
### Stuck situations
|
||
|
#### Service/Test buttons
|
||
|
Going to service menu automatically ejects card, if this happened while SugoiDeCard was checking
|
||
|
for card renewal, it might get stuck in "playing" state indefinably (needs testing). Otherwise this
|
||
|
ejection would be handled as a regular "game over".
|
||
|
|
||
|
Going to service menu seems to leave shutter in whatever state it was in, i.e. going to service
|
||
|
menu at login screen ("Do you have a card?") will leave shutter open, booting SugoiDeCard in this
|
||
|
state will immediately switch it into "accepting card" state, but it should eventually fall back
|
||
|
to guest playing state and then to idle, if you just wait.
|
||
|
|
||
|
#### Unexpected situations
|
||
|
Any error with save data that could cause game to reject the card (i.e. trying to load japanese
|
||
|
save data on export game, corrupt data) would cause SugoiDeCard immediately switch to "card renewed"
|
||
|
state and possibly get stuck forever in it (needs testing and fixing)
|
||
|
|
||
|
Any connectivity loss (i.e. cable disconnecting, cab losing power/restarting unexpectedly) cannot be
|
||
|
detected at all (as there seemingly no heartbeats between card reader and game board), and will most
|
||
|
likely lead to a desynced state, although when game powers up it will automatically eject the card
|
||
|
so in case of unexpected reboot this ejection would be treated as a "game over".
|
||
|
|
||
|
If machine running SugoiDeCard loses power or if connection breaks, game machine will error out trying
|
||
|
to write the data, however it will write data to a internal backup (5 slots) which *could* be re-written
|
||
|
to card, but SugoiDeCard currently *does not support this at all*.
|