Skip to content

Adding Stella - #314

Open
DynaMight1124 wants to merge 4 commits into
ducalex:devfrom
DynaMight1124:stella
Open

Adding Stella#314
DynaMight1124 wants to merge 4 commits into
ducalex:devfrom
DynaMight1124:stella

Conversation

@DynaMight1124

Copy link
Copy Markdown
Contributor

Hi

Been working on adding Atari 2600. Its a surprisingly 'heavy' system for something so old! Initially started off with an old Odroid port, which AI pretty much (amazingly too) got working within about 10 minutes.... but it wasnt very quick. Games tended to feel fine but the fps wasnt brilliant, the ESP32 was about 45-50 and forcing FS5. I wouldnt call it 'release worthy'

So I looked around and came across this port: https://github.com/wavemotion-dave/StellaDS for the Nintendo DS, clearly the dev had spent many years fine tuning it to run on a very underpowered DS with a lot of love and attention, felt like if anything could get 60fps on the ESP32, it could be this.

It kicked AI's butt for quite a few days, I gave up at least twice as it just wouldnt compile (it was trying to unpick some DS code) but second time I came back, it was only a few minutes from compiling, after that it was pretty solid. Spent some time getting all the features dialled in.

But yes it's been holding a solid 60fps on the original ESP32 with some to spare.

Heres a section of Space Invaders.

[16:44:01]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:02]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:62%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:03]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:04]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:05]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:62%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:06]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:07]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:08]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:09]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:10]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:11]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:60%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:12]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:60%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:13]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:61%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:14]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:60%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:15]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:59%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:16]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:58%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:17]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:59%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:18]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:59%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:19]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:60%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:20]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:60%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:21]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:59%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:22]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:58%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:23]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:59%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:24]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:59%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:25]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:58%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:26]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:59%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:27]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:58%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:28]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:58%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:29]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:57%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:30]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:54%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:31]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:54%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:32]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:53%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:33]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:52%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:34]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:53%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:35]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:52%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:36]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:52%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:36]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:52%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:37]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:52%, FPS:60 (S:0 R:60+0), BATT:100
[16:44:38]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:51%, FPS:60 (S:0 R:59+0), BATT:100
[16:44:39]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:48%, FPS:60 (S:0 R:61+0), BATT:100
[16:44:40]�[0m�[34m[debug] STACK:4900, HEAP:151+2767 (76+2752), BUSY:49%, FPS:60 (S:0 R:58+1), BATT:100

Uses the StellaDS port, amazing work by the dev as allows full speed 2600 on the ESP32!
It was slightly too cropped before, now fits in better with existing icons
Games that use the paddle controller should now work and also now fills the fullscreen without a bar at the bottom.
Add support for both big-endian and little-endian RGB565 pixel formats based on RG_SCREEN_PIXEL_FORMAT configuration. Move palette to DRAM-allocated array and pre-convert colors to the target byte order, eliminating the need for per-pixel byte swapping in the scaler.
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

Successfully merging this pull request may close these issues.

1 participant