New / a second core next to the original
MERIDIAN + SCHUBA second processor for the MERIDIAN.
SCHUB is a RISC-V processor in the FPGA that works next to the 65C816: 32 bits, 24 MHz, its own caches. It uses the same chips – PINSEL, KOBOLD, KRAN, LOTSE and ORGEL – and does the maths where 8 MHz is not enough. That lets the MERIDIAN run games it could not manage alone: DOOM at almost 30 frames per second, a pinball game with real physics, a city that grows and a trading house over generations.
The idea / more computing power
The MERIDIAN gets help.
The MERIDIAN 816 is meant to be a computer of its time: a 65C816 at 8 MHz with chips that take a lot of work off its hands. That is not enough for a 3D game or a city with thousands of people. SCHUB is the idea of an accelerator card like the ones the Amiga had – except that it works next to the 65C816 instead of replacing it.
A program on the 65C816 loads the code for SCHUB, sets the start address and switches it on. From then on both share the memory: SCHUB runs the game, the physics or the simulation, and the MERIDIAN chips show the result. On top of that the KRAN blitter gets a column copy, which DOOM uses to draw its walls.
SCHUB can be switched off and on in the MiSTer menu. When it is off, the core is exactly the MERIDIAN 816 of the original – all programs, HORIZONT and TIEFGANG run unchanged.
Why a separate core?
SCHUB uses up the remaining memory blocks and multipliers of the FPGA. So the original stays the reference machine and gets every fix first; MERIDIAN + SCHUB takes them over and is the playground for experiments. Both have their own repository on GitHub.
Games / all still in progress
What runs with SCHUB.
All clips were recorded on a real MiSTer through the capture card, without sound. The games are not finished and not available for download yet – this is where they stand today.
GAME // DOOM // SCHUB
DOOM – almost 30 frames per second.
The id Software classic, ported to the MERIDIAN. SCHUB runs all of the game logic and the renderer, KRAN widens the wall columns, LOTSE switches between game view and status bar, and the ORGEL plays the music with its own samples for all 47 percussion instruments.
On the MiSTer the first episode runs at 28 frames per second (NTSC). For comparison: the same port on the 65C816 alone manages about two frames per second.
Not for download: the cartridge contains id Software's game data.
GAME // NACHTFLIPPER // SCHUB
NACHTFLIPPER – four tables, one long night.
Four painted pinball tables in 256 colours: Schloss Schattenfels, Fledermann's lab, Emil's ghost train and the vampires' ball. SCHUB moves the ball with 120 physics steps per second, with friction, spin and moving flippers, and hides it under the ramps.
PINSEL scrolls the table just by changing its start address, KOBOLD moves ball, flippers, ghosts and sparks. Plus missions, multiball, a dot-matrix style display and stereo music of its own.
GAME // METROPOLIS // SCHUB
METROPOLIS – a city that grows.
A city builder with isometric pixel art: residential, commercial and industrial zones, roads, rail, underground, power and water, budget and disasters. Buildings grow in up to eight stages, cars stop at traffic lights, trains, buses, ships and planes move.
SCHUB simulates the 64 × 64 map and draws it in three zoom levels and four directions. Enter starts a prepared harbour town.
GAME // HANSE // SCHUB
HANSE – houses of the dawn.
A trading and dynasty game for up to six people on one machine; the computer plays the other houses. Goods and workshops, long-distance trade, offices, church, family and intrigue – quarter by quarter, over generations.
24 painted rooms with animated figures, twelve portraits, tactical battles and music of its own. SCHUB runs the economy of the whole world and all rivals. The game is in German.
GAME // MODELLBAHN // SCHUB
MODELLBAHN – a model railway to build.
A model railway board to design freely: tracks, signals, tunnels, roads, houses and landscape. The example layout starts right away with two trains and five road vehicles; program, simulation and graphics all run in the FPGA.
The youngest of the projects – version 0.2. It does not draw cleanly yet when zoomed out, so here is the close-up only.
For programmers / the interface
How to talk to SCHUB.
SCHUB sees the same 24-bit address space as the 65C816. It is controlled through 32 registers from $00:CD00; the full description is in SCHUB.md ↗.
| Range | Meaning |
|---|---|
$CD00–$CD03 | ID SCHB |
$CD04 / $CD05 | version and capabilities |
$CD08 | control: enable, run, restart |
$CD09 | status: present, running, bus busy, address error |
$CD0C–$CD0F | start address of the RISC-V program |
$CD10 / $CD14 | free argument and result registers |
$CD18 / $CD1C | cycle counter and clock frequency (24 MHz) |
Registers, shared buffers and DMA data go through an uncached range (bit 31 of the address); private code and data may use the cache. While SCHUB is on, KRAN copies columns instead of rectangles with mode bit 3.
Try it / core and instructions
MERIDIAN + SCHUB on the MiSTer.
Install
- Copy
MERIDIAN_SCHUB_<date>.rbffrom the latest release ↗ to/media/fat/_Computer/. - The core uses the same
games/MERIDIANfolder as the original – disks, cartridges and settings work for both. - Switch it on or off under SCHUB in the OSD. Programs that need it switch it on themselves.
What is in it
- The complete MERIDIAN 816 at the level of the original, with all fixes.
- Plus SCHUB with source code, tests for the processor and the column copy, and the interface description.
- The games are not included – they are still in progress.
The original
- If you only want the MERIDIAN 816, keep using the original core: less of the FPGA used, same programs.
- Questions and your own programs are welcome in the forum ↗.