Enthusiast adds ray tracing to the retro console

Developer and enthusiast Ben Carter has added a hardware ray tracer to Super NES. Let me remind you that the console itself is already 30 years old.





To implement this idea, he was advised by a friend and a desire to study Verilog and FPGA better. Thus, the SuperRT project was born. The blogger wanted to make an analogue of the SuperFX chip - even the names are similar. The SuperFX chip was housed in a cartridge and processed visual effects not available to the console itself due to hardware limitations.





In the end, Carter built a custom cartridge board with three additional 50MHz compute cores - these provide ray tracing and basic geometry support not available with regular SNES. You can see their work on KPDV. The author apologizes for the quality of the video - the video capture card is to blame.





, , . , " Pachinko", . (level shifters) (FPGA) DE10-Nano. , 5, SNES, 3,3 .





, , , 50 : , (AABB). SNES , 200x160.





RAM . :





0000 Start
0001 Plane 0, -1, 0, Dist=-2
0002 SphereSub OH 2, 1, 5, Rad=5
0003 SphereSub OH 4, 1, 4, Rad=4
0004 SphereSub OH 5, 1, 9, Rad=9
0005 SphereSub OH 2, 1, 2, Rad=2
0006 SphereSub OH -0.5, 1, 2, Rad=2
0007 RegisterHitNoReset 0, 248, 0, Reflectiveness=0
0008 Checkerboard ORH 48, 152, 48, Reflectiveness=0
0009 ResetHitState
0010 Plane 0, -1, 0, Dist=-2.150146
0011 RegisterHit 0, 0, 248, Reflectiveness=153
0012 AABB 4, -2.5, 11,    8, 3.5, 13
0013 ResetHitStateAndJump NH 44
0014 Origin 6, 2, 12
0015 Plane -0.2929688, 0, -0.9570313, Dist=0.2497559
0016 PlaneAnd OH 0.2919922, 0, 0.9560547, Dist=0.25
0017 PlaneAnd OH 0, 1, 0, Dist=1
0018 PlaneAnd OH 0, -1, 0, Dist=4
0019 PlaneAnd OH -0.9570313, 0, 0.2919922, Dist=-1
0020 PlaneAnd OH 0.9560547, 0, -0.2929688, Dist=1.499756
0021 RegisterHit 248, 0, 0, Reflectiveness=0
      
      



The maximum allowable frame rate is 30 FPS. This is due to the bandwidth limitation of the interfaces of the console itself. Each frame with a trace "weighs" 32 kilobytes while the output interface is limited to 16 kilobytes, so a full image refresh is possible only every two frames. The author plans to further develop his brainchild, more details can be found in his personal blog .








All Articles