Understanding ROM Loading in Pinball 2000 Emulation: Challenges and Solutions

I’ve been struggling with a technical issue for the past five years now, steadily making progress over time. However, I’ve reached a point where I feel I need your additional assistance.

My dad has Revenge From Mars and Star Wars Episode I pinball machines of the Pinball2000 system. Pinball 2000 was the last pinball hardware and software platform developed by major pinball manufacturer Williams, and it was used in the machines Revenge From Mars (under the brand name Bally) and Star Wars Episode I (under the brand name Williams) before Williams exited the pinball business on October 25, 1999. You might find interesting information about this here: Wikipedia link and Pinball2000 website (The P2k Tech page is very interesting).

I’m afraid that one day one of these pinball machines may fail, and I’m looking for a durable solution.

Because it had a very specialized task to perform, a specific motherboard was chosen which included a Cyrix MediaGX processor, running XINU, custom software called XINA, a specific audio card, and game code on another custom board – the PCI PRISM card.

The motherboard and processor were commercial products, but like most computer hardware from the late ’90s, they are now obsolete, while the PRISM card was a unique part made purely for Pinball 2000 machines. Consequently, it is highly prized and, when you can find one, it sells for many hundreds of dollars.

Although nearly all the remaining parts are available, maintaining the computer has remained the stumbling block for several years.

During that time, work began in 2004 to address this issue by emulating Pinball 2000 on a regular PC with the launch of the Nucore pinball 2000 emulation system by Big Guys Pinball.

Big Guys Pinball is a company set up by Steve Ellenoff, Chuck Hess, and Don Weingarden who have been working together to free Pinball 2000 from the shackles of the dedicated hardware. As you might expect, you can find the backstory information about this here: Pinball News link and Big Guys Pinball website.

However, under the hood, they used QEMU 0.8.1, which as a whole is released under the GNU General Public License, version 2. The GNU community was upset, and I fully understand them. This is why a team released pinbox2000 in 2013, a copy of Nucore binaries but string edited to remove any references to Big Guys Pinball. The Big Guys Pinball team did not like it either and stopped releasing Nucore as a paid product, retired themselves, stopped responding, stopped support, and did not release the source code.

Nowadays, most people use pinbox ISO, which is a very old 32-bit Ubuntu crystallized with Remastersys. Even apt update does not work anymore on this. Nucore was designed to run on Ubuntu / Lubuntu 32 bits and crashes on 64-bit distros due to a segmentation fault (SEGFAULT) I don’t fully understand.

The product, named ‘NUCORE,’ is now FREE CLOSED SOURCE, and I successfully installed it on a 32-bit modern Debian 12 last week.

As I managed to install a working instance of Nucore on Debian 32-bit, I could create my own crystallized pinbox based on a more modern Debian build, but I don’t like this approach: it would have exactly the same caveats of the mentioned pinbox ISO. Additionally, as a sign it is not a future-proof solution, Nucore requires usbmount which is not distributed anymore, fortunately, it is still quick and easy to build. Instead of having a distro in which I could not even do an apt update in a few years, I’d be satisfied with an open-source solution, compilable on any architecture, making proper calls to QEMU to emulate XINU correctly, launch XINA software, and properly emulate the PRISM PCI card.

Adopting this approach is also a personal project to learn stuff. As a cybersecurity specialist, it implies a bit of retro engineering, and as a 30-year-old programmer, it also forces me to understand IT concepts from the 2000s, especially one that is still pretty obscure to me: ROMs. Indeed, there are base ROMs and BIOS that are loaded by the compiled Nucore emulator, which use internal features of QEMU through a chimeric “libqemu.so” which roughly exposes QEMU internals. However, I did not find the proper QEMU equivalent command line if it exists. In fact, this is even more sorcery to me, as I discovered there are some update ROMs which can be loaded by the system and sort of live-patch parts of the system, and even upgrade XINU OS. Once I’ve read about a guy calmly replacing ROMs from a system by another and writing about it working except for the sound of pinball being swapped. Another time I’ve seen a GitHub repository where a guy was concatenating ROMs, saying they were in the same memory so they deserved to be concatenated. As I know they come from different chips, this is, for me, pure sorcery.

I’d be very grateful to get any help or even the tiniest insight into my quest. Even to be able to read ROMs’ content as a filesystem would be a victory. Understand why I can’t start QEMU yet with the bios.bin file, understand in what memory and how to tell QEMU to load the ROMs. Understanding how update ROMs are able to patch XINU OS “on the go” and disappear once deleted, start the ROMs on XINU OS, or XINU OS, with XINA application running. I’m at the point where any insight might teach me a bunch of new things and open myself to new IT concepts I’ve not considered yet.

I’ve attached a list of all files from Nucore emulator.
You guessed it, I’d be happy to provide any of these files and any information if you want to wish to delve deeper.

Nucore binary imports folowing libs:
<EXTERNAL>
libc.so.6
libftchipid.so.0
libftd2xx.so.0
libltdl.so.3
libm.so.6
libmpg123_player.so
libpthread.so.0
libqemu.so
libSDL-1.2.so.0
libSDL_image-1.2.so.0
libSDL_mixer-1.2.so.0
libSFont.so
libz.so.1


NUCORE EMULATOR:
.
├── bin
│   ├── nucore
│   ├── nucore.225
│   ├── nucore.old
│   ├── n_update
│   ├── n_update.old
│   ├── pinbox
│   ├── run
│   ├── run_pb
│   └── watcher.sh
├── config
│   ├── leds.cfg
│   ├── pb2k.cfg
│   └── servers.txt
├── download
├── install
│   ├── install
│   ├── libs
│   │   ├── libftchipid.so.0.1.0
│   │   ├── libftd2xx.so.0.4.15
│   │   ├── libltdl.so.3.1.4
│   │   ├── libmpg123.la
│   │   ├── libmpg123.so.0.18.12
│   │   ├── libSDL_mixer-1.2.so.0.2.6
│   │   ├── libSDL_mixer.la
│   │   └── mpg123
│   │       ├── output_dummy.la
│   │       ├── output_dummy.so
│   │       ├── output_oss.la
│   │       ├── output_oss.so
│   │       ├── output_sdl.la
│   │       └── output_sdl.so
│   └── start
│       └── exec_nucore
├── music
├── resources
│   ├── config_menu
│   │   ├── config_menu_main.bmp
│   │   ├── config_menu_msg_ov.bmp
│   │   └── config_menu_sounds.cfg
│   ├── jukebox
│   │   ├── fonts
│   │   │   ├── arial.bmp
│   │   │   ├── arial_inverse.bmp
│   │   │   ├── arial.ttf_14_0_0_255_b.bmp
│   │   │   ├── arial.ttf_18_0_0_255_b.bmp
│   │   │   └── arial.ttf_22_0_0_255_b.bmp
│   │   ├── juke_modepic.bmp
│   │   ├── juke_playlist.txt
│   │   └── music_dir.txt
│   ├── load
│   │   ├── rfm
│   │   │   ├── rfm_load_screen_s0.bmp
│   │   │   └── rfm_load_sounds.cfg
│   │   └── swe1
│   │       ├── swe1_load_screen_s0.bmp
│   │       └── swe1_load_sounds.cfg
│   └── watermark
│       └── watermark.bmp
├── roms
│   ├── bios.bin
│   ├── rfm_nucore.bin
│   ├── rfm_pinbox.bin
│   ├── rfm_u100r2.rom
│   ├── rfm_u100.rom
│   ├── rfm_u101r2.rom
│   ├── rfm_u101.rom
│   ├── rfm_u102.rom
│   ├── rfm_u103.rom
│   ├── rfm_u104.rom
│   ├── rfm_u105.rom
│   ├── rfm_u106.rom
│   ├── rfm_u107.rom
│   ├── rfm_u109.bin
│   ├── rfm_u110.bin
│   ├── savedata
│   │   ├── rfm_15.ems
│   │   ├── rfm_15.flash
│   │   ├── rfm_15.see
│   │   ├── swe1_14.ems
│   │   ├── swe1_14.flash
│   │   └── swe1_14.see
│   ├── swe1_14f.cpu
│   ├── swe1_nucore.bin
│   ├── swe1_u100.rom
│   ├── swe1_u101.rom
│   ├── swe1_u102.rom
│   ├── swe1_u103.rom
│   ├── swe1_u104.rom
│   ├── swe1_u105.rom
│   ├── swe1_u106.rom
│   ├── swe1_u107.rom
│   ├── swe1_u109.rom
│   └── swe1_u110.rom
├── scripts
│   ├── 15khz-x11.sh
│   ├── autostart-disable.sh
│   ├── autostart-enable.sh
│   ├── confs
│   │   └── start-nucore.desktop
│   ├── crt-15khz-disable.sh
│   ├── crt-15khz-enable.sh
│   └── start-nucore.sh
└── update
    ├── rfm_15
    │   ├── pin2000_50070_0224_bootdata.rom
    │   ├── pin2000_50070_0224_game.rom
    │   ├── pin2000_50070_0224_im_flsh0.rom
    │   ├── pin2000_50070_0224_pubboot.rom
    │   ├── pin2000_50070_0224_sf.rom
    │   ├── pin2000_50070_0224_symbols.rom
    │   └── rfm_15_update.bin
    └── swe1_14
        ├── gamelist.txt
        ├── pin2000_50069_0150_07252000_B_10000000.exe
        ├── pin2000_50069_0150_bootdata.rom
        ├── pin2000_50069_0150_game.rom
        ├── pin2000_50069_0150_im_flsh0.rom
        ├── pin2000_50069_0150_pubboot.rom
        ├── pin2000_50069_0150_sf.rom
        ├── pin2000_50069_0150_symbols.rom
        └── swe1_14_update.bin

Thank you for your reading. If you know THAT guy that might learn us stuff about this subject, I’d be happy to discuss with both of you.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật