Skip to content

Instantly share code, notes, and snippets.

@SirusDoma
Last active July 20, 2026 06:23
Show Gist options
  • Select an option

  • Save SirusDoma/97fa562558f8d60db047494442650ae6 to your computer and use it in GitHub Desktop.

Select an option

Save SirusDoma/97fa562558f8d60db047494442650ae6 to your computer and use it in GitHub Desktop.
CXO2: O2Jam Remake Project

CXO2

A faithful, customizable, and cross-platform implementation of O2Jam client written in C++ on top of Genode, an in-house game engine based on SFML.

Unlike other remake or clone projects, the project is made to be a faithful, literal "clone"/"carbon copy". This includes everything we know about O2Jam, including but not limited to: interface, avatar, asset formats, network protocol and online system.

It is not aimed to be a 1:1, which means some minor design/details may deviate slightly from the original O2Jam, But the project will always remain faithful to the original O2Jam.

The end goal is to remake every official major clients released by e-Games and Nowcom.

Installation

  1. Download and install O2Jam Client v3.10 somewhere in the internet (v3.15 or v3.38 may work, but untested)
  2. Download OTwo.zip (click or right click -> save as the view the full file to download)
  3. (Optional) Backup original OTwo.exe in the game installation folder (default: C:\Program Files (x86)\e-Games\O2Jam)
  4. Extract the contents of OTwo.zip to the game installation folder
  5. Run CXO2.exe, register / login and then press start.

Extra controls

  • Alt+Enter: Switch between full and windowed mode
  • Alt+Up: Switch between letter box and stretch mode
  • F10: (non-ingame screen) Switch vsync on/off.

Updating the game

The patcher is a stub program and does nothing. Any updates must manually downloaded from this document until the patcher work properly.

Feedback

These programs did not collect any information, including error and crashes.

If you are encounter any bugs, error or crashes; or simply have questions regarding this project, please use the comment section below. Any input and bug reports are highly appreciated.

Updates

19/08/2025

Initial beta release

Hotfix #1

Fix thumbnail and cover loading

20/08/2025

Hotfix: Fix gameplay crash when 3D effect is disabled

24/08/2025

Experimental: macOS and linux build

27/08/2025

Various bug fixes:

  • Regression fix: room slot lock/unlock cover visual is not reflected
  • Fix black screen during loading
  • Fix state mismatch when a user join the room during STATE_RESULT
  • Fix thumbnail loading mismatch in SelectMusicDialog
  • Fix female avatar not loaded correctly in STATE_PLAYING7K
  • Fix outdated session info shown in STATE_ROOM
  • Fix incorrect music level indicator in STATE_PLAYING7K

Enhancements:

  • Limited support parsing text with legacy Unicode encoding using system font fallback mechanism
  • Support sending wide string to the server
  • Emoticon now reflected to other players
  • new (encrypted) OJN is now supported

28/08/2025

Minor improvements:

  • Re-enable retry button (only for Single mode)
  • Music selection color coding for unavailable music
  • BugFix: fix incorrect no music indicator of other players when the player themselves doesn't have the selected music

Additionally, the launcher has been replaced. Admittedly, it looks far worse than previous ones, but this is required to avoid using any copyrighted materials; so please bear with me!

29/08/2025

Hotfix: Fix launcher that break for some people.

FAQ

How long the server will open?

3-4 weeks. The client will remain work if you host your own server (or connect to the other server if someone hosting the server) afterward

Where to get 3.10 client? is this going to work with 9you/1.8 client?

You have to find the client by yourself and I cannot help you with that. And no, the client is not compatible to run with 1.8 client

What game client version supported?

v3.10 (pre NX era). v3.15 or v3.38 may work, but untested.

The game triggered my Windows defender. Is this safe?

I have no idea why this trigger the windows defender but there's nothing malicious about these programs, you can scan the files with anti virus or virustotal (OTwo.exe) by yourself.

That said, use the client at your own risk, I will not be responsible for any damages caused by these programs.

The game is flickering. How to fix this?

This may happen if you have multi monitors, each has different refresh rate. This is known issue, in the meantime, you can turn off game V-Sync by pressing F10.

Where's the ring/modifier? Why I can't set my speed when joining a room? Why some equip item slots/categories missing? Where's OJNList.dat? Where's (insert feature here)?

One of the project goals is to remake all major O2Jam client versions that were ever published by e-Games and Nowcom. Starting from v3.10, because it is the earliest client that is available in my disposal.

O2Jam v3.10 does not have ring/modifier among other things. The next iteration will bring these features.

Can I use custom music?

Absolutely, although the client and server will perform no validation to your music list. This is because client v3.10 does not have OJNList.dat implemented.

It is easy to spoof, the music. So please be mindful when playing with others.

The music title in music selection is incorrect or gibberish, it supposed to be displayed in (Chinese/Japanese/Korea/etc). Can you fix it?

Currently, the game implemented support for legacy Unicode encodings. However, the encoding information is not included in OJN header, so the game has to guess it. Unfortunately, this mean the decoding process is not guaranteed to be reliable all the time. Still, if this led to game crash, let me know in the comments below.

You may not notice it, but this issue also appear in the original client. Each O2Jam distribution use different set of localization implementation, which mean it may use different fonts (and probably encoding handling too). For example, using chinese title in O2Jam client v1.8 (9you) will likely work and reliable, but the game will likely fail to display the titile for any song with Korean title. The opposite also happening with O2Jam Korea client.

How about mods? What are the file formats the client use?

The game is a drop-in replacement of original OTwo.exe, which mean it can read all files that original O2Jam client can read, including .opi/.opa and .ojn/.ojm (and in the future, OJNList.dat).

This mean modded Interface1.opi, Playing1.opi and/or Avatar.opa may work in this client, as long as the files are compatible with v3.10.

The client also extend the interface/avatar asset pipeline further by utilizing json format and extremely extendible for this front, you can use this to mod or even build the scene composition from the scratch. The details will be shared later.

Further modding (such as extending game via library (.dll)) is still under planning phase. Please note that any dll injection that you use with original OTwo.exe will not work.

Also, since the game use same network format, you can play the original game client v3.10 in this server as well. Cool right?

Can I host my own server?

Absolutely, use Mozart.Encore to host your own server or for local (network) play. Follow the instruction in the README, and then do the following:

$ mozart.encore.exe user:register myusername mypassword

$ mozart.encore.exe user:authorize myusername mypassword

(Copy launch token)

Run OTwo.exe with the following arguments:
OTwo.exe <paste launch token here> my-ftp-server:1234 O2Jam 3 127.0.0.1 15010 127.0.0.1 15010 127.0.0.1 15010 

Replace "127.0.0.1" with your server address (if you are hosting private server)

Note that you can't use CXO2.exe when hosting your own server.

Is offline mode supported?

It is not possible at the moment but it is already partially implemented inside the code. For now, you will have to use Mozart.Encore to setup local server.

Where's Mac/Linux build?

The build systems for OSX and Linux are currently broken. This is not the priority at the moment to fix these issues, but please do let me know in the comment section if you wish to run the game in these platform.

Update: 24/08/2025

Build for macOS and Linux is available to download. However, it does not include launcher because currently the launcher is exclusively run only in windows.

You have to pass correct argument in order to play in these platforms:

macOS (Apple Silicon only (arm64))
  1. Download the OTwo.macOS.zip, open and move the OTwo.app into different folder
  2. You may need to move the app out of quarantine via xattr -d OTwo.app in terminal
  3. Right click -> Show contents and then go to Contents/MacOS and put game files inside this folder
  4. Run the OTwo executable inside the Contents/MacOS with appropriate launch arguments

Launching the app bundle currently does not work because the app bundle will fail to locate the game installation files.

Linux (x64)

Tested on SteamDeck (although, it is slightly different build)

  1. Install necessary dependencies to run the game
  2. You may need to grant execute permission by using chmod +x ./OTwo
  3. Run the OTwo executable with appropriate launch arguments

Note: Currently running the game in these platforms is considered experimental, further updates may not be backported to these builds during the testing period.

Is this open source?

https://github.com/SirusDoma/CXO2

Is this Illegal?

I'm not distributing any e-Games/Nowcom/O2Jam IP. Users must provide legally obtained game installer to play this game.

The game did not contain any copyrighted materials, the source code are written from scratch and none copied from the original game binaries.

Is there any website / discord server?

None at the moment.

This file has been truncated, but you can view the full file.
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

@SirusDoma

Copy link
Copy Markdown
Author

Hey guys, its work today ? I can't create my account. Captura de tela 2026-05-25 154036

No, as stated in the gist, the server is no longer up. You need to setup your own (local) server.

@vea5367643

Copy link
Copy Markdown

can someone teach me how to make it run using mac.. Im quite new using mac. I know I should'nt have to use mac but this is the only device I have now for work and I miss playing this game.

@SirusDoma

Copy link
Copy Markdown
Author

It's been a while people, but finally after 3 months break, I decided to officially released the last Mozart build: Memoryer.Encore! This include several improvements compared to the dev build observed above, namely UDP relay improvements and some minor bug fixes.

This server build support O2Jam Classic client, the latest and last client that released by NOWCOM with 3K Mode and Live Mode. I wrote something in the README for workaround to run the game, which require either binary patching to the client to play proper online matchmaking or some extensive network configuration to play locally (it might be feasible to play online / LAN with local reverse proxy).

image

I won't say the server is bug-free now, in fact, it severely lack of play-testing, so any incoming PR or bug reports are highly appreciated. I'll still do minor improvements and bug-fixing for any incoming reports, but from now, I will shift my focus back on developing the client since the server for all client versions that I wanted to support are established.

Finally, here is a picture where I run all O2Jam client released throughout the official service lifetime
image

@keyboardzxb

Copy link
Copy Markdown

Great, needless to say, it seems that I don't need to continue developing the client anymore. I would like to call DOMA the true god of O2JAM!

@SirusDoma

Copy link
Copy Markdown
Author

can someone teach me how to make it run using mac.. Im quite new using mac. I know I should'nt have to use mac but this is the only device I have now for work and I miss playing this game.

I missed this, there is no straightforward way to run the mac executable at this point, you will need O2Jam 3.10 files extracted the installer, then from you can try download OTwo.app and place it in the same folder as the O2Jam files, setup mozart.encore and run the executable inside the OTwo.app based on command line instruction in mozart.encore

I am currently still working the client so that it able to run offline, which should simplify the steps above. But in any case, you are required to obtain O2Jam v3.10 on your own, and I cannot help you with that

@SirusDoma

Copy link
Copy Markdown
Author

Flash News

I made numerous improvements to the internal engine of CXO2. Including network stability improvements, video rendering bug fixes and most importantly, offline mode. The changes also laying out most of the groundwork for plugin/modding system using event-driven based system, it is not fully implemented yet, but its getting there.

You can grab the latest build here:
https://github.com/SirusDoma/CXO2/actions/runs/29639982944

How to run the game in offline mode:
Open the game normally via double-click, it's that simple :)
The game will write session.json which will contain the player information. Edit the file if you would like to change your profile.

For macOS:
Grab the game from above build and follow this instruction. If you are using old macbook, there's a build available for intel-based (x64) macOS too. Since the game now support offline mode, you just need to open the app normally after you done with the instruction above.

@keyboardzxb

Copy link
Copy Markdown

I have tested the Windows version and it runs perfectly, it’s extremely impressive! However, I need to report two issues to you. 1. The score calculation values of the game are higher compared to the original version. 2. A tiny number of songs with Chinese titles in the game display garbled text; the "name" field in session.json does not support Chinese characters, resulting in garbled text. Overall, this is an excellent submission, thank you for all your hard work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment