stovent / cedimu Goto Github PK
View Code? Open in Web Editor NEWExperimental Philips CD-I emulator written in C++
Home Page: https://github.com/Stovent/CeDImu
Experimental Philips CD-I emulator written in C++
Home Page: https://github.com/Stovent/CeDImu
emulator is looking very promising so far! but i was wondering if booting up a game is possible or not.
i have the bios fully setup and running, but i havent been able to figure out how to load any roms, opening any cd-i rom through "open disc" does not seem to do anything, even when being in the bios itself nothing happens.
After selecting a BIOS and unchecking pause things work for a few second and then I get the following error:
[~c/laser/CeDImu/build](master)% ./CeDImu
18:50:44: Warning: Mismatch between the program and library build versions detected.
The library used 3.0 (wchar_t,compiler with C++ ABI 1014,wx containers,compatible with 2.8),
and your program used 3.0 (wchar_t,compiler with C++ ABI 1002,wx containers,compatible with 2.8).
18:50:44: Debug: Unknown accel modifier: 'maj'
[xcb] Unknown sequence number while processing reply
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
CeDImu: xcb_io.c:725: _XReply: Assertion `!xcb_xlib_threads_sequence_lost' failed.
zsh: IOT instruction ./CeDImu
With plain GTK it seems you can just call it before gtk_init, but in wxWidgets it's all wrapped. Putting XInitThreads()
in CeDImu::OnInit()
doesn't make a difference.
Although here I read that "Accessing GUI from secondary thread is not supported", although that's from 2014, but a similar message from 2019.
Backtrace from break abort
in gdb (useless entries removed):
#0 __GI_abort () at abort.c:49
[..]
#5 0x00007ffff797c346 in wxWindow::Update() () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#6 0x00007ffff79bcd0c in wxStatusBar::DoUpdateStatusText(int) () from /usr/lib/libwx_gtk2u_core-3.0.so.0
#7 0x0000000000430369 in MainFrame::RefreshStatusBar (this=0x602530, event=...) at /home/martin/code/laser/CeDImu/src/GUI/MainFrame.cpp:128
#8 0x00007ffff7615f0e in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#9 0x00007ffff7616003 in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () from /usr/lib/libwx_baseu-3.0.so.0
#10 0x00007ffff761634c in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#11 0x00007ffff76163db in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#12 0x00007ffff76164b1 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#13 0x00007ffff7616207 in wxEvtHandler::SafelyProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#14 0x00007ffff7589cd0 in wxTimerImpl::SendEvent() () from /usr/lib/libwx_baseu-3.0.so.0
CeDImu f8a79a1, cd490a.rom, on Linux with wxWidgets-3.0.5.1 (GTK2 version, the GTK3 version doesn't seem to work at all).
If you select an invalid ROM from "file" -> "Open ROM" (I thought you had to select the BIOS there ๐
) CDIDisc::LoadFileSystem()
gets stuck in an infinite loop in the while((Tell() % 2352) < 2072)
loop. Tell()
returns -1
, which presumably indicates some failure, but it never checks for this.
I never really did any C++, so no patch, but should be an easy fix.
Commit f8a79a1 (current master) on Linux.
Would it be possible to include a prebuilt binary especially for Windows platforms. The instructions for building on Windows are a little lacking. Having a prebuild would allow more users to test and report bugs.
Is this emulator limited to Windows/Xwindows shells? I've built on Linux on my raspberry pi 400 but it can only be run from X not terminal. Will it be limited to those environments or will it be possible to use it in others? Retroarch springs to mind since the git mentions MAME. It would be nice to build a dedicated CDI box on a Linux system and it would clear some space (my cdi220 and 450 take up a lot of space not to mention all the disks lying around).
I look forward to any advancements in this emulator with great enthusiasm. It's good to know people are still interested in CDI.
After selecting a ROM in the settings you need to use "emulation -> reboot core" to actually load it.
This took me quite some time to figure out; there's a bunch of settings on that settings page I don't really understand, downloaded some .rom files from archive.org and some other places that I'm not even sure are valid, etc. I thought I was doing something wrong because it never managed to load the BIOS.
Turns out I just needed to reboot the core; but I had to read through the source to find that out. Do'h!
A little message on the settings screen would be helpful, or maybe a button, or just doing it automatically on save.
Also: it might be helpful to give some information about what ROMs are expected; will any ROM do? I downloaded a bunch, but auto-detecting the board always fails (always returns Fail
in the Boards
enum), so I tried some combinations of various ROMs and manually selecting boards, but then it segfaults when unpausing (that's a different issue, but I'm not sure if that's due to some invalid setting or an actual bug; need to look in to this).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.