overlapping parallax

Discussion of hardware and software development for Super NES and Super Famicom. See the SNESdev wiki for more information.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
creaothceann
Posts: 611
Joined: Mon Jan 23, 2006 7:47 am
Location: Germany
Contact:

Re: overlapping parallax

Post by creaothceann »

Espozo wrote:The bigger question to me, is how the game is calculating the collision for this: https://www.youtube.com/watch?v=djW3WTE ... 285#t=3m5s I mean, granted, it slows down through almost the whole segment.
Theoretically it doesn't have to calculate anything at runtime, just store the boundaries in ROM for each degree of rotation.
psycopathicteen wrote:I see DMA overload at 9:20. I don't see that happen in too many games.
It'd probably be in the TV's overscan area anyway.
My current setup:
Super Famicom ("2/1/3" SNS-CPU-GPM-02) → SCART → OSSC → StarTech USB3HDCAP → AmaRecTV 3.10
User avatar
Drew Sebastino
Formerly Espozo
Posts: 3496
Joined: Mon Sep 15, 2014 4:35 pm
Location: Richmond, Virginia

Re: overlapping parallax

Post by Drew Sebastino »

creaothceann wrote:Theoretically it doesn't have to calculate anything at runtime, just store the boundaries in ROM for each degree of rotation.
I doubt that's what it's doing though. It does this in three different areas, and they all last a good while.
creaothceann wrote:It'd probably be in the TV's overscan area anyway.
It's not, well, on my TV anyway. However, my TV is a flatscreen CRT from the 2000's, so I don't know how representative it would be of TVs from the time.
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: overlapping parallax

Post by psycopathicteen »

I thought about how to do the background blocking.

Use 2 tables that are 224 bytes long, with each byte corresponding to a scanline:
-layer number
-next chunk

Jump through the tables for a chunk that overlap with the beginning of the new layer, and another that overlap the end of the new layer. The chunk that overlaps the end, copy the "layer number" and "next chunk" bytes to the end of the new layer's chunk. Then change the "next chunk" byte on the chunk that overlaps the beginning (this is done afterwards in case the same chunk overlaps both of the new layer's ends). Now add the new layer's "layer number" and "next chunk" bytes to the tables.
Post Reply