[AI] Speed Haste for Sega 32X
- physical : no
- rom : yes
- licensing : unlicensed
- code : speedhasteforsega32xbyharoldook
- Date(s) : 2026
- Tag(s) : 3D, Pixel Art, sega-32x
- By(s) : haroldo-ok
Data retrieved from haroldo-ok.itch.io
Speed Haste for Sega 32X by haroldo-ok
- title : Speed Haste for Sega 32X by haroldo-ok
- status : Released
- tags : 3D,
Pixel Art,
sega-32x
- ai : AI Assisted, Code
- last updated : 2026
- by : haroldo-ok
- code : speedhasteforsega32xbyharoldook
Github repo: https://github.com/haroldo-ok/speed-haste-32x
Speed Haste 32X
A source-based Sega 32X port of Javier Arévalo's 1995 DOS racer Speed Haste.
Current status
This revision ports both circuits and vehicle classes from the original shareware data:
Racer's Edge (MAP00) and The City (MAP01);
Formula One and Stock classes, six original I3D cars per class;
original class-specific cockpits, tachometers and maximum speeds;
Stock powersliding behavior derived from userctl.c;
original 64×64 floor tiles, rotations, PATH points, walls and track objects;
complete MAP00.SEC/MAP01.SEC polygon topology: vertices, flags, side adjacency and wall links;
sector-assigned scenery and source-style bounded visible-sector traversal;
original floor-casting equations from 3dfloor.c/fla.asm;
one shared hsk+y projection origin for ground, walls, objects and cars;
original chase-camera 1/16 angular lag and correct rear/front model orientation;
corrected inverted-world-Y heading reconstruction (GetAngle(dx, -dy)), so forward travel makes scenery approach the viewer;
original panorama, mountains, wall textures, trackside sprites and palette shading;
original title and race-menu backgrounds;
multi-step setup flow for circuit, class and individual car selection;
countdown, lap/position HUD, chase/cockpit/high/trackside-TV cameras, pause and finish states;
PATH-driven computer racers based on cars.c and racemap.c;
sector-local guardrail physics with the original asymmetric rectangular player bounds, swept-corner anti-tunnelling, wall-release hysteresis and crash recovery;
wrapped wall/rectangle coordinates across 0x80000000, fixing Racer's Edge's phantom backwards-pushing barrier;
source-backed car-to-car collision response;
original spark, ground-smoke and persistent skid graphics.
The world runs at the original 70 Hz simulation rate, independently of video. The pinned PicoDrive City/Stock stress test now measures 15.0 fps without slow-motion physics.
Play
Load this ROM with a current PicoDrive/RetroArch core configured for Sega 32X:
The cartridge is 2.5 MiB and has a valid MARS header and Genesis checksum.
Menu controls
Start/B/C: confirm
Left/Right: change circuit, class or car
A: go back
Race controls
Left / Right
Steer
B or C
Accelerate
A or Down
Brake; continue holding for reverse
Start
Pause/resume
X (six-button pad)
Cycle chase, cockpit, high and trackside-TV cameras
Y (six-button pad)
Toggle HUD
Action
Stock cars can break traction under hard high-speed steering/braking and then progressively regain it, following the separate cartype == 1 path in the DOS source.
Performance implementation
The current renderer uses:
master/slave SH-2 parallel floor and panorama rendering;
80×65 floor samples expanded in the DOS low-detail style;
an SH-2 assembly floor-row kernel combining map/tile lookup, shade translation and aligned packed 4×2 output;
2×2 trackside sprite and polygon sampling;
low-detail textured wall columns;
an eight-frame cached textured minimap;
all 12 I3D cars pre-rendered into the original engine's 16-direction sprite path;
32-bit framebuffer fills and packed writes;
70 Hz timer catch-up from race.c, so rendering never determines game speed;
SH7604 hardware-divider helpers adapted from D32XR's fixed-point routines;
frequency-sorted 28-tile SDRAM cache covering 95% of Racer's Edge and 92% of The City map cells;
cached map indices, panoramas, mountain layer, and 8 KiB shade table in aligned SDRAM;
build-time SEC_TOMAP wall conversion and DDA wall interpolation with no divide/modulo in horizontal loops;
SEC_FindSector-style current-sector/adjacent-sector lookup before a rare full-map fallback;
source-style breadth-first rendering capped at 20 sectors, with a conservative portal cone;
per-sector scenery ranges plus 16×16 default-sector bins: the City stress view transforms 89 candidates instead of all 325 objects;
visible-wall lists: the measured City view processes 18 of 123 walls;
collision checks over roughly 3–8 current-sector sides instead of all 86/123 track walls;
aligned SDRAM caches for sector topology and sector-object indices;
separate master-panorama, slave-floor and synchronization-wait profiling through calibrated QA probes;
packed four-pixel panorama writes and one-branch seam wrapping, after removing more than 11,000 % 320 divisions per Racer's Edge frame;
restoring integer normalisation only after a real wall contact, never in the normal sector scan.
PWM audio remains disabled by default because continuous slave-SH-2 FIFO polling stalls some ARM PicoDrive builds. The slave is used for floor rendering instead.
Scope still in progress
Not yet ported: two-player split screen, persistent record tables, IPX/serial/modem play, complete DOS menu decoration/animation, S3M music and VTAL audio. The registered-only six circuits are not present in the supplied shareware data and are not claimed as implemented.
Screenshots