Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect, large OAM implementation #32

Open
agg23 opened this issue Sep 24, 2023 · 4 comments
Open

Incorrect, large OAM implementation #32

agg23 opened this issue Sep 24, 2023 · 4 comments

Comments

@agg23
Copy link
Owner

agg23 commented Sep 24, 2023

The MiSTer core has an extremely large OAM implementation that does not mirror the hardware at all. It wastes a ton of space and does simultaneous access to many addresses at once, requiring it to be implemented as a massive register instead of RAM. This consumes around 27% of the Pocket's resources.

image

This was introduced in MiSTer-devel/NES_MiSTer@922cdcb, which added extra sprite functionality to the core.

@agg23 agg23 mentioned this issue Sep 24, 2023
@dfilskov
Copy link

Could it be optimized while retaining the extra functionality?

Great work btw!

@naveedster
Copy link

Will there ever be save states and a video crt scanline filters?

@agg23
Copy link
Owner Author

agg23 commented Sep 27, 2023

Could it be optimized while retaining the extra functionality?

Theoretically, yes, but you have to design it very carefully for that purpose, which may be quite difficult given you're shoehorning in another 8 sprites while maintaining the same cycle timings. I would probably be more likely to drop the feature and have a more complete core, but I realize the extra sprite feature is very useful for NES.

@agg23
Copy link
Owner Author

agg23 commented Sep 27, 2023

Will there ever be save states and a video crt scanline filters?

This is extremely off topic, so I will only allow this once, and future comments of this sort will be deleted.

The core already supports savestates, and video filters will come when Analogue releases general support for them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants