Repository navigation
The first release: the eJay 2 family on Windows, Linux and macOS, from a
one-click installer or one setup script, with your own disc.
Added
- Linux and macOS. The title's two DLLs are lifted to C
(tools/lift_ejay2.py) and run on pcrecomp'sruntime/win32hle; the same
host source builds against the real DLLs on Windows and against win32hle
elsewhere, as a 64-bit program (host/plat.h,host/posix.c,
host/CMakeLists.txt; PORTING). Needs pcrecomp at
7bbc0c0 or later (pcrecomp#135, #140-#143). - Techno eJay (Rave eJay 2 in France, the same program) runs on the host,
and Dance eJay 3 draws on it, silently (TITLES). - Each title's own sample library.
--libreads an.INFand its archive
(Dance eJay 2'sDANCE20and kits,HipHop20,RAVE20,dance30) as well
as Dance eJay 1'sPXD.TXTindex; the.INF's group is the browser button,
and an archive member is copied out once to a cache folder for the engine. - One-step setup.
setup.sh(Linux, macOS) andSetup.cmd(Windows) take
a disc, an.isoor an installed program folder, pick the title by its
engine, copy the program and library intogame/<title>/, lift, build and
leave a<Title> (recomp)launcher. - The installer.
launcher/launcher.jsonfor sp00nznet/recomp-launcher, and
.github/workflows/installer.yml, which builds the Windows, Linux and macOS
installers and attaches them to a tagged release. --headlessand--traceoff Windows, and--sample N(one library sample
alone at bar 0).conform.pychecks the eJay 2 libraries (every.INFoffset, the members
back to back, the bar field, one category per group) and finds each disc's
tempo. Against seven discs: 120,645 passed, 158 failed.- Docs: PORTING, TITLES.
- Dance eJay 2 host: drives
PXD32D4.DLLandPXD32CL1.DLLdirectly in the
orderDancejay.exeuses, into a window of its own.
Added
- The arrangement page: chrome, sixteen lanes, sample blocks with the samples'
own two-line names, hover and pressed states fromK_640, block dragging. - A working sample browser over
DMACHINE\PXD.TXTandMAX.TXT- category
buttons, wheel and scroll strip, selection, and double-click placement. - The start-up system check, through the
GFX_Intro*family. tools/vb_declares.py, which recovers the 217 VB5 lazy-resolution thunks in
Dancejay.exeand disassembles their call sites. The start-up order,ALoad's
record layout andALautSet's scale all came out of it.tools/dll_signatures.py: argument counts by CFG walk rather than linear sweep.tools/conform.py: conformance harness. Parses every sample, control table,
page list and saved arrangement on a local disc and reports a pass/fail count.- A second title.
--engine,--gfxdlland--palpoint the host at a
sibling: HipHop eJay 2 (2000) draws and plays through the same code. Its
graphics DLL is the same 23 exports, its audio engine a strict superset of
Dance eJay 2's 87. The host no longer assumes Dance's palette names, and skips
the system check when a title ships no intro bitmaps, which HipHop does not. - Host measurement flags:
--onset(where the playhead is when a beat leaves the
sound card),--tracks,--paintcheck,--file,--len,--selftest.
Fixed
- A dropped block destroyed the workspace. Moving a block called
ACloseAll, which frees every bitmapALoadmade - the chrome and the button
sheet - rather than the arrangement. A move now empties the tracks in place
and places every slot again, earliest first. - HipHop eJay 2's tempo. A bar was Dance eJay 2's 302,400 for every title;
HipHop eJay 2 is 90 BPM, 470,400. The bar now comes from the library. - The engine's internal addresses (track records, mixer-armed flag) were
PXD32D4.DLL's; they are found in whichever engine is loaded. - Category buttons, the paint check's allowed regions and the controls that
answer the mouse come from each title'sK_640andSEITEN, not Dance eJay
2's measurements; the drum pads'B_PAD_04, from another page, sat over the
grid. host/build.batfinds Visual Studio withvswhereinstead of one machine's
paths, and links the C runtime in (/MT).- Arrangement timing. A bar was 88,200 - 120 BPM counted in 44,100Hz samples,
wrong in both tempo and unit. The engine counts output bytes (176,400 a second)
and Dance eJay is a fixed 140 BPM, so a bar is 302,400. At the old value sixteen
bars of grid were eight seconds and every block's end fell inside its own audio. - Sample length is read from the
tPxDheader rather thanPXD.TXT's bar field. - Track grid geometry. The grid was eyeballed at y 16..323;
G_SPUREN_SAMPLE_640
puts it at 18..298, so the bottom lanes were drawing over the horizontal scroll
bar. Blocks and the playhead now share one bar-to-pixel mapping, which removes a
drift of one pixel per bar between the line and the blocks it crosses. - Browser panel geometry read from
K_640instead of eye-measured constants,
which had the first row of the sample list painting on the frame. GFX_IntroSetKeybefore the bitmaps, and a real 16-bit copy surface, which is
what the intro needed - not a value fed to it.
Changed
host32/ishost/, and the Windows build lands inbuild-windows/.- The README is the front door again; the research narrative lives in
docs/. - Repository brought in line with the standing repo conventions: changelog,
roadmap, contributing guide, CI, and a conformance harness with a baseline.
Removed
- The bring-up probes - import patching, memory snapshots, the Refresh timing
experiments,host32/probe.c- and the unusedruntime2/. What they found
is in EJAY2; the code is in the history.
Installers: download the one for your system, run it, and point it at your eJay 2 disc, .iso or installed folder. Dance eJay 2, HipHop eJay 2 and Techno eJay play; Dance eJay 3 is recognized but not supported yet.