flycast icon indicating copy to clipboard operation
flycast copied to clipboard

[self assigned] [no support requested] [tracking wip feature] derby owners club

Open Tom-Neverwinter opened this issue 1 year ago • 7 comments

Is your feature request related to a problem? Please describe. Derby owners club does not run all satellite systems, sync issue, limitation of current networking

Describe the solution you'd like make game fully playable and bootable by anyone without digging for days.

Describe alternatives you've considered considered? I bought the hardware. that's long gone

Additional context FOR SCIENCE!

================================================================================

https://segaretro.org/Sega_NAOMI#NAOMI_Satellite_Terminal https://emulation.gametechwiki.com/index.php/Sega_NAOMI_and_variants

manuals :) https://segaretro.org/Derby_Owners_Club_World_Edition

more game information: https://horsegamedatabase.miraheze.org/wiki/Derby_Owners_Club

[one rom may be the server and the other may be the client reading some items shows there are two discs not just one] make sure you have your hardware key to dump the roms from your drive.

took a quick look at nulldc bear because why not and its networking took a quick look at redream and a new compiled demul from may check demul video reference; https://youtu.be/jR4_2M1i2Qs?si=tCSuLgjCJcC-wAeU

full race program reference; https://www.youtube.com/watch?v=RYo07FRmJdw

set game assignements: https://www.youtube.com/watch?v=CyMKmgcD-qo

======================================================== The how to so far:

Dump your roms legally make into mame format

then use the "mame extractor" to make it a dreamcast rom [naomi format? I'm not an expert here]

run flycast you need 10 instances [6 minimum], 2 for the terminal [it has multiscreen so maybe 1] and 8 for players

quick and dirty bat file


@echo off
REM Display menu for ROM selection
echo Select a ROM to use:
echo 1. Derby Owners Club
echo 2. Derby Owners Club 2
echo 3. Derby Owners Club World
echo 4. Derby Owners Club World B
echo 5. Derby Owners Club World C
echo 6. Derby Owners Club 2000

REM Prompt for user input
set /p choice="Enter the number of your choice: "

REM Paths for client and server
set CLIENT_PATH="F:\01 - ROMS\Dreamcast\derby owners club\01-client\flycast.exe"
set CLIENT_DATA="F:\01 - ROMS\Dreamcast\derby owners club\01-client\data"
set CLIENT_CONFIG="F:\01 - ROMS\Dreamcast\derby owners club\01-client\emu.cfg"
set SERVER_PATH="F:\01 - ROMS\Dreamcast\derby owners club\01-server\flycast.exe"
set SERVER_DATA="F:\01 - ROMS\Dreamcast\derby owners club\01-server\data"
set SERVER_CONFIG="F:\01 - ROMS\Dreamcast\derby owners club\01-server\emu.cfg"

REM Set the ROM path based on the user's choice
if %choice%==1 set ROM_PATH=%CLIENT_DATA%\derbyoc.zip
if %choice%==2 set ROM_PATH=%CLIENT_DATA%\derbyoc2.zip
if %choice%==3 set ROM_PATH=%CLIENT_DATA%\derbyocw.zip
if %choice%==4 set ROM_PATH=%CLIENT_DATA%\drbyocwb.zip
if %choice%==5 set ROM_PATH=%CLIENT_DATA%\drbyocwc.zip
if %choice%==6 set ROM_PATH=%CLIENT_DATA%\derbyo2k.zip

REM Check if a valid choice was made
if not defined ROM_PATH (
    echo Invalid choice. Exiting.
    exit /b
)

REM Launch server instances with server configuration
echo Launching server instances...
start "" %SERVER_PATH% --config %SERVER_CONFIG% %ROM_PATH%
start "" %SERVER_PATH% --config %SERVER_CONFIG% %ROM_PATH%

REM Wait for servers to initialize
timeout /t 10 /nobreak

REM Launch client instances with client configuration
echo Launching client instances...
start "" %CLIENT_PATH% --config %CLIENT_CONFIG% %ROM_PATH%
start "" %CLIENT_PATH% --config %CLIENT_CONFIG% %ROM_PATH%
start "" %CLIENT_PATH% --config %CLIENT_CONFIG% %ROM_PATH%
start "" %CLIENT_PATH% --config %CLIENT_CONFIG% %ROM_PATH%
start "" %CLIENT_PATH% --config %CLIENT_CONFIG% %ROM_PATH%
start "" %CLIENT_PATH% --config %CLIENT_CONFIG% %ROM_PATH%

echo All instances launched.

master and slave works/ client and server

client config:

[achievements]
Enabled = no
HardcoreMode = no
Token = 
UserName = 

[audio]
VmuSound = no
backend = auto

[config]
BoxartDisplayMode = yes
Debug.GDBEnabled = no
Debug.GDBPort = 3263
Debug.GDBWaitForConnection = no
Debug.SerialConsoleEnabled = no
Debug.SerialPTY = no
DiscordPresence = yes
Dreamcast.AutoLoadState = no
Dreamcast.AutoSaveState = no
Dreamcast.Broadcast = 0
Dreamcast.Cable = 3
Dreamcast.ContentPath = F:\01 - ROMS\Dreamcast\derby owners club\flycast\data
Dreamcast.HideLegacyNaomiRoms = yes
Dreamcast.Language = 1
Dreamcast.RamMod32MB = yes
Dreamcast.Region = 1
Dreamcast.SavestateSlot = 0
Dynarec.Enabled = yes
FastGDRomLoad = no
FetchBoxart = yes
ForceFreePlay = yes
PerGameVmu = no
Profiler.DrawGUI = no
Profiler.Enabled = no
Profiler.FrameWarningTime = 0.018182
Profiler.OutputTTY = no
Sh4Clock = 200
UIScaling = 100
UploadCrashLogs = yes
UseReios = no
aica.AutoLatency = no
aica.BufferSize = 2822
aica.DSPEnabled = no
aica.Volume = 100
pvr.AutoSkipFrame = 0
pvr.MaxThreads = 3
pvr.rend = 2
rend.AnisotropicFiltering = 1
rend.CrossHairColor1 = 0
rend.CrossHairColor2 = 0
rend.CrossHairColor3 = 0
rend.CrossHairColor4 = 0
rend.CrosshairSize = 40
rend.CustomGpuDriver = no
rend.CustomTextures = no
rend.DelayFrameSwapping = yes
rend.DumpTextures = no
rend.DupeFrames = no
rend.EmulateFramebuffer = no
rend.ExtraDepthScale = 1.000000
rend.FixUpscaleBleedingEdge = yes
rend.FloatVMUs = no
rend.Fog = yes
rend.MaxFilteredTextureSize = 256
rend.ModifierVolumes = yes
rend.NativeDepthInterpolation = no
rend.PerPixelLayers = 32
rend.PerStripSorting = no
rend.PixelBufferSize = 536870912
rend.RenderToTextureBuffer = no
rend.Resolution = 480
rend.Rotate90 = no
rend.ScreenStretching = 100
rend.ShowFPS = no
rend.SuperWideScreen = no
rend.TextureFiltering = 0
rend.TextureUpscale = 1
rend.ThreadedRendering = yes
rend.TranslucentPolygonDepthMask = no
rend.UseMipmaps = yes
rend.VideoRouting = no
rend.VideoRoutingScale = no
rend.VideoRoutingVRes = 720
rend.WideScreen = no
rend.WidescreenGameHacks = no
rend.vsync = yes
ta.skip = 0

[input]
MouseSensitivity = 100
RawInput = no
VirtualGamepadVibration = 20
device1 = 0
device1.1 = 1
device1.2 = 1
device2 = 10
device2.1 = 10
device2.2 = 10
device3 = 10
device3.1 = 10
device3.2 = 10
device4 = 10
device4.1 = 10
device4.2 = 10
maple_sdl_keyboard = 0
maple_sdl_mouse = 0

[network]
ActAsServer = no
BattleCable = no
DNS = 46.101.91.123
EmulateBBA = yes
Enable = yes
EnableUPnP = yes
GGPO = no
GGPOAnalogAxes = 0
GGPOChat = yes
GGPOChatTimeout = 10
GGPOChatTimeoutToggle = yes
GGPODelay = 0
LocalPort = 37391
MultiboardSlaves = 1
NetworkOutput = yes
Stats = yes
server = 

[validate]
OpenGlChecks = no

[window]
fullscreen = no
height = 480
left = 267
maximized = no
top = 242
width = 1046

server:

[achievements]
Enabled = no
HardcoreMode = no
Token = 
UserName = 

[audio]
VmuSound = no
backend = auto

[config]
BoxartDisplayMode = yes
Debug.GDBEnabled = no
Debug.GDBPort = 3263
Debug.GDBWaitForConnection = no
Debug.SerialConsoleEnabled = no
Debug.SerialPTY = no
DiscordPresence = yes
Dreamcast.AutoLoadState = no
Dreamcast.AutoSaveState = no
Dreamcast.Broadcast = 0
Dreamcast.Cable = 3
Dreamcast.ContentPath = F:\01 - ROMS\Dreamcast\derby owners club\flycast\data
Dreamcast.HideLegacyNaomiRoms = yes
Dreamcast.Language = 1
Dreamcast.RamMod32MB = yes
Dreamcast.Region = 1
Dreamcast.SavestateSlot = 0
Dynarec.Enabled = yes
FastGDRomLoad = no
FetchBoxart = yes
ForceFreePlay = yes
PerGameVmu = no
Profiler.DrawGUI = no
Profiler.Enabled = no
Profiler.FrameWarningTime = 0.018182
Profiler.OutputTTY = no
Sh4Clock = 200
UIScaling = 100
UploadCrashLogs = yes
UseReios = no
aica.AutoLatency = no
aica.BufferSize = 2822
aica.DSPEnabled = no
aica.Volume = 100
pvr.AutoSkipFrame = 0
pvr.MaxThreads = 3
pvr.rend = 2
rend.AnisotropicFiltering = 1
rend.CrossHairColor1 = 0
rend.CrossHairColor2 = 0
rend.CrossHairColor3 = 0
rend.CrossHairColor4 = 0
rend.CrosshairSize = 40
rend.CustomGpuDriver = no
rend.CustomTextures = no
rend.DelayFrameSwapping = yes
rend.DumpTextures = no
rend.DupeFrames = no
rend.EmulateFramebuffer = no
rend.ExtraDepthScale = 1.000000
rend.FixUpscaleBleedingEdge = yes
rend.FloatVMUs = no
rend.Fog = yes
rend.MaxFilteredTextureSize = 256
rend.ModifierVolumes = yes
rend.NativeDepthInterpolation = no
rend.PerPixelLayers = 32
rend.PerStripSorting = no
rend.PixelBufferSize = 536870912
rend.RenderToTextureBuffer = no
rend.Resolution = 480
rend.Rotate90 = no
rend.ScreenStretching = 100
rend.ShowFPS = no
rend.SuperWideScreen = no
rend.TextureFiltering = 0
rend.TextureUpscale = 1
rend.ThreadedRendering = yes
rend.TranslucentPolygonDepthMask = no
rend.UseMipmaps = yes
rend.VideoRouting = no
rend.VideoRoutingScale = no
rend.VideoRoutingVRes = 720
rend.WideScreen = no
rend.WidescreenGameHacks = no
rend.vsync = yes
ta.skip = 0

[input]
MouseSensitivity = 100
RawInput = no
VirtualGamepadVibration = 20
device1 = 0
device1.1 = 1
device1.2 = 1
device2 = 10
device2.1 = 10
device2.2 = 10
device3 = 10
device3.1 = 10
device3.2 = 10
device4 = 10
device4.1 = 10
device4.2 = 10
maple_sdl_keyboard = 0
maple_sdl_mouse = 0

[network]
ActAsServer = yes
BattleCable = no
DNS = 46.101.91.123
EmulateBBA = yes
Enable = yes
EnableUPnP = yes
GGPO = no
GGPOAnalogAxes = 0
GGPOChat = yes
GGPOChatTimeout = 10
GGPOChatTimeoutToggle = yes
GGPODelay = 0
LocalPort = 37391
MultiboardSlaves = 2
NetworkOutput = yes
Stats = yes
server = 

[validate]
OpenGlChecks = no

[window]
fullscreen = no
height = 480
left = 294
maximized = no
top = 153
width = 1046

do a sensible thing way late, check image integrity. https://github.com/DerekPascarella/UniversalDreamcastPatcher#existing-features

check error codes for next hint: https://wiki.arcadeotaku.com/w/Sega_NAOMI_Error_Codes

save for later? https://github.com/mathieulh/SEGA_DIMM_CD-R

then open naiso, select your iso, paste your security PIC key, set the info file name to something that matches your current PIC, (if it's a 00 key PIC, that's usually ABC.BIN), paste a new key if you are using a non zero PIC, and click on "Start"

go down new rabbit hole: https://www.arcade-projects.com/threads/how-to-create-a-zero-key-pic-for-net-booting-and-cf-on-naomi-chihiro-and-triforce.6611/ [this cant be the issue can it? this is the easiest thing on earth to make] here are the tools incase anyone else needs it: https://github.com/mathieulh/SEGA_DIMM_CD-R

This is a list of all possible bios items:

"epr-23605c.bin"
"epr-23607B.bin"
"epr-23608B.bin"
"epr-23609.bin"
"ABC_BIN_0000000000000000.bin"
"ABC_BIN_0000000000000000_NET.bin"
"dcnaodev.bios"
"epr-21330.bin"
"epr-21331.bin"
"epr-21576.bin"
"epr-21576b.bin"
"epr-21576d.bin"
"epr-21576e.bin"
"epr-21576g.bin"
"epr-21576h.bin"
"epr-21577d.bin"
"epr-21577e.bin"
"epr-21577g.bin"
"epr-21578b.bin"
"epr-21578d.bin"
"epr-21578e.bin"
"epr-21578g.bin"
"epr-21578H.bin"
"epr-21801.bin"
"epr-21802.bin"
"epr-22850.bin"
"epr-22851.bin"
"epr-23511C.bin"

requires testing of multi-region bios and modified bios vs stock bios

may need to build tool for users to modify bios and dipswitches respectively, test mode button naomi 2 jumpers: https://www.youtube.com/watch?v=weOClPKwUEo

Tom-Neverwinter avatar Aug 28 '24 20:08 Tom-Neverwinter

add note for something to check from user crediar/ kretiar on arcade community discord [triforce yet may explain the sync issue if wrong protocol or number set]

I also fixed something network related, apparently they expect the handles from sockets to be in range of 0-63, which on modern system never happens to get a handle that low in number. They basically use that number as multiplier into a buffer and when the number is higher than 63 then it falls back to 0 which of course is very bad.

Solving that issue actually made the key of avalon games at least boot.

Something very strange as well when using the V2 protocol you have to trigger an IRQ from the SP1 port once the DI command is done.

https://discord.com/channels/712261437757849620/751033790096474122/1281178098783486003

Tom-Neverwinter avatar Sep 10 '24 16:09 Tom-Neverwinter

as per: https://forum.arcadecontrols.com/index.php?topic=166191.0

I've managed to make both PC's sync :

The weird thing is that flycast is not syncing the NAOMI2 title screen. It appears 1 second before on server PC and this makes the sync fail.
I've fixed this by entering and exiting the test menu on both PC's at the same time. When restarting the game the naomi2 title screen has appeared at the same time on both and then they've synced and gone ingame.

Did it work without having to do this on previous flycast versions?  That would be a regression then.

nvm, already reported: https://github.com/flyinghead/flycast/issues/669

Tom-Neverwinter avatar Sep 12 '24 07:09 Tom-Neverwinter

This was amazing to read, been down the rabbit hole myself recently….nothing works. Best of luck!!!

Only major update is that the YACardEmu can connect through serial https://github.com/DerbyOwnersClub/YACardEmu [however seems someone will have to compile it with a serial interface added]. the controller for doc is also not emulated/dumped and of course serial communication is still broken.

I was working on a card reader idea but i have no idea if it will work as you need the raw of the card.

Tom-Neverwinter avatar Oct 07 '25 00:10 Tom-Neverwinter

Recently got the master to move past "checking network" blue screen, to "send go signal to slaves" blue screen...exciting. was using Python to network on the same machine.

Recently got the master to move past "checking network" blue screen, to "send go signal to slaves" blue screen...exciting. was using Python to network on the same machine.

would love to see a writeup on how you did it

Tom-Neverwinter avatar Oct 24 '25 00:10 Tom-Neverwinter

Will Post here, its on other computer and was mostly done with Cursor agent, so i can't take real credit. The agent doesnt have the context bandwith to run with it. When I am done my real project I can sick Claud eon it, maybe a better result.