don't click here

Heavy Nova (Mega CD) prototype

Discussion in 'General Sega Discussion' started by RyogaMasaki, Jun 3, 2025.

  1. RyogaMasaki

    RyogaMasaki

    0xffffffff Oldbie
    Normally I dump things into the General Information thread, but we'll give today's posts their own threads.

    I recently greatly overpayed for acquired a prototype of Heavy Nova for the Mega CD, which I've now dumped and released. It turns out it doesn't boot, and this makes it somewhat interesting as it seems to have security code intended for a pre-production version of the Mega CD BIOS.

    Original post here: https://bsky.app/profile/did:plc:yqlcok267tvbeg5pncpshrh7/post/3lqncoqleyc2f

    Analysis here: https://sudden-desu.net/entry/heavy-nova-prototype/

    And direct link to the proto itself: https://archive.org/details/heavy-nova-prototype-19911102
     
    • Like Like x 5
    • Informative Informative x 1
    • Useful Useful x 1
    • List
  2. cartridgeculture

    cartridgeculture

    discouraged Member
  3. Devon

    Devon

    pfp by @litchui on Twitter Tech Member
    1,581
    1,958
    93
    your mom
    I extracted the prototype IP and SP (and also the prototype security block from it) and made a patched version that updates the BIOS call/variable addresses (which I have documented here) and the security block. The IP just displays a quick loading message while the SP loads the next set of code for the Main CPU to run (embedded in the SP itself), with that next set of code including a few more BIOS calls. I did quickly check the rest of the disc, and there doesn't seem to be any additional BIOS calls used within the game itself, just during the initialization process.

    If you are curious about the BIOS call changes, here's a quick rundown:
    • 288 -> 298 (Read controllers)
    • 290 -> 2A0 (Clear VDP memory)
    • 298 -> 2AC (Set default VDP registers)
    • 29C -> 2B0 (Set VDP registers)
    • 2B8 -> 2CC (Fill tilemap region)
    • 2AC -> 2C0 (Fill VRAM region)
    • 2C4 -> 2D8 (Enable display)
    • 2D0 -> 2E4 (Load palette data)
    • 2D4 -> 2E8 (Update CRAM)
    • 2F4 -> 308 (VSync)
    • 304 -> 31C (Draw text)
    • 310 -> 328 (Load default font)
    • 33C -> 360 (Trigger Sub CPU interrupt)
    • 340 -> 368 (Set V-BLANK interrupt handler)
     
    Last edited: Jun 9, 2025
    • Like Like x 7
    • Useful Useful x 3
    • Informative Informative x 1
    • List