Skip to content

Instantly share code, notes, and snippets.

@SirusDoma
Last active July 18, 2026 14:44
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

SirusDoma commented Apr 12, 2026

Copy link
Copy Markdown
Author

EDIT: IdentityP2.Encore is released!
https://github.com/SirusDoma/Mozart.Encore/releases/tag/v5.0.0

Full network support for O2JamO2 Final (v5.89). 3K Mode supported*.
* Require compatible a OJNList.dat to work. May compatible with simpler version of OJNList.dat

The supported client is equivalent to the O2Solista client (should work with O2Solista v0.3, v0.5, or v0.6). Unfortunately, I don't have an official installer for this one. If anyone has, please share!

The OJNList parser has been updated, refer to that if you need to figure out how to write OJNList.dat encoder for this particular clients

@SirusDoma

Copy link
Copy Markdown
Author

If you are wondering, here's what O2JamO2 Final looks like!

Planet selection:
image

Room creation overhauled: No more Single, Versus, Album and Couple. Replaced with 3K and 7K (5K never implemented)
image

One of the major improvements is that it officially supports Windowed mode!
image

Reworked Music selection, with extra filters, download music and preview music.
image

Another cool improvement is to support FTP-based music downloads within the room for all room members.
image

3K Mode gameplay
image

@SirusDoma

Copy link
Copy Markdown
Author

Some progress regarding O2Classic. It turns out the LIVE mode relies on peer-to-peer (p2p) connection. There are 3 hardcoded IPs for each server act as relay servers. I am not entirely familiar how p2p works in general, so this need might take some time to support.

image

@keyboardzxb

Copy link
Copy Markdown

Finally started developing the final version and are looking forward to it.

@SirusDoma

SirusDoma commented Apr 25, 2026

Copy link
Copy Markdown
Author

The dev branch for codename: Memoryer.Encore is up! You can find the branch here:
https://github.com/SirusDoma/Mozart.Encore/tree/dev/memoryer

(As the time of writing, the README and source path has not been updated yet, they still use IdentityP2, be careful when you cloning this branch, I do force push a lot, so you may need to re-clone / re-download instead of git pull to update the code)

image

Every opcodes for main tcp game server + relay server is discovered, but some data are still stubbed, especially the peer to peer relay and server sync stuff. The Live mode is yet to be tested and implemented thoroughly.

If you have some time, feel free to give the Live mode a try, but heads up: the relay server ip strings for peer to peer are hardcoded, you can find those ip in config.ini, so the setup is not that trivial; you have to either patch the OTwo.exe or reroute so that these ip points to the Memoryer.Encore relay ip. The ports are also hardcoded and written in int32 so it might be tricky to patch

@keyboardzxb

Copy link
Copy Markdown

[memoryer]A bug was discovered that after player 1 leaves the room, the status will not be updated immediately, and player 2's room will still display that player 1 is in the room. After the homeowner leaves the room, they will not be handed over to other players, which will result in the absence of a homeowner's room in the future.
BUG

@SirusDoma

Copy link
Copy Markdown
Author

[memoryer]A bug was discovered that after player 1 leaves the room, the status will not be updated immediately, and player 2's room will still display that player 1 is in the room. After the homeowner leaves the room, they will not be handed over to other players, which will result in the absence of a homeowner's room in the future. BUG

Thanks for trying, I haven't had chance to look at the multiplayer stuff. Out of curiosity, did you mock hot_time.php to run the game?

@keyboardzxb

Copy link
Copy Markdown

[memoryer]A bug was discovered that after player 1 leaves the room, the status will not be updated immediately, and player 2's room will still display that player 1 is in the room. After the homeowner leaves the room, they will not be handed over to other players, which will result in the absence of a homeowner's room in the future. BUG

Thanks for trying, I haven't had chance to look at the multiplayer stuff. Out of curiosity, did you mock hot_time.php to run the game?

I have already written api.chp in the previous version, including the login function to obtain authorization tokens and the registration function. Then this version can be directly used.
Regarding the live mode, I have modified the client encoding and set the server to:
[Relay:Endpoints:0]
Address=0.0.0.0
Port=39311
Because filling in the actual server address with Address will result in an error.
So I'm not sure which step is incorrect either. The live mode has not been tested correctly yet.

@SirusDoma

Copy link
Copy Markdown
Author

I have already written api.chp in the previous version, including the login function to obtain authorization tokens and the registration function. Then this version can be directly used.
Regarding the live mode, I have modified the client encoding and set the server to:
[Relay:Endpoints:0]
Address=0.0.0.0
Port=39311
Because filling in the actual server address with Address will result in an error.
So I'm not sure which step is incorrect either. The live mode has not been tested correctly yet.

This is not what I meant. I am not talking about login and register. The game will crash if it cannot reach http://o2jam.nopp.co.kr/client/event/2009/06_moa/hot_time.php. Did you made modified your OTwo.exe? Or did you change your hosts file? Or is it not affecting you?

Secondly, the relay ip is hard coded, please read my instruction again, you need to either use the default IPs from config.ini and change your IP table system to re-route it to your loopback ip (via netsh or something similar). That, or make modification to OTwo.exe to change the IPs

@SirusDoma

Copy link
Copy Markdown
Author

Anyway, I have fixed the user leave issue above. It was an issue in message encoding (Encore framework). So it could potentially affect other server builds (From Mozart.Encore to IdentityP2.Encore). Luckily, the way of message structured prevent this bug from happening.

I will fix this in all server builds once Memory.Encore is formally published. You can try re-clone/re-download the branch or git pull --force (normal git pull will not work as I have pushed the change via amend + git push --force)

@keyboardzxb

Copy link
Copy Markdown

This is not what I meant. I am not talking about login and register. The game will crash if it cannot reach http://o2jam.nopp.co.kr/client/event/2009/06_moa/hot_time.php. Did you made modified your OTwo.exe? Or did you change your hosts file? Or is it not affecting you?

Secondly, the relay ip is hard coded, please read my instruction again, you need to either use the default IPs from config.ini and change your IP table system to re-route it to your loopback ip (via netsh or something similar). That, or make modification to OTwo.exe to change the IPs

I will experience a lag and the game will crash when using the original OTwo.exe. I can play the game normally with the modified version. And I modified the relay IP address of OTwo.exe. If only hard coded IP can be used, it is indeed very troublesome.
QQ_1777144367423

@keyboardzxb

Copy link
Copy Markdown

Anyway, I have fixed the user leave issue above. It was an issue in message encoding (Encore framework). So it could potentially affect other server builds (From Mozart.Encore to IdentityP2.Encore). Luckily, the way of message structured prevent this bug from happening.

I will fix this in all server builds once Memory.Encore is formally published. You can try re-clone/re-download the branch or git pull --force (normal git pull will not work as I have pushed the change via amend + git push --force)

Thank you for updating so late. Rest early and take care of your health.

@SirusDoma

Copy link
Copy Markdown
Author
image

Still missing some pieces to make this live mode work properly. When the packet is not properly implemented (or when the server did not reply to the client), the game autoplay the opponent. I presume the packets that sent between the players are not keystroke, but rather bad/miss events since the judgement is dumbed down (Cool/Good becomes "Nice" and Bad/Miss become "Fail")

@keyboardzxb

Copy link
Copy Markdown

Your speculation is correct, because I have played this mode before and it simplified the data, only NICE and Fail.

@keyboardzxb

Copy link
Copy Markdown

The only screenshot I have of playing in Hanbok back then, in LIVE mode, is probably that if I lose, I have to go down and let the person behind me challenge for the championship And after the update in February 2009, the number of visitors can reach up to 50.
1

@SirusDoma

Copy link
Copy Markdown
Author

Your speculation is correct, because I have played this mode before and it simplified the data, only NICE and Fail.

I know about NICE and FAIL, I played the live mode too back in the day. It just that the details were not clear to me. I vaguely remember the opponent play like an autoplay too, but I wasn't sure back then.

The only screenshot I have of playing in Hanbok back then, in LIVE mode, is probably that if I lose, I have to go down and let the person behind me challenge for the championship And after the update in February 2009, the number of visitors can reach up to 50.

I do not remember that the room could fit 50 players however. If you are talking about channel then sure. The spectator name shown above the "VS" if I remember correctly, and there could be 4 players spectating.

And yeah, the Challenger is cycled between the spectator when they lose, or promoted to Champion when they win.

@SirusDoma

Copy link
Copy Markdown
Author

The network is pretty much stable, minus UDP server. I'm considering to release this without UDP relay if I can't make it anytime soon, and do it for another time.

I'll be taking a long vacation and I doubt I will have chance to develop it in a month or two.

@Nabil12S

Nabil12S commented May 9, 2026

Copy link
Copy Markdown

Hi really cool project, Im testing on O2JamO2 cannot register user it always say "Failed to register. Pls try different name or again later." i have tried changing name or password still given the same error. and i also test to run my own server it seem to given a wrong Launch Token because everytime i try to run the game it said "error data length must be even for UTF-16" any idea how to resolve, i tried CXO2 on O2Jam 1.30 it seems to worked but not on O2JamO2 thank you.

@SirusDoma

SirusDoma commented May 9, 2026

Copy link
Copy Markdown
Author

Hi really cool project, Im testing on O2JamO2 cannot register user it always say "Failed to register. Pls try different name or again later." i have tried changing name or password still given the same error. and i also test to run my own server it seem to given a wrong Launch Token because everytime i try to run the game it said "error data length must be even for UTF-16" any idea how to resolve, i tried CXO2 on O2Jam 1.30 it seems to worked but not on O2JamO2 thank you.

Thanks for trying. I need more details than that to answer your questiom due to the complexity branching of the project.

  1. Where and how are you registering a new account? When and where exactly the error comes from?
  2. Are you using original O2JamO2 client or CXO2?
  3. When you are running your own server, where the error comes? which server build are you using? any logs?

Things to note and understand

  1. CXO2 is game client remake and currently strictly support only O2Jam 3.10. No support for newer O2Jam yet, including O2JamO2
  2. If you are using launcher attached in this gist it will likely not work as my server probably is no longer serving the game. Note that the launcher and my server intended to run for CXO2 and O2Jam 3.10 and no other O2Jam, it does not support O2JamO2
  3. If you are rolling your own (local) server with Mozart.Encore, you have to use matching original game client (Not CXO2 Client, at least not at the moment, since currently it only support 3.10) with correct server build
  • If your O2JamO2 does not have 3K, it likely beta client. Use Identity.Encore
  • If it has 3K mode, use IdentityP2.Encore
  • Please read the README thoroughly

Last but not least, if you still have problem, raise an issue in Mozart.Encore repo (or comment in here if you don’t know how) be sure to include:

  • Original O2Jam version (if the client has VersionInfo.dat, copy its content, otherwise, use your best guess based on info above)
  • Server build you use (e.g, Identity.Encore, or IdentityP2.Encore)
  • Command you use to register, generate token and launch the game. Include details how you run it (e.g, directly via command prompt, or via .bat file)
  • The server command prompt output

@Nabil12S

Nabil12S commented May 11, 2026

Copy link
Copy Markdown

thank you for your respond, im sorry if im being kinda dumb its the first time im trying this kind of stuff

it seems i have mistaken using cxo2 for o2jamo2 since i thought it have the same procedure as o2jam 3.10, and what i mean i have a register error is when running cxo2.exe for example in o2jam 3.10 but i solved it by running my own server using mozart.encore

now im trying to run O2JamO2 final ( the one that has a problem )
this is the VersionInfo2.dat [Version] 1.08 1.69 5.89 3.34

The "error data length must be even for UTF-16" is appear when using IdentityP2.Encore
what i do previously is i replace the Otwo.exe from this git to the O2JamO2 folder then i run IdentityP2.Encore.exe after that i open cmd and change cd to the client folder then i register and authorize user this is what i get

Generating auth token for: [12sm]..

  Token:        54B02CFF76824C25958D167C4E5DFE3D
  Launch token: 008D4000E85000E4C100AF9C00AF9C0021C400E85000E4C100AF9C00AF9C00B70500B96E00B705003F1600BF7500ADFE001B2000C4C100C5F30099F4005BBD00384F00F70800774100E0C400B26000251100E75200C23300F1A6001622008F030099FC01022A005DDD006F8800C51800713500214500561F00923100B70500E8500030FF00E3CD008DF9001A68005FB300B705007741005FB3007741001422005B8200B23E003C0900C06800E5FE00775500AF02005965001AA200859500384F00384F0096B8001B2000ED6E005FB30051200034E300774100C00800FAC700ADFE007205000B8200746300E32E0014D900036000B7050087CB004E1700923E00B6A000D83F00FAC700ADFE007205000B8200746300E32E0014D9004DEA00531C00DAD600E812000BB30002CC00CC050028B40097B600012400980A00CEC4004D5F00C2AA00AE6F000029001D99002970003F1600BF7500EFDC

then i tried to run the game using this command:

OTwo.exe 008D4000E85000E4C100AF9C00AF9C0021C400E85000E4C100AF9C00AF9C00B70500B96E00B705003F1600BF7500ADFE001B2000C4C100C5F30099F4005BBD00384F00F70800774100E0C400B26000251100E75200C23300F1A6001622008F030099FC01022A005DDD006F8800C51800713500214500561F00923100B70500E8500030FF00E3CD008DF9001A68005FB300B705007741005FB3007741001422005B8200B23E003C0900C06800E5FE00775500AF02005965001AA200859500384F00384F0096B8001B2000ED6E005FB30051200034E300774100C00800FAC700ADFE007205000B8200746300E32E0014D900036000B7050087CB004E1700923E00B6A000D83F00FAC700ADFE007205000B8200746300E32E0014D9004DEA00531C00DAD600E812000BB30002CC00CC050028B40097B600012400980A00CEC4004D5F00C2AA00AE6F000029001D99002970003F1600BF7500EFDC localhost:1234 O2Jam 3 127.0.0.1 15010 127.0.0.1 15010 127.0.0.1 15010

and it give the utf error

i tried using the original OTwo.exe files aswell ( without replacing it with the on that comes from CXO2 ) and when i run the game it does nothing, also is the launch token supposed to be same when registering new user ?
please correct me if im wrong because this is how i understand it i might need some guide on this thank you!

update: manage to get the game running with IdentityP2.encore. after using the "token" instead of "launch token" but it seems im stuck in the server select screen with no named server and it give some gibberish error after selecting it. and it looks like there is no responde from the server from what i see in the cmd. also i can run the game without running the server so it is confirmed im not connected to the server

@SirusDoma

Copy link
Copy Markdown
Author

The "error data length must be even for UTF-16" is appear when using IdentityP2.Encore
what i do previously is i replace the Otwo.exe from this git to the O2JamO2 folder

You are still doing things wrong. OTwo.exe in this gist is CXO2 client, which is not compatible with O2JamO2 (v5.89 final). You must NOT replace the original OTwo.exe.

then i tried to run the game using this command:

OTwo.exe 008D4000E85000E4C100AF9C00AF9C0021C400E85000E4C100AF9C00AF9C00B70500B96E00B705003F1600BF7500ADFE001B2000C4C100C5F30099F4005BBD00384F00F70800774100E0C400B26000251100E75200C23300F1A6001622008F030099FC01022A005DDD006F8800C51800713500214500561F00923100B70500E8500030FF00E3CD008DF9001A68005FB300B705007741005FB3007741001422005B8200B23E003C0900C06800E5FE00775500AF02005965001AA200859500384F00384F0096B8001B2000ED6E005FB30051200034E300774100C00800FAC700ADFE007205000B8200746300E32E0014D900036000B7050087CB004E1700923E00B6A000D83F00FAC700ADFE007205000B8200746300E32E0014D9004DEA00531C00DAD600E812000BB30002CC00CC050028B40097B600012400980A00CEC4004D5F00C2AA00AE6F000029001D99002970003F1600BF7500EFDC localhost:1234 O2Jam 3 127.0.0.1 15010 127.0.0.1 15010 127.0.0.1 15010`

You are using incorrect command, refer to the README. Also, you can get rid the \ and make everything into one single-line for simplicity sake.

i tried using the original OTwo.exe files aswell ( without replacing it with the on that comes from CXO2 ) and when i run the game it does nothing

This is how it suppose to run. However, running original O2Jam require some workaround in modern system, what windows version are you running? You may need to use DDrawCompat. You may also need to change the compatibility of OTwo.exe on top of that if it doesn't work via Right Click -> Properties -> Compatibility tab.

Note that I'm not supporting how to run original O2Jam client since it could be vary to each system.

update: manage to get the game running with IdentityP2.encore. after using the "token" instead of "launch token" but it seems im stuck in the server select screen with no named server and it give some gibberish error after selecting it. and it looks like there is no responde from the server from what i see in the cmd. also i can run the game without running the server so it is confirmed im not connected to the server

You are on the wrong track, it won't work.

@Nabil12S

Copy link
Copy Markdown

This is how it suppose to run. However, running original O2Jam require some workaround in modern system, what windows version are you running? You may need to use DDrawCompat. You may also need to change the compatibility of OTwo.exe on top of that if it doesn't work via Right Click -> Properties -> Compatibility tab.

Im using Windows 11 version 24H2, i tried ussing DDrawCompat and compability but no success

@murilotaquetti

Copy link
Copy Markdown

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

@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