don't click here

General Project Screenshot/Video Thread

Discussion in 'Engineering & Reverse Engineering' started by Tweaker, Jun 26, 2008.

  1. Cooljerk

    Cooljerk

    Professional Electromancer Oldbie
    4,687
    355
    63
    Spent yesterday documenting an hidden register in the Sega Dreamcast that allows for multi-target rendering on a single frame. KOS, the homebrew SDK for the Dreamcast, doesn't expose this functionality and the register was previously a magic number offset during init in another generally undocumented base register pointer.

    Bit 31 at 0x005F8160 when set to 1 enables the TA_LIST_CONT register in the PVR, which tells it to continue rendering onto a second object list in the tile accelerator. This means in order to do this, you must bin an entirely second object list for these different target if the target is going to render something different from the previous target. You pass the Tile Accelerator TSP setup a parameter with a pointer location to the base of your object lists. Object lists must be back to back in memory in an array, so when the PVR finishes one list, it'll move onto the next. You can do as many of these lists as you have room for in memory.

    Since KOS doesn't expose this normally, you can't do this kind of rendering using any of the KOS calls, so you have to bit bang the hardware directly through communication ports. That's what I was working on yesterday, patching KOS to expose this so anybody can use it in any homebrew application.

    Example of multipass rendering to create an HDR-like bloom:

    Screenshot_20240812_072824.png
     
    • Like Like x 11
    • Informative Informative x 1
    • List
  2. How did you find this register?
     
  3. Cooljerk

    Cooljerk

    Professional Electromancer Oldbie
    4,687
    355
    63
    Doing reading about how the PVR itself works from various documents. There was a demo long long ago, before KOS was even a thing, which showed off multipass rendering but it was uncommented and wouldn't run with modern libraries. Rewriting the demo so itd compile again and commenting the code lead to exploring a bunch of magic numbers used in the source code, and digging through them all and the PVR manual showed how it all worked, so I could modify KOS to support the feature.
     
    • Informative Informative x 2
    • List
  4. Kilo

    Kilo

    Deathly afraid of the YM2612 Tech Member
    736
    726
    93
    Canada
    Someone had to do it sooner or later.
    upload_2024-8-13_11-2-15.png
     
  5. rata

    rata

    Member
    696
    77
    28
    Argentina
    Trying to be useful somehow.
    Finally, an actually good version of Sonic 1.
     
  6. FINALLY! MY DREAMS HAVE COME TRUE!
     
  7. JGMR

    JGMR

    Member
    6
    0
    1


  8. Using the power of the Sega 32X... get ready...
     
    Last edited: Sep 10, 2024 at 11:23 PM
  9. Kilo

    Kilo

    Deathly afraid of the YM2612 Tech Member
    736
    726
    93
    Canada
    The return of Clownancy's #1 fan, holy shit!!! :psyduck: