> If model 1 is anything like model 2 then comms may not work too well anyway as it > expects 0 latency between transmitting/receiving packets which it seems is near > impossible over a PC network. I tried it with model 2 emu with pretty poor results.
Well, m2emu works fine enough with up to 4 fast PCs and Gigabit Ethernet. Without FrameSync (i guess that's default anyway) Daytona and SegaRally work fine with 3 Units. With FrameSync enabled i got a stable link between 4 units working (more may be possible though).
"FrameSync=1" in m2network.ini does the trick. Most noticable if you kill the Master Unit - The slaves freeze.
On the Model1 Front: I guess the Model1 Comm-Board is pretty close to the original Model2 one, with only a smaller memory window. (2K/4K @ 0x00b00000 in Model1 - 32/64K @ 0x01a10000 in Model2) Also the "unknown daytona read" at 0x01c00040 (Model2) looks amazing similar to the "network ctrl" at 0x00c00040 (Model1).
Using M2emus LUA scripts, I read (and via cheat menu wrote) from/to the network boards memory and got a pretty good idea on how the board is accessed from M2 side. Then I tinkered around in MAME and can get Daytona and Sega Rally to actually think they are connected to a certain number of nodes (1 Player Link System... They even did Graphics for that!).
Then again, I've startet debuging Virtua Racing (and WingWar), and noticed a lot of unmapped memory accesses to 0x00b00000 which I believe is a 4K shared memory window for/on the network board. Also there seems to be some kind of register space at 0x00c00100 though I have yet to confirm these actually belong to the network board. I can get Virtua Racing/Formula up and waiting for communications opposed to crashing "network board not found". And I can get them ingame thinking they are linked up.
I am far from "emulating" anything though. I got several ideas on what and how it does.
Code:
offs mask data comments network_w: 0000 ff00 0100 - set "master" (0000 = relay, 0100 = master, 0200 = slave) network_w: 0800 00ff 0000 - disable linking network_w: 0000 00ff 0005 - ? network_w: 0800 00ff 0001 - enable linking network_r: 0000 00ff - check status network_r: 0001 ff00 - check total nodes network_r: 0001 00ff - check my id
> Anything committable? It'd be great to see lamp outputs in Virtua Racing etc. I've commited lamp outputs for "all other games" a while ago. Virtua Racing seems to work in a different way. The IO port is the same but the lamps are getting transmitted in blocks of like 16 bytes each XORed together get you the actual output. I have yet to find a reliable logic for that. Got two, first one works "ingame", second one works in "attract". But not both
And of course... Some pretty screenshots!
Sega Rally actually takes everything up to 15 nodes.
Virtua Racing/Formula get into attract mode, can be coined up, but keep wainting for challengers forever
WingWar at least detects the board and gets happy if I fake a link.