semiversus / jeg

NES emulator with focus at hardware abstraction, testability and performance
MIT License
9 stars 2 forks source link

the new jeg doesn't work #29

Open GorgonMeducer opened 5 years ago

GorgonMeducer commented 5 years ago

Hi Günther

I have cloned your re-write branch and ported the EmbeddedNES to this branch using ppu_caching.c and ppu_caching.h. I manage to load a ROM and run it on FVP but there is nothing rendered.

After several hours struggling, I found that ppu->ppumask never got updated. Since there are a lot of structural update, I wonder, did you validated that the ppu_caching was still working?

Cheers, Gabriel

semiversus commented 5 years ago

Hi Gabriel,

sorry to hear that. Some work was done, but sadly the unit tests are only covering ppu_framebuffer. I never tried ppu_caching on my tests (which I should include). I started last weekend with a rework of jeg in its own branch, because I got stuck with support for mappers.

Short thoughts about my next steps (not really related to this issue): The current implementation is doing stuff on the wrong places - I had to figure out, what is actually done in each module. DMA is such an example - it's (mainly) part of the cpu, but currently, it's widespread.

It's as always in software engineering - writing clear code will result in inefficient runtime, highly optimized runtime will result in complex code. One goal would be a really clear implementation (no function pointers, no optimization, good unit tests) and then starting with optimizations.

Günther

GorgonMeducer commented 5 years ago

Hi Günther

What's the difference between ppu_caching and ppu_framebuffer?

They look similar.

I will clean the original jeg and modularize it based on my understanding.

I will let you know once it is ready.

Cheers, Gabriel