Page 1 of 1

ASIC Trace Table Question

Posted: Mon Nov 30, 2015 12:44 pm
by Ralakimus
I've been working with the MegaCD lately, and after some research, I've come to understand how the ASIC works...for the most part.

The only thing I have been rather confused on is how the trace table is formatted and how it works. Looking at a manual didn't really help me much, and experimenting didn't help much. I've tried all I could to look it up, but to no avail. All I understand is that it involves a starting X and Y value, and X delta and Y delta values for each entry.

Re: ASIC Trace Table Question

Posted: Mon Nov 30, 2015 1:14 pm
by Stef
From what i remember you have a vector table giving :
- the X,Y start position in source image
- a list of X,Y vector which give you the X, Y step to add after each pixel read in source image.
you have as many entry in the vector list than the Y size of the output buffer (one vector per Y line).

Re: ASIC Trace Table Question

Posted: Tue Dec 01, 2015 12:39 am
by Ralakimus
After doing more experimenting with what Stef said in mind, it definitely has helped me understand the trace table more.

Thanks!

Re: ASIC Trace Table Question

Posted: Thu Dec 03, 2015 2:35 pm
by Sik
Yeah, it's pretty trivial actually. For future reference if somebody else needs (remember start/delta values aren't integers):

Code: Select all

x = start x
y = stary y
for each pixel
    draw texture[x][y]
    x = x + delta x
    y = y + delta y

Re: ASIC Trace Table Question

Posted: Sun Feb 07, 2016 2:13 pm
by Orion_
can someone post a source code example on how to use this rotation feature of the mega cd ?
the official sega sdk documentation is not very crystal clear on how to use it, and I didn't find any open source example of this :/

Re: ASIC Trace Table Question

Posted: Sun Oct 14, 2018 12:40 pm
by Ralakimus
So, I've managed to get rotation to work, but I have one more problem: it's not centered. Right now, I have the start X and Ys use the standard rotation algorithm and I have the deltas be the cosine and sine of the angle. I am not sure how I would put centering into the equation.

EDIT: Solved, I subtracted the center to the x and y and then add them back at the end and it worked.