A server emulator for Digimon Online v1.5.

Related tags

Emulators RustyDO
Overview

RustyDO

A server emulator for Digimon Online v1.5.

Credits

Digimon Online v1.5 was created by CCR. The rights of the game and its IP belong to CCR and BANDAI, respectively.

This repository is to emulate the server and does not copyright the game itself in any form or use it for profit. The user is solely responsible for the consequences of using this.

This repository is maintained by JungHyun Kim (@jidoc01).

Objective

This project is an open-source version of a toy server that I used to make in my free time. The goal is to recreate the game server of the time. Due to the lack of information, difficulties are expected, but we can try to imitate it as much as we can.

Videos

Video Label

Screenshots

lobby
In a lobby
room
In a room
game
In a game

References

How to run

Pre-requisite for Server

Build the source code

First, you need to clone this respository: git clone https://github.com/jidoc01/RustyDO

After cloning it, compile the source code: cargo build --release

When it succeeds, it will generate an executable on {root_directory}/target/release/server.exe. Copy the executable to some place and put config.toml to the same directory.

Run the server

To run the server, launch the server.exe. It will open network port 9874 for both TCP and UDP. So, you should not use any of the same ports to prevent port collision. It is not modifiable unless you directly hack the client, and it is easily achievable but out-of-scope here.

Run the client

First, download the client file digimonbattleserver.rar and uncompress it to some place.

In its root directory, there are three sub-directories. You will use Digimon Online directory only.

Before launching the client, you should prepare some configurations.

Edit the server configuration

In the Digimon Online directory, there is svr.info, and open it with a text editor. Then, you can see ip addresses there. Replace them with your ip address. Let SERVER_IP be your ip address, then it'd look like:

101	0	100	SERVER_IP		Status1
...
401	3	5000	SERVER_IP		폴더대륙

Note that the address should be a public ip address if it needs to be accessed via public network. And it should be a dot-separated address, not a domain name.

Edit the registry

You need to write the absolute path of Digimon Online directory into the registry item HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\X2Online\Digimon Online V1.5 with a key PATH.

For example, if your Digimon Online directory is C:/X2Online/Digimon Online, then you can use the following registry script:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\X2Online\Digimon Online V1.5]
"PATH"="C:\\X2Online\\Digimon Online"

Launch the client executable

Now you can launch the client executable in Digimon Online directory. In the directory, the following instruction will launch the game: digimon.dll "1 1".

FYI, you can write a batch script (*.bat) and launch it instead of typing the instruction every time you launch the game.

To those who want to contribute

This project only implements basic functions. The parts that need to be implemented are marked as TODO on the source code.

If you want to implement TODO, introduce new features (ex. processing a new packet, introducing new implementation, etc.), or improve inefficient parts of its existing implementation, feel free to issue. Especially, it is written in Rust language, but I am not very fluent in the language. And I am not aware of server architectures. Feel free to suggest any form of improvement in its design.

Features

There are features not implemented (or finished) yet. You can search TODO in the source code to check what features are not implemented yet.

Board

  • Writing a new post.
  • Reading a post.
  • Modification/deletion/reply of posts.

Shop

  • Entering/Leaving a shop.
  • Checking validity of purchasing.

Room

  • Changing team/character/map.
  • Kicking a player.

In-game

  • Basic movements.
  • Using items.
  • Expressing emotions.
  • Kurumon generation algorithm.
    • It could be impossible to recover the exact algorithms which its original server used.
    • But I hope we imitate it as much as we can.
  • Item generation algorithm.
  • Red crack generation algorithm.
  • Improving priority calculation algorithm.
  • Leaving a game while playing it.
  • Gaining experiences after game.

Messenger

  • Packet analysis (both in TCP/UDP).

Ranking

  • Packet analysis.

Etc.

  • Changing nickname.
  • Changing game settings.
  • Chatting.
  • Whispering.
  • Server migration.
  • Scheduling priority in events.

License

GNU AGPL v3+

Copyright 2022 JungHyun Kim

You might also like...
An NES emulator written in Rust

Pinky Pinky is an NES emulator written in Rust completely from scratch based only on publicly available documentation. You can run it in your Web brow

NES emulator written in Rust

sprocketnes is an emulator for the Nintendo Entertainment System written in the Rust programming language. Its purpose is to serve as a technology dem

NES emulator in rust
NES emulator in rust

NES emulator in Rust plastic is a NES emulator built from scratch using Rust. This is a personal project for fun and to experience emulating hardware

ZX Spectrum emulator written in Rust
ZX Spectrum emulator written in Rust

rustzx ZX Spectrum emulator which I writing in rust. I develop this project just for fun and for learning the basics of computer architecture. License

R.A.Z.E. A ZX Spectrum Emulator

R.A.Z.E. A ZX Spectrum emulator This project is part of a friendly competition to build an emulator using Rust and WebAssembly. Check the live version

Rustual Boy - A Virtual Boy emulator.
Rustual Boy - A Virtual Boy emulator.

Rustual Boy Description Rustual Boy is a Virtual Boy emulator. It can be used to play existing Virtual Boy games, as well as be a helpful development/

Intel 8080 cpu emulator by Rust
Intel 8080 cpu emulator by Rust

i8080 i8080 is a emulator for Intel 8080 cpu. 8080 Programmers Manual 8080 opcodes [dependencies] i8080 = { git = "https://github.com/mohanson/i8080"

TestSuite4 is a framework designed to simplify development and testing of TON Contracts. It includes light-weight emulator of blockchain making it easy to develop contracts.

TestSuite4 0.1.2 TestSuite4 is a framework designed to simplify development and testing of TON Contracts. It contains lightweight blockchain emulator

Learn emulator and programming languages, target chip8, nes, gbc, gba ...
Learn emulator and programming languages, target chip8, nes, gbc, gba ...

[WIP]learn emulator go-chip8 go run main.go source https://en.wikipedia.org/wiki/CHIP-8 http://devernay.free.fr/hacks/chip8/C8TECH10.HTM https://githu

Comments
  • Implement RC4 algorithm in a self-contained manner

    Implement RC4 algorithm in a self-contained manner

    Our RC4 algorithm has been implemented with Windows internal APIs. It was because the encryption result from DO client (in Windows) and the general RC4 algorithm did not match. And it was due to padding. Refer to: https://docs.microsoft.com/en-us/windows/win32/seccrypto/salt-value-functionality

    So it is now available to implement the algorithm w/o Windows APIs.

    enhancement 
    opened by jidoc01 0
Releases(v0.0.1)
Owner
JungHyun Kim
Interested in disassembly.
JungHyun Kim
Nes-emulator - A NES emulator made to learn the Rust programming language

nes-emulator Building $ rustc --version rustc 1.32.0 (9fda7c223 2019-01-16) $ cargo --version cargo 1.32.0 (8610973aa 2019-01-02) $ cargo build --rel

Michael Burge 225 Dec 23, 2022
Unicorn Emulator Debug Server - Written in Rust, with bindings of C, Go, Java and Python

udbserver - Unicorn Emulator Debug Server When you do emulation with Unicorn Engine, do you want to inspect the inner state during every step? udbserv

Bet4 246 Dec 27, 2022
Commodore 64 emulator written in Rust

Rust64 - a C64 emulator written in Rust This is my attempt to study the Rust programming language and have fun at the same time. The goal is to presen

Krzysztof Kondrak 214 Dec 27, 2022
A Flash Player emulator written in Rust

website | demo | nightly builds | wiki Ruffle Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both t

Ruffle 11.2k Jan 8, 2023
A Game Boy research project and emulator written in Rust

Mooneye GB Mooneye GB is a Game Boy research project and emulator written in Rust. The main goals of this project are accuracy and documentation. Some

Joonas Javanainen 802 Dec 28, 2022
A Gameboy Emulator in Rust

RBoy A Gameboy Color Emulator written in Rust Implemented CPU All instructions correct All timings correct Double speed mode GPU Normal mode Color mod

Mathijs van de Nes 512 Dec 23, 2022
RGB (Rust Game Boy) is a simple emulator for the original game boy

RGB RGB (Rust Game Boy) is a simple emulator for the original game boy and the color game boy. Warning: This no longer compiles in the latest versions

Niven Achenjang 18 Dec 2, 2022
Full featured Cross-platform GameBoy emulator by Rust. Forever boys!.

Gameboy Full featured Cross-platform GameBoy emulator. Forever boys!. You can start a game with the following command, here with a built-in game "Boxe

Mohanson 1.2k Jan 2, 2023
RustBoyAdvance-NG is a Nintendo™ Game Boy Advance emulator and debugger, written in the rust programming language.

RustBoyAdvance-NG Nintendo GameBoy Advance ™ emulator and debugger, written in rust. WebAssembly Demo: https://michelhe.github.io/rustboyadvance-ng/ P

MishMish 510 Dec 30, 2022
NES emulator written in Rust to learn Rust

OxideNES A NES emulator in Rust. CPU should be accurate, PPU is mostly accurate, timing between the 2 is off for some corner cases and hardware qui

null 37 Nov 7, 2022