Skip to content

Commit 4d33f80

Browse files
Rename mpong to breakout
1 parent a6830ef commit 4d33f80

2 files changed

Lines changed: 43 additions & 12 deletions

File tree

internal_filesystem/apps/com.micropythonos.mpong/META-INF/MANIFEST.JSON

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "mPong",
2+
"name": "Breakout",
33
"publisher": "MicroPythonOS",
44
"short_description": "PingPong game",
55
"long_description": "Demonstrates native machinecode in .mpy files on both AMD64 and ESP32",
@@ -10,8 +10,8 @@
1010
"category": "games",
1111
"activities": [
1212
{
13-
"entrypoint": "assets/mpong.py",
14-
"classname": "MPong",
13+
"entrypoint": "assets/breakout.py",
14+
"classname": "Breakout",
1515
"intent_filters": [
1616
{
1717
"action": "main",

internal_filesystem/apps/com.micropythonos.mpong/assets/mpong.py renamed to internal_filesystem/apps/com.micropythonos.mpong/assets/breakout.py

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# This gets just 7.5 FPS on actual ESP32S3 hardware
2+
# Probably because the double buffer copies.
3+
# With a direct buffer, it's still only 10 FPS. (and flickering buttons on black screen)
4+
# direct framebuffer + without self.canvas.invalidate() and self.canvas.center(), it's still only 13.5 FPS (and black screen)
5+
16
import lvgl as lv
27
from mpos import Activity, DisplayMetrics, InputManager
38

@@ -7,7 +12,7 @@
712
else:
813
import mpong_x64 as mpong
914

10-
class MPong(Activity):
15+
class Breakout(Activity):
1116

1217
hor_res = 0
1318
ver_res = 0
@@ -28,19 +33,23 @@ class MPong(Activity):
2833

2934
def onCreate(self):
3035
self.screen = lv.obj()
31-
self.canvas = lv.canvas(self.screen)
36+
self.screen.add_flag(lv.obj.FLAG.CLICKABLE)
37+
self.screen.add_event_cb(self.touch_cb, lv.EVENT.ALL, None)
38+
3239
d = lv.display_get_default()
3340
self.hor_res = d.get_horizontal_resolution()
3441
self.paddle_move_step = round(self.hor_res/16)
3542
self.ver_res = d.get_vertical_resolution()
43+
'''
44+
self.canvas = lv.canvas(self.screen)
3645
self.canvas.set_size(self.hor_res, self.ver_res)
3746
self.buffer = bytearray(self.hor_res * self.ver_res * 2)
3847
self.canvas.set_buffer(self.buffer, self.hor_res, self.ver_res, lv.COLOR_FORMAT.NATIVE)
3948
self.canvas.add_flag(lv.obj.FLAG.CLICKABLE)
4049
self.canvas.add_event_cb(self.touch_cb, lv.EVENT.ALL, None)
4150
self.layer = lv.layer_t()
4251
self.canvas.init_layer(self.layer)
43-
52+
'''
4453
self.leftbutton = lv.button(self.screen)
4554
self.leftbutton.align(lv.ALIGN.BOTTOM_LEFT, 0, 0)
4655
leftlabel = lv.label(self.leftbutton)
@@ -64,8 +73,14 @@ def onCreate(self):
6473

6574
def onResume(self, screen):
6675
lv.log_register_print_cb(self.log_callback)
67-
mpong.init(self.buffer, self.hor_res, self.ver_res)
68-
self.refresh_timer = lv.timer_create(self.run_mpong, 30, None)
76+
#mpong.init(self.buffer, self.hor_res, self.ver_res)
77+
78+
import mpos.ui
79+
mpong.init(mpos.ui.main_display._frame_buffer1, self.hor_res, self.ver_res) # stays black
80+
81+
self.refresh_timer = lv.timer_create(self.run_mpong, 16, None) # max 1000ms/60fps = 16ms/frame
82+
#mpos.ui.task_handler.add_event_cb(self.run_mpong, mpos.ui.task_handler.TASK_HANDLER_STARTED)
83+
#mpos.ui.task_handler.add_event_cb(self.run_mpong, mpos.ui.task_handler.TASK_HANDLER_FINISHED)
6984

7085
def onPause(self, screen):
7186
if self.refresh_timer:
@@ -110,11 +125,27 @@ def unfocus(self):
110125
else:
111126
print("focus isn't on next or previous, leaving it...")
112127

113-
114-
def run_mpong(self, timer=None):
128+
def run_mpong(self, arg1=None, arg2=None):
115129
mpong.render()
116-
self.canvas.invalidate() # force redraw
117-
self.canvas.center()
130+
#self.play_button.set_style_opa(lv.OPA.TRANSP, lv.PART.MAIN) # works to force refresh on desktop but not esp32
131+
#self.screen.invalidate()
132+
#lv.refr_now(None)
133+
#self.canvas.invalidate() # force redraw
134+
#self.canvas.center()
135+
#self.canvas.refre
136+
#self.screen.invalidate()
137+
#self.screen.center()
138+
#mpong.render()
139+
'''
140+
import lvgl as lv
141+
area = lv.area_t()
142+
area.x1 = 0
143+
area.y1 = 0
144+
area.x2 = 170
145+
area.y2 = 170
146+
import mpos.ui
147+
mpos.ui.main_display._flush_cb(None, area, mpos.ui.main_display._frame_buffer1) # color_p should be pointer, not memoryview
148+
'''
118149

119150
def touch_cb(self, event):
120151
event_code = event.get_code()

0 commit comments

Comments
 (0)