Comments (19)
In 1.40 I updated the launcher to use the same display update function as the games, have you checked if it resolved your issue?
If not, then your additional gui_redraw() call seems reasonable to me but we can't remove the idle timer redraw because:
- It updates the battery meter
- It updates the wifi icon (if enabled)
- It updates the clock (if displayed)
- It updates the CRC32 status (but maybe there's an explicit gui_redraw for that, I don't remember)
Would reducing the frequency help? Maybe 200ms? 500ms?
from retro-go.
In 1.40 I updated the launcher to use the same display update function as the games, have you checked if it resolved your issue?
Yesterday I resynchronized my fork with your dev, and rebased all my branches, everything works fine but the problem with screen is still here.
we can't remove the idle timer redraw
Yes I see. Would it be reasonable to keep updating the idle each 100ms with gui_draw in load_preview, but adding an other timer to redraw idle much rarely: something like 5secs or even 10secs ?
Would reducing the frequency help? Maybe 200ms? 500ms?
So I tried it, and it blinks at 1/200ms freq.
What I'm investigating is that it seems beeing correlated with data transert. So I have two pathes I'll explore:
- My problem could be because of some powersupply voltage falls. So I'll test to power my device with an LiPo battery to eliminate this hypothesis. I've putted a bunch of capacitors to prevent voltage variations, but it doesn't have any effect.
- Simply trying an other screen. It could be a problem with this cheap device. I've bought it on amazon for something like 15€ it was one of the cheapest ones. Today I received an other SPI model with the same driver. I just need to read a little about backlight management. The current one have a BLK pin that I pluggued directly on the esp32S3, but this one have a LED pin, so I suppose I'll need to put a transistor for beeing able to plug it on BLK pin and having the light management from retro-go ui.
Otherwise I'm working on the hardware casing for retro-go if you have any suggestions or ideas let me know =)
https://github.com/Akrobate/retro-go-hardware
Just a little correction, previously I told you
(I do not encounter this problem in emulators, everything works properly event in full screen update mode)
It's wrong. Previously in full update screen mode, I had the same problem as in launcher, it is just less perceptible. In partial update, nearly no problem but still visible when a lot of elements changes. (scrolling for instance)
So It seems beeing correleted to the quantity of data transfers.
from retro-go.
Yes I see. Would it be reasonable to keep updating the idle each 100ms with gui_draw in load_preview, but adding an other timer to redraw idle much rarely: something like 5secs or even 10secs ?
Agreed, we can definitely be smarter about updates! However I still want battery and wifi changes to be reflected quickly so I wouldn't go slower than once per second.
So I tried it, and it blinks at 1/200ms freq.
You know, now that I think about it, that's a bit weird... Because in the launcher, the content changes only maybe once per minute (clock) when it's idle, right? And since 1.40 partial updates apply to the launcher as well.
In other words, there should be 0 SPI transfers when the launcher is idle. So that can't be the cause of your flicker...
To confirm this, I've pushed a commit that tracks all display and sdcard transfers if you want to confirm on your side: c742cae (it's not in the main/dev branches yet, not sure if useful to keep).
I think it might still be a power issue, but I'm not sure why it coincides with updates if no transfers occur. Maybe because both cores do some work for a few milliseconds? Would it really affect power draw that much?
Otherwise I'm working on the hardware casing for retro-go if you have any suggestions or ideas let me know =)
https://github.com/Akrobate/retro-go-hardware
I like that you're using openscad :)
from retro-go.
I linked the wrong commit (missing sdcard tracking), this is the correct patch: e31645a
from retro-go.
Hey! Thank you for your answer. I think I get confused yesterday while testing. With the last last update of develop there are no screen blinking any more.
And you are perfectly right, there no more data transfering when in idle:
So I have removed my "fix" for screen blinking.
Now I have a little screen blinks (much less visible) in games when a lot of elements changes. So I'll confirm it with external power supply and then with another screen.
It could totaly be a power supply issue, because I have noticed that when I put the volume to 100%, each time a note is playing, screen blinks. on 5% Volume no blinking.
I'll keep you informed of my progresses =)
from retro-go.
Hello. I'll join the conversation.
I had the same problem with blinking and beeper in the launcher (and emulator snes) as in issue 50 - here #50 (comment) .
In version 1.40 this problem is no longer there (but snes still runs with sound glitches ).
By the way, do you have snes running normally? without sound glitches?
Now I have a little screen blinks (much less visible) in games when a lot of elements changes. So I'll confirm it with external power supply and then with another screen.
It could totaly be a power supply issue, because I have noticed that when I put the volume to 100%, each time a note is playing, screen blinks. on 5% Volume no blinking.
I had the same problem with the screen blinking in time with the music. It's a hardware problem with the sound module.
What sound module are you using?
Probably not enough resistor rating.
from retro-go.
Hello @Tem4a ! Welcome =)
By the way, do you have snes running normally? without sound glitches?
Actually I haven't tested the snes emulator at all as it mentionned as slow running. So I supposed it's not really working emulation for now. Is it slow? or is it playable?
I had the same problem with the screen blinking in time with the music. It's a hardware problem with the sound module. What sound module are you using?
I'm not sure it is module problem. I think it just consuming to much current when working loud.
Also I do not observe any sounds problems in launcher. Spreaker remain quiet in launcher.
from retro-go.
Actually I haven't tested the snes emulator at all as it mentionned as slow running. So I supposed it's not really working emulation for now. Is it slow? or is it playable?
I also have a homemade console (in progress :) ) and snes is not very playable due to slowness, sound glitches, and non-functional controls in some games.
Although in version 1.28 the controls worked better than in subsequent versions. @ducalex , have you paid attention to this?
Here is a video, you can see how the screen flashes in time with the music :
video_2.mp4
Do you have something similar?
I use a PAM8302 module . schematic -> https://cdn-learn.adafruit.com/assets/assets/000/112/257/original/components_schem.png?1654276084
I solved the problem by changing resistors R1 and R2 to 100k as indicated in the official odroid schematic ( https://github.com/hardkernel/ODROID-GO/blob/master/Documents/ODROID-GO_REV0.1_20180518.pdf ) but I connect as a speaker to pins 25 and 26.
With your module I understand you are using EXT-Pin ( from https://wiki.odroid.com/odroid_go/odroid_go#odroid-go_gpio_pin_mapping ) and unfortunately I don't know how to help with that :(
Do you have possibilities to connect a regular audio module?
from retro-go.
I use a PAM8302 module
As I understand its an amplifier. That means you are using internal dac of your ESP Device. That's why putting 100k resistors on audio "lines" helps. You are limiting the current that way and I suppose this way the amplifier is less saturated.
On my side my module is an external dac. ESP32S3 do not have any internal dac, so for me it's only the way to get sound. I'm not worring about this part cause I'm pretty much sure it's a power supplie issues. It could be some little voltage falls, or simply some noise because of the speaker.
I have to test my device with a 3A DC-DC module. I'll tell you results whenever it's done =)
from retro-go.
ESP32S3 do not have any internal dac
ahh, yes, i see.
I'll tell you results whenever it's done =)
okay, I hope you can solve this problem :)
from retro-go.
Although in version 1.28 the controls worked better than in subsequent versions. @ducalex , have you paid attention to this?
I don't remember what (if anything) changed about controls, that was quite long ago. As for audio I definitely did something at some point because in many games the sound goes crazy after a few minutes, hinting at internal memory/state corruption of some kind.
I suspect SNES might run better on all your custom devices where the ESP32-S3 can run PSRAM at 120Mhz! But probably still not full speed :( So yeah, aside of slow-paced RPGs the emulator is mostly a useless tech demo.
Anyway feel free to open a separate issue if you want to discuss improving SNES controls (or any aspects of it really)!
from retro-go.
I don't remember what (if anything) changed about controls .... Anyway feel free to open a separate issue if you want to discuss improving SNES controls
ok, I'll take the time to test the versions between 1.28 and 1.29 and find the commit after which I started having control problems.
I suspect SNES might run better on all your custom devices where the ESP32-S3 can run PSRAM at 120Mhz!
I don't know much about hardware, maybe you can help.
I'm using this esp module : https://www.lilygo.cc/products/t7-mini32-v1-5?variant=42302663065781 , the description says only PSRAM 8MB, but there is no frequency (although in Chipset it says ESP32 240MHz Xtensa).
- how can I find out what is the frequency of PSRAM ? or 240 is it ?
- do I need to make any changes in sdkconfig and compile the build myself to use the full power of the module? or the build from the release adapts itself to the platform and uses everything it can?
from retro-go.
Here is a video, you can see how the screen flashes in time with the music
I see on your video you uses a screen I bought also for testing. I suppose this one do have a LED pin for backlight. How did you pluggued it to your esp? With a transistor like a 2N2222?
from retro-go.
LED pin for backlight
this pin is connected to GPIO 14 according to official mapping
https://wiki.odroid.com/odroid_go/odroid_go#odroid-go_gpio_pin_mapping
here is the module wiki
http://www.lcdwiki.com/3.2inch_SPI_Module_ILI9341_SKU:MSP3218
and according to the schematic ( http://www.lcdwiki.com/res/MSP3218/MSP3218-3.2-SPI.pdf ) there is already a transistor on this pin.
BUT!! if you use 3.3v supply - you need closed the J1 jumper.
from retro-go.
@Tem4a Thank you for the wiki: http://www.lcdwiki.com really usefull!!! On your device do you use 5V or 3.3 to power the screen?
from retro-go.
@Akrobate I use 3.3v directly from 3v3 pin of ESP.
and closed the J1 jumper
from retro-go.
how can I find out what is the frequency of PSRAM ? or 240 is it ?
- do I need to make any changes in sdkconfig and compile the build myself to use the full power of the module?
Sorry I wasn't clear, only the ESP32-S3 can use 120MHz RAM (and octal RAM, together giving quite a boost vs the 80Mhz quad of the ESP32), your module is the same as in the ODROID-GO, "just" a regular ESP32.
As for sdkconfig.defaults
changes, they're well documented by espressif but what I usually do as a first step is:
Build the launcher with rg_tool.py. Enter the launcher directory, make a copy of sdkconfig
. Then run idf menuconfig
and change the options I need. Then do a diff between the new sdkconfig
and the one I just backed up. That diff can then be placed in the target's sdkconfig.defaults
so that it's applied to all apps and all future builds. sometimes I need to copy some unchanged lines, for context. But that's the gist of it.
from retro-go.
SNES .... the emulator is mostly a useless tech demo.
is it possible to complete the snes emulator to a full working state?
or is the problem not in the complexity of the code, but in insufficiently powerful hardware?
from retro-go.
I still believe full speed SNES emulation on the ESP32 is possible. But I don't know if it will be with snes9x or by me. I spent tons of hours trying so many tweaks and rewrites but I never could achieve full speed with a reasonable frameskip.
Overclocking might help, though.
from retro-go.
Related Issues (20)
- Why update screen mode (FULL vs Partial) has been removed? HOT 4
- PC Engine - Raiden Crashes when setting palette. HOT 6
- Support ZX-Spectrum HOT 3
- Add support for Neo Geo Pocket (Color) HOT 1
- Prboom(esp32-s3): External DAC crashes when system monitor task is enabled. HOT 14
- Unused var HOT 1
- Error with esp_http_client_read on esp-idf 4.4 HOT 3
- [Feature] - ST7701S SPI LCD Driver HOT 3
- Files with too long a name do not show in launcher and/or are corrupted in the web UI. HOT 2
- Building for a custom board HOT 1
- Numerical Battery Readout in Debug HOT 4
- Question about reading sd card HOT 14
- MRGC and Gamebox battery voltage HOT 3
- PocketSprite support
- Does this filmware work with esp32-s3? HOT 5
- Game Boy Advance Emulator HOT 4
- PSRAM Required? or is there a way to build an image for running on a ESP32-wroom-32? HOT 5
- Problem to run / build on esp32s3 HOT 13
- On develop branch reset init lcd screen missing HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from retro-go.