From 769c1cbc052ee237466923d7a0755de35c926af2 Mon Sep 17 00:00:00 2001 From: Zahkc Date: Mon, 3 Jul 2023 21:09:16 +1000 Subject: [PATCH] First Upload 0.6 Alpha offers minimal core functionality. --- Save/current.json | 1 + Sprites/Backgrounds/bg1.bmp | Bin 0 -> 16522 bytes Sprites/Characters/BOTORU/ADULT/body.bmp | Bin 0 -> 5366 bytes Sprites/Characters/MUSH/ADULT/body.bmp | Bin 0 -> 5358 bytes Sprites/Characters/ZAHKC/ADULT/body.bmp | Bin 0 -> 5350 bytes boot_out.txt | 3 + code.py | 76 ++++++++++++++++++ lib/adafruit_display_shapes/__init__.py | 0 lib/adafruit_display_shapes/circle.mpy | Bin 0 -> 576 bytes lib/adafruit_display_shapes/line.mpy | Bin 0 -> 447 bytes .../multisparkline.mpy | Bin 0 -> 2330 bytes lib/adafruit_display_shapes/polygon.mpy | Bin 0 -> 1460 bytes lib/adafruit_display_shapes/rect.mpy | Bin 0 -> 932 bytes lib/adafruit_display_shapes/roundrect.mpy | Bin 0 -> 1664 bytes lib/adafruit_display_shapes/sparkline.mpy | Bin 0 -> 586 bytes lib/adafruit_display_shapes/triangle.mpy | Bin 0 -> 1145 bytes lib/adafruit_display_text/__init__.mpy | Bin 0 -> 4851 bytes lib/adafruit_display_text/bitmap_label.mpy | Bin 0 -> 4216 bytes lib/adafruit_display_text/label.mpy | Bin 0 -> 3947 bytes lib/adafruit_display_text/scrolling_label.mpy | Bin 0 -> 1125 bytes lib/adafruit_esp32s2tft/__init__.mpy | Bin 0 -> 892 bytes lib/adafruit_esp32s2tft/graphics.mpy | Bin 0 -> 410 bytes lib/adafruit_esp32s2tft/network.mpy | Bin 0 -> 2473 bytes lib/adafruit_esp32s2tft/peripherals.mpy | Bin 0 -> 675 bytes lib/adafruit_imageload/__init__.mpy | Bin 0 -> 912 bytes lib/adafruit_imageload/bmp/__init__.mpy | Bin 0 -> 859 bytes lib/adafruit_imageload/bmp/indexed.mpy | Bin 0 -> 1643 bytes .../bmp/negative_height_check.mpy | Bin 0 -> 150 bytes lib/adafruit_imageload/displayio_types.mpy | Bin 0 -> 318 bytes lib/adafruit_imageload/gif.mpy | Bin 0 -> 1741 bytes lib/adafruit_imageload/png.mpy | Bin 0 -> 1034 bytes lib/adafruit_imageload/pnm/__init__.mpy | Bin 0 -> 1168 bytes lib/adafruit_imageload/pnm/pbm_ascii.mpy | Bin 0 -> 449 bytes lib/adafruit_imageload/pnm/pbm_binary.mpy | Bin 0 -> 599 bytes lib/adafruit_imageload/pnm/pgm/__init__.mpy | Bin 0 -> 548 bytes lib/adafruit_imageload/pnm/pgm/ascii.mpy | Bin 0 -> 784 bytes lib/adafruit_imageload/pnm/pgm/binary.mpy | Bin 0 -> 642 bytes lib/adafruit_imageload/pnm/ppm_ascii.mpy | Bin 0 -> 881 bytes lib/adafruit_imageload/pnm/ppm_binary.mpy | Bin 0 -> 706 bytes lib/adafruit_imageload/tilegrid_inflator.mpy | Bin 0 -> 978 bytes lib/adafruit_max1704x.mpy | Bin 0 -> 3213 bytes lib/adafruit_register/__init__.py | 0 lib/adafruit_register/i2c_bcd_alarm.mpy | Bin 0 -> 1673 bytes lib/adafruit_register/i2c_bcd_datetime.mpy | Bin 0 -> 1097 bytes lib/adafruit_register/i2c_bit.mpy | Bin 0 -> 786 bytes lib/adafruit_register/i2c_bits.mpy | Bin 0 -> 1041 bytes lib/adafruit_register/i2c_struct.mpy | Bin 0 -> 1045 bytes lib/adafruit_register/i2c_struct_array.mpy | Bin 0 -> 1014 bytes lib/buttonBus.py | 21 +++++ lib/menu.py | 28 +++++++ lib/save.py | 16 ++++ lib/selector.py | 47 +++++++++++ settings.toml | 0 53 files changed, 192 insertions(+) create mode 100644 Save/current.json create mode 100644 Sprites/Backgrounds/bg1.bmp create mode 100644 Sprites/Characters/BOTORU/ADULT/body.bmp create mode 100644 Sprites/Characters/MUSH/ADULT/body.bmp create mode 100644 Sprites/Characters/ZAHKC/ADULT/body.bmp create mode 100644 boot_out.txt create mode 100644 code.py create mode 100644 lib/adafruit_display_shapes/__init__.py create mode 100644 lib/adafruit_display_shapes/circle.mpy create mode 100644 lib/adafruit_display_shapes/line.mpy create mode 100644 lib/adafruit_display_shapes/multisparkline.mpy create mode 100644 lib/adafruit_display_shapes/polygon.mpy create mode 100644 lib/adafruit_display_shapes/rect.mpy create mode 100644 lib/adafruit_display_shapes/roundrect.mpy create mode 100644 lib/adafruit_display_shapes/sparkline.mpy create mode 100644 lib/adafruit_display_shapes/triangle.mpy create mode 100644 lib/adafruit_display_text/__init__.mpy create mode 100644 lib/adafruit_display_text/bitmap_label.mpy create mode 100644 lib/adafruit_display_text/label.mpy create mode 100644 lib/adafruit_display_text/scrolling_label.mpy create mode 100644 lib/adafruit_esp32s2tft/__init__.mpy create mode 100644 lib/adafruit_esp32s2tft/graphics.mpy create mode 100644 lib/adafruit_esp32s2tft/network.mpy create mode 100644 lib/adafruit_esp32s2tft/peripherals.mpy create mode 100644 lib/adafruit_imageload/__init__.mpy create mode 100644 lib/adafruit_imageload/bmp/__init__.mpy create mode 100644 lib/adafruit_imageload/bmp/indexed.mpy create mode 100644 lib/adafruit_imageload/bmp/negative_height_check.mpy create mode 100644 lib/adafruit_imageload/displayio_types.mpy create mode 100644 lib/adafruit_imageload/gif.mpy create mode 100644 lib/adafruit_imageload/png.mpy create mode 100644 lib/adafruit_imageload/pnm/__init__.mpy create mode 100644 lib/adafruit_imageload/pnm/pbm_ascii.mpy create mode 100644 lib/adafruit_imageload/pnm/pbm_binary.mpy create mode 100644 lib/adafruit_imageload/pnm/pgm/__init__.mpy create mode 100644 lib/adafruit_imageload/pnm/pgm/ascii.mpy create mode 100644 lib/adafruit_imageload/pnm/pgm/binary.mpy create mode 100644 lib/adafruit_imageload/pnm/ppm_ascii.mpy create mode 100644 lib/adafruit_imageload/pnm/ppm_binary.mpy create mode 100644 lib/adafruit_imageload/tilegrid_inflator.mpy create mode 100644 lib/adafruit_max1704x.mpy create mode 100644 lib/adafruit_register/__init__.py create mode 100644 lib/adafruit_register/i2c_bcd_alarm.mpy create mode 100644 lib/adafruit_register/i2c_bcd_datetime.mpy create mode 100644 lib/adafruit_register/i2c_bit.mpy create mode 100644 lib/adafruit_register/i2c_bits.mpy create mode 100644 lib/adafruit_register/i2c_struct.mpy create mode 100644 lib/adafruit_register/i2c_struct_array.mpy create mode 100644 lib/buttonBus.py create mode 100644 lib/menu.py create mode 100644 lib/save.py create mode 100644 lib/selector.py create mode 100644 settings.toml diff --git a/Save/current.json b/Save/current.json new file mode 100644 index 0000000..b204901 --- /dev/null +++ b/Save/current.json @@ -0,0 +1 @@ +TestTestTake 2Take 2Take 2Take 2 \ No newline at end of file diff --git a/Sprites/Backgrounds/bg1.bmp b/Sprites/Backgrounds/bg1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9eb85154f9fb8eaf14d85da52551f0f4891c8591 GIT binary patch literal 16522 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 b7&hJ-<2dtVd)Z4e_Q0057(R;*lh(fhhox%F literal 0 HcmV?d00001 diff --git a/Sprites/Characters/BOTORU/ADULT/body.bmp b/Sprites/Characters/BOTORU/ADULT/body.bmp new file mode 100644 index 0000000000000000000000000000000000000000..88b63405990e4d03f014c24681895c8097146c7f GIT binary patch literal 5366 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 JFA?1V^IwzBibDVZ literal 0 HcmV?d00001 diff --git a/boot_out.txt b/boot_out.txt new file mode 100644 index 0000000..d803366 --- /dev/null +++ b/boot_out.txt @@ -0,0 +1,3 @@ +Adafruit CircuitPython 8.1.0 on 2023-05-22; Adafruit Feather ESP32-S2 Reverse TFT with ESP32S2 +Board ID:adafruit_feather_esp32s2_reverse_tft +UID:0740D17FA749 diff --git a/code.py b/code.py new file mode 100644 index 0000000..377f64a --- /dev/null +++ b/code.py @@ -0,0 +1,76 @@ +import time +import alarm +import board +import displayio +import digitalio +import bitmaptools +import adafruit_imageload + +import menu +import selector +import buttonBus + +#screen /dev/ttyACM0 115200 + +#setup +board.DISPLAY.root_group.hidden = False +board.DISPLAY.rotation = 90 +splash = displayio.Group() +board.DISPLAY.show(splash) + +bg, bgPallette = adafruit_imageload.load("/Sprites/Backgrounds/bg1.bmp", bitmap=displayio.Bitmap, palette=displayio.Palette) +bgTile = displayio.TileGrid(bg, pixel_shader=bgPallette) + +tama, tamaPallette = adafruit_imageload.load("/Sprites/Characters/MUSH/ADULT/BODY.BMP", bitmap=displayio.Bitmap, palette=displayio.Palette) +tamaPallette.make_transparent(3) +tamaTile = displayio.TileGrid(tama, pixel_shader=tamaPallette, x=20, y=100) + + +splash.append(bgTile) +splash.append(tamaTile) + +bounce = False +bounceAmount = -10 +selector.showSelector(splash) + +#Menu Activites +def do(x): + if x == 0: + pass + elif x == 1: + pass + elif x == 2: + pass + elif x == 3: + pass + elif x == 4: + menu.toggleMenu(splash) + elif x == 5: + buttonBus.button1.deinit() + pin_alarm = alarm.pin.PinAlarm(pin=board.D1, value=True, pull=True) + time.sleep(0.5) + alarm.exit_and_deep_sleep_until_alarms(pin_alarm) + + +#System Loop +while True: + + if(round(time.monotonic()%0.5, 1) == 0.5): + if bounce == False: + bounce = True + bounceAmount = bounceAmount * -1 + tamaTile.y += bounceAmount + else: + if bounce == True: + bounce = False + + + if buttonBus.getSelectedButton() == 0: + selector.lastPos() + time.sleep(0.2) + elif buttonBus.getSelectedButton() == 1: + do(selector.spos) + time.sleep(0.2) + elif buttonBus.getSelectedButton() == 2: + selector.nextPos() + time.sleep(0.2) diff --git a/lib/adafruit_display_shapes/__init__.py b/lib/adafruit_display_shapes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/adafruit_display_shapes/circle.mpy b/lib/adafruit_display_shapes/circle.mpy new file mode 100644 index 0000000000000000000000000000000000000000..39065e9d1fd685cfcc065e41d7dd9877df276e90 GIT binary patch literal 576 zcmZ{f(Q4CB9LE1?8e&bmo-7zg6|K|`m641vcA+=bRnT2%yADQSlBMa{nwd4>HmTZl8FcxqtB_6cx+-bq2vdrQC2}J2yJQu!DRDuXqR*e+ zvsR6Jut)bBjppeAEW^hp%&&p^C0%??7t{3D`9*%DsQL|6zoY7p&395iov#!~*98Cx zX4Q(MC`v~~N`*bIL!uSV60LHPz0NqT%Irl><3yAH(B0aSBC{UM6HQtqD@yJ(lQUdm Kdl@eMgMS0c1*U}n literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/line.mpy b/lib/adafruit_display_shapes/line.mpy new file mode 100644 index 0000000000000000000000000000000000000000..a56611e40cf074a6366df6368e3dd12821b9a6ea GIT binary patch literal 447 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/polygon.mpy b/lib/adafruit_display_shapes/polygon.mpy new file mode 100644 index 0000000000000000000000000000000000000000..0a22f03f075cae9c8c2c62152ca4a054f8d82e15 GIT binary patch literal 1460 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 GqWuQim#h{5 literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_shapes/triangle.mpy b/lib/adafruit_display_shapes/triangle.mpy new file mode 100644 index 0000000000000000000000000000000000000000..53763b59f3902acab694ad2ef508e9153734ebfd GIT binary patch literal 1145 zcmbtS-*4Mg6uyp=hK6<6ad0wyUYmS zJOv;@T$WW)s`1r0HhDyC%3^K(O`OJxixc1q379`wFDx!%;3_1JE=$$sx>Q5N_x{5u zA&)4o0ue|hGKmyTbKGZwQb#5ncM{M9$0>p=aolPOBZ$?Pm679VoW}EI46ElhR8_9O zn@p~Y>PBNNQI3A$21E&3y4M5v0{d~_dNSA~8W<1StTvz}jm?e7(S+Y5pl2x<+Vv3}Txg~!=3 z*xzd%6dvoL0O!o@HY^0k9jn`|f;qf{GS~Qylj#(}T`sIHUAUCX_=?#dZ|2JY03X=# zZq0g|v)-*U-sTzaR?6E4kH z&)Bn2AL#pL=LzeB<{3sVaHQM%>!Z?>h4#&2vE4dAnun4mx`>`Ne9^Z4hon2bov`~YlSG(;-_HXL%~^)e623?icnKE%7@-j dHUf1NA%@GMU6v&CpEi)PLm2r7%2HKQ{sD&`uI~T< literal 0 HcmV?d00001 diff --git a/lib/adafruit_display_text/__init__.mpy b/lib/adafruit_display_text/__init__.mpy new file mode 100644 index 0000000000000000000000000000000000000000..46acbd39735558d2277c94f249f571b39eb55642 GIT binary patch literal 4851 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 literal 0 HcmV?d00001 diff --git a/lib/adafruit_esp32s2tft/peripherals.mpy b/lib/adafruit_esp32s2tft/peripherals.mpy new file mode 100644 index 0000000000000000000000000000000000000000..8edd0bd3bc0f12400cc191baf627ab169280e35f GIT binary patch literal 675 zcmYLG!A{#i5Z#S2i33IJUE{idN+_Z!RK&!IP}M^vN>YJ@f+KHZhg zESRwCL6{u)LPW_&+m<5ybXfDk8~fReeemq+kjI{M=T3w#ncHV>!#Q($UwSp!b-!17 z1DAhQGwlar{Ri!#2z2n$l*1JhtT?~~x&zI{5#wVnbQHy*T#T4Fg{DM@sSx2ed-=xv`_Ak zF^u`OFUBlMHsSt#A-A+{ZY|N-91Je8h891c_j;$DW}&s6;VM>%+Jw1P#8py0?zrc@ zoT!#u`oBBi_hjze%}LQJMe-n+U_$0k+O4Oa5|xT`0*y-YjSJ7GBBWs|qEzgIOSxVE zeqJeiwZ`3^ZtQMl2bG;2kdt*omFb)iLz%{fX_Q7~`K@N`E@Vgj>b5M@T3ROA33&YD mxzqHKhPKtL+n31&2~V;9%95&P7XX7#zojTC9z4#-z~f&NLb5;r literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/__init__.mpy b/lib/adafruit_imageload/__init__.mpy new file mode 100644 index 0000000000000000000000000000000000000000..2a6dd3101699275b06230e19e661a31a8ded806d GIT binary patch literal 912 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 H;|--B%SvA+ literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/gif.mpy b/lib/adafruit_imageload/gif.mpy new file mode 100644 index 0000000000000000000000000000000000000000..0e5e6fb51f96c6a70c4847a7677ac66d26ce7c9c GIT binary patch literal 1741 zcmYjRT~HfU6u!G55J(K0A3`Wqwh2u_zyKizTl;{^iaDG@p@*S%u3^^OHiZz^8jBvzd@Mb9M-uN4*_AeTOBb`3dVV2MwtT0WBO2!0k9Ax zUFrM!t1EbjHTUCA+!W{ube#xx1_B5DaZj+D4*I%%(OeIz^8t^``rd>#&(BxCqgEe2)_I62HS@B{Hu1vfHOiwh*hQq z-}St;!Pe_HGPO1u01os0?489RnKB|%CYuv1$*R2ClJ)P7jl4O?*M1N2vh}@!Li03O zX+2JE+Zi~`OOwTEA+OMq@NqE<>XoewpQfv0rgdq}O|4VmMjJj(1IvM6z#k5JJpI1z zPM-(aZBAR2J|IwseYHm4(lQVTy$|X1=~#QcBw*bo^Z?!=arFnxSa5u0hrg8?d;bD^ zdmKE(Yk1w>TBYG;gyfC}(4*Vj(GK+ZPN}?DnZH#DlBXBd&9%krPk|h~c1zt{Xa1OF zewhWWA%{b58_UBs=lB$CEu9AzNb$65QkiDelHsyF(0n8&&l+al~R~wT^?K}V$GoGb=LF6Sgw^4H#t3|4} z76*LcZP z%~B6~jvxUJ#wV-=X3vzmLBLDQ04~|lIn7~?5SpW*@+)h@n!^Bbh8OCKQ%k_J=CDCu zSPhYZ2^WvHJcM|qO7?a z%GKsgdV@)HQT&VPd)0=&q5U4O-%ERfLC|pj8F~WQTT1{DFOO!B9VxJJ_eU9oSIQ1E zW)9%^gB#c9pQ~F7+kdXitDDR7SDvzs7%%UH))cV;iYPl`x_j8J;Xrpp? zJer`|59o%z=v7T$Gb{QMv>e??yY^Dbt(}{|yT$!Sjtow!i76RUQ(sb;8BnT=i_n9{ zJk$;7B|$7~Isynrqri0}&ns9|3jE=@#^T$V3&> zujnoTv4)9UORo{3ZCss^ws1MeM!r`q`;Ny9wJ87FBJ7WL*cvf|Xh&mu4|S%SlK)Y| zxHt`{FK{6iZAtNf%;|3|v%~`?I+hwclsd@snsxzth$NtCBE>VB=0Vrdw3DM$f$4Hv zQI`$^o(^hMCo&@WT-z2_X_v%1N;y_V&CJURom6e=NWoD zpFvy1Y-oSzufOkzk%l^s*$5Y5nDKmG30i>oF$)Ny{o$hr_a8rb`g_wME$$)?zv4zN zO#BAnZ#y&PJA6lMZ>V{ErSMXX;x&#&5T0MJXG29LgKw;~LQIP^5m;Y&`|Qfy47hg} zD-1p(GlAbq7F?H@)AfJPe)c@~>SD2|q=;lkL+!@bIBGtCtdo#HQQ^scXG7hEm42*r z5G&BMA>*Z{UF;&;$8iQE$KiSqp=((ncmHzhcKzn-Oqc!&sUJ7g7!KB?_iUs>rzB3| zNe||ymEa)K;%<^HMG*bjCYRn$9aT0{>Km@n+e{0HBVM8yCA literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/pnm/__init__.mpy b/lib/adafruit_imageload/pnm/__init__.mpy new file mode 100644 index 0000000000000000000000000000000000000000..cbc4ef3f92d8a33c061cd245618ab35570d6d0ff GIT binary patch literal 1168 zcmZ`(&2Jk;9G!8Tu4}vQ)LL1f1ibC!qr}uEiEC68A;;dLrc@<{8ng%4?ykr2sB7=A zyGF8T={OXq!~rD!kufoR>%^!LcL7d?sWUy1f?_SPZrH^435u7f-!#}lXewEw9SrISbzzQp4||+H0^T|X=KfH_TssfJ+bF)6U3@XS zoJ#5Xd&Kp`-gF&<6w-BNnbE)^eJ;gDi5Z2ceXyYl(2yJAOkfsT-a}>6rV2_LboFd9~lIB54~*W4<)v%K_h{EyL}M1wU$EKS3~ZwK-5f z5w0TmaNz1H-!4aZ5-j0p9+K_RjBbA7r^-VaGKL+eWdrv;V;3IdA)d2e-98J$PP`tKen)KgsYZkvi5rqmr* z@f)HN9Dc>AE8-OhicP~;f*Iz-{{H^3AMl>3w!AiDj_V8I@ZC6IzJJ`kWTmR(b(%;uD0KnwGj`(H_ literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/pnm/pbm_ascii.mpy b/lib/adafruit_imageload/pnm/pbm_ascii.mpy new file mode 100644 index 0000000000000000000000000000000000000000..df61d27a41d67955d188d207a0cda13440e95352 GIT binary patch literal 449 zcmXw#!A{#i5QcXRDG_xe7a>a(k!W$1f`x1X1yoM09Z-uZk+c<%N@&^Gn|LKVUfCOH z4v4jQp%zHP3(!15#i=I_J@*CJq>40i`e(kG|95lB{PT-%%L`y?2m830bSOtO!YvZU z*tc0bvRNZSIQ1yCSXWGm$HtqL`JGCMfcM)#XwzRhEF_w?$2g7KI5d?xm3J9!w~9F( z4!bV2qSI+MNkaTj1p6d0;oKyRixVTQP{kqPoM@^;d4!n+%=k2AA@0hVF=O`$ICu(5 ze=3urz6-&Trk1VprnRQ)2%V55mA4TxfUY5w5Edg;GvVhosON_^Y955?+kkVHZrOH= z@}SeOyg0JQj_r42>n=?^89}wn14;Za4C13CSaRv&_1|0xJ`*pGjaLiC;*zntXsiMw zcY7%uM;!bT17}@)p9N>x2E6Ufg5wR~P6+3P=oydh8$fi&RRRmEa}@3=I$@E3z##_0OpVV%pkhQ7e+D%K`&T!m^WP&~Px! z7EJWySD~%YdQ%gsS5NlliKAJGU%(*^le~u~Gw*NS_eneWz;f?-EC!rgT3M@@EksnL zYgJe`w6cO5x`K@>KMvT9pbkVfiuC%FvWK-yAahg2b`Ar9G_<34x+J zg@~?UnfH0hsEO-Zo4s+c99H?AMUcA!BEK_pG{3`vm!f+$zIr>Jlq6Ms4b3K-L{&pT z5>?fN*ihB1%sokR()@I_1TTq*%~(XFnGht<&6YT!xltnoH}5G*6_Hx27%v&RGSi}L z&itg2Sz?~{+N8$5*q++jWsz~#)QwtKW5RVBDg=Ye(QxSIjc_y^jNSrtM9=zO@YY)A zzMrH8nz~Cpj*~S`eGmgbPLBsenSVC0#-qWZ_3u1$i4Lvt866FersSk~c2cbAXD4;q zIsPQ`B>?6ts199kP?^-+HHfM;;%3V*TTA%Dp7rAMhIe6+-YFy^zyrD-@X8DJ`y$ZS z`8Dnolv#lAA9D1~b^rhX literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/pnm/pgm/__init__.mpy b/lib/adafruit_imageload/pnm/pgm/__init__.mpy new file mode 100644 index 0000000000000000000000000000000000000000..92fb760ed588feb52abd4b4e56a08048bf72f945 GIT binary patch literal 548 zcmYk4%W4}j6ow_o&deA$s3DjV5Ann{Z84@!Z-MSgVoC`ijq92)i!jy9$gW^6Leea} zQ!a%FouQ_7U1uUZwIlgn-UQ=ljop&XKlDg}U?6?lge0i$gr(8I>N5@t8y@ z4!bOgyKEeHJ&z_j;XPs#WvFtq-r0Cje-(n)3@B87m$8T-^oB{ACOATi10s>RONDF~ zYZW z@I*5uT}y|1f?C(ycA5yuvp}XCHRh6AS6aPxqxN(|MBLQaxdRUFg8Ns!qH=d2I2?39 zA65L^)$gMvHgCj#3aaL8C;b4x(~ZwxKB<>2xUL%S+Yej42YUm3!1Q?7I0k=vrdkHw zX6YFuQ#HJp9t|(gnv4H>>*@%Vu?Q&DvjS+t-|o+q(%0`lkado%Z=0tJ!CBLobGm~B z^T{>%$NjZp%s}HD896vJFttHHC<1dtBXUna8V$T8i+#c?AM%x2mRNhd>F8mc86q6a miIb$#5gB7Cmn8HH`%iQ{7pn(YoA=)L`#x_b!7_p1V`nf7?lDDE za^;HdWb~qv$A+nBF{@OJS@~j2u~l6kvKEM&bc6z-;d6m8?dbqq%>&^&rz)0#x%Nry zaNKpv(an-#h^`*5vta3^yx;9ZdnZjezg)@Xa2abiv7+I!h;jTI;%@7}#+z z=aqG*s8}M?!)v;28Oj3fVW|&2=|^1OZePMI*-p8lI%b*cZAlKLsQT2tIzwTwz3(x8 z6lRV=_-C?>q{k85O{GL;auj@?e_M|rUw5{m8(PL{@uXB>o=nxBqie2{Bsdodj|HQV zQ2%H&9O>IH1|m=sJPtODIDF*cnFODBxFo?wO@N1sarAjL#QsRS zh&7_C$9nEEl z*-ULMB_EKbdV`1gWeG{HEjro8c>X1oHHdtN%zUjAd7R9A`wyWtm_oS8j`4Q&0KvV7 zz=J_u1(>B2YwK@BW_oe^*6r_!S~Z<+MK5Ty_F80A#CUSLfjjT(np5x=u%0hC-t5j7 zcI`f47Ocx%!g)it9n~ya7fz5t7=T)4;t0Iu+Rmu;KQTf6T~z^qrJXEGE*{j`!_~#v ztnWBWuFQ!;!%(BU*Xi!)9na%ZrHIRlgJ~i&A;2*6{sRwkv)LSQNvN?jE&r-E=z#8B Rq>O4Pw(Z})nTA=m{{nu1@%I1# literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/pnm/pgm/binary.mpy b/lib/adafruit_imageload/pnm/pgm/binary.mpy new file mode 100644 index 0000000000000000000000000000000000000000..9729d4d68fcaf73b8686edb9aba34ad78b558e16 GIT binary patch literal 642 zcmZvZ&ubGw6vt;bZIhPRu1gHqL{rj`l(i%whCuNkY=V^Lpt0JzrLvu5C!3*@-DP(c z$w9J3@gN@kL-JFr_2O^adh_7Xiyl1sA2_u!c#z>SyqWj?eBYZXPV%vZhjcj!{Hsud zb=$>M#Z9OqVnQur8O@BPH#1diK)aQ;TAtsVUW_efS7O(+$1$*~15cQ_+<} zmX}hw^i?2&CwcI`6ADm7NCAB4d2-6z{3rrl1aclFhoLE`X)g+# zBL8ad{kXIBwfLp2D3zl@Dd36IgJGUOsvP%ATVB806T$9~X?@2G?;y1MjL8^(<-dGU zM26c$Hl%1j&#C3}Aj^L~6ais~5ZGpx2d|z>{D%B}J1^CP`lBhYc8Y={y@la=Zrt9!v=a_ac47|TT-hVWH zBoL70tJrpQvn0zQ2=KCOW6PA~6BVHRo^xf(z&wAFU|S)k&GV-%!dexB_ny)n!tXkZ zNz~o$ClyOCCgh(ZhCZ-^mYFE*>~M^?!t`DUf6KJc z+&F?u*=&?Mdjti%P0I$jK+tCDWKys(mQ~X*Z6~WD&KW5XVmZeWiM&n<<=MDu78Bc+ zCq}ouPwTeIGMKE80yFYtGl^4-HqJnIhgKh=lq*7Gbayxsn+SGC6G-Vnq6;XE>XtmV0`5TS(V>ok~M=`eThsF*^Ne>$&}~ zCV;`1M7a1Yg`U5B5#^?G?2}wn`d*#?asI;B^yg|Ww^_Yn)$`>jrviBAbOZ0Xrfa0& zFJL`iApY6ENw!&=$=;s)GScVUM<-@RLgB8S-qVr6-q@jZ1Y)ovz(^8aFNknsK84;i zM3_lI#zX6kAFri;T2K3EEz?UIA+(VR(wYcE0$k>Si7X7b>PeJhPO#}VStOur##$2H z+Q{&%lmvLhc1e`av6mVlZX?6dtSUXIW>pTg&cZBMqiy1l!Tw_wsx|DU=b5I3rk5*x Q%R#mFJ0UVN*^J=+1H&{DSO5S3 literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/pnm/ppm_binary.mpy b/lib/adafruit_imageload/pnm/ppm_binary.mpy new file mode 100644 index 0000000000000000000000000000000000000000..954fc464a5a6bc146f7f81d367b58e3e7d214eca GIT binary patch literal 706 zcmZva&2JJx7{+IyErejRZpa>lhysDSAxl3HqbFUE)V7Jmnj%IsUDyF8UD(a;tcHVO zt1cB~3KUO+ z`1jm^Q<{R{KIb2k#x6+{f`HHiY+CFi2t|RwA!K4hN2pK`U2_vq@OE-3R3Nmj)+sft zE2&hC(7IigDtaT;k1%zupJkSq6_)92i`JRtjZU&N%t2zJXEWbkKpCEQVhan2crG!X z59cB=QA$Q)$&o~4Jb$5B0LuX{#hR7@dpvla2Jcp${CdCY$QPaB2OiXTATI~Nqn8<& zX6NG;nmz;eHv>b8s=np{-AcpmExI$XB>!kH9pAb8HM`d?l?n&zxtO!ggT>8`^nmAa z({5l>p_nz$GzUgqpFT7Hw`sWjW?uf;E*!4qs?OTVYER=nWNa43iyO?FAzf!k&e4CN zM!-G~H0B!s_x|D9*?lFt=69ElkK`{szzqhtvn{$R0C=lJ!@h?^rFDNDlUkkn%YSxb I*y!%cZ%w%3b^rhX literal 0 HcmV?d00001 diff --git a/lib/adafruit_imageload/tilegrid_inflator.mpy b/lib/adafruit_imageload/tilegrid_inflator.mpy new file mode 100644 index 0000000000000000000000000000000000000000..afbcfa014f5c72b8c9f9e79cb409048f1ce13657 GIT binary patch literal 978 zcmZWoO-~a+7~ZWw0V@t|T}aS$BTd25v?2r&Pf(hOfI=e`YSeLPhjyeNo875`7iOub zG4bZr|G+nXt=>TJgM*3QBr);iNt$qWwk=5$HoKGOoq68po%fm9foh9OUhMX@3)br> zj;7Tdp^&6e0;jSl9-t(J6Do;Al9^5+npOSE+`T?l-#*yt^0_8M9^5amaEm=oG$n=R zNLCVg=svC_iGxvrf%@^BlEMItDwJe1C%woZR% zufI!@AbfyTjTeWoRgeILDps-(hVyx^CCndh&5bTml1uGlc;rVoCW=~Ll2S#x90()` zP3ETjv1~eU)On!)$jkwv#<;0tb2Q1TTs5s7;nwVVO<;Ww>fQmT=_f4eya7@%C@H<|c`kls24h~! z%>~17RObt|cVxoRot2S-Ls6u?wkfeNBY zi6S+DDb&a#Y%exwqVpAY^It2DXB*6f?9_d!lvup#TKBb_Mr8$QnvD4s!>W8FD`!iX NXUHfMFV7dV{sUDbVZi_Z literal 0 HcmV?d00001 diff --git a/lib/adafruit_max1704x.mpy b/lib/adafruit_max1704x.mpy new file mode 100644 index 0000000000000000000000000000000000000000..3fcd37b56d5dc4ff2270e4ca22bf20a6f0cd5b85 GIT binary patch literal 3213 zcmbtWO>Em_82+5pbDM6Ron~ItRhmiKu9PlK-Sm$k+AK+%R%QL&y26I*I!@y)O@i(8 z=fa%+ZEPz{XrOHe#DN2x=ztRvLP%UVavGWtoH%gWWzvrDezub)tV4sPbu7Q{^SyrF z|3pZ~ac(=;-h-%CF(D?^yrK(B;%aAaFti%Tt<4V_-e9o5f5Lwu+7i2dxCws}$e>ZY zjW~w1MiggJe9oXf3NHx>d0CNUP_&e6E#x&@+~{Np05(jGpUsHs+O)3bC7ou=9@-qo z`bq~?c~Q}HSq)&rnh9G6mViHFY&$8NE{ zO7YnE>@_y9Cp$MjHWMC>2~)A@*vux|_Ou30th4P;%i|-%@dC^5DNGZ>$eHL!Bs?=d zHNz7$ZPV=wIap#+A_#3DrRzEE)sBuuMNj1y0#bIVqZq=DaItP8iYh_W!dP&gn`wH*UM*&bRNJ|Ok z*gg63T|K$mIr z{OX-T$jLTB7lPBJpiy@))fTAToCwj$szO51aOx7wGaIyxnC?O>Vt9geSs|ozYBmQ& zu*N%}v%M8*aq`ZR3^0s$chhO?VNr@0u}| z&IDRdG$VJ}8u7ScSVql_a{sFy$FA48TVK)WzKy?fk8b@Mtv1|<_e136T~Bilnw!}5 zR`eu1Tg?ok459bx@Irx^UMD6J;H0Lt4~YsC0jFoVq>@Q+#bM2zsHH@*$`SoaPi@!O;b)tAJ@)bTuyI!+}@se<(ptU4w&_zs+0CL7@pE3JG z+=YNodB03bql|r`+L#+84Fa#0!XL964*n!Zpn$lmwT_>YSFB zBw0>qO_8)LVuGAmRh(Ha|3qD2=uXPG&Y|7<%6Z}^9{axA9DHKNCwZW^FVM+%#~Hed zG(N!Sy*cA2Y!JzJ_XL7~=_ZZa7*jrXz@BA_3hk)2A%J>WuD;ska6nUHC7v&TS z&q>h({c003U&w1G!?^3X|H6_7mIIXWWd%!dbzhd>{6CiB>Wi~{t%j}`GnDZyW?Z>4 zB?O5Bf4tT>vxX08e2q6$Lo7E(SB)YVVD{@7k& zJ#W^0rKwh29m%3y?Nk^~QkamX6k7Y|8TA$nbanRicH1>qv;qOxe~MDZ&x2;nEa%`G zsFa+un#p$U!Hc?P@28|?RqHP~W-H)lMn?({zJGPFyQ|r@kYhZ1bDuJPGpG|V6|d}i cDf9aftN_UUJmWDJ0%iPZP|e5yHNGt6-_H%fIsgCw literal 0 HcmV?d00001 diff --git a/lib/adafruit_register/__init__.py b/lib/adafruit_register/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/adafruit_register/i2c_bcd_alarm.mpy b/lib/adafruit_register/i2c_bcd_alarm.mpy new file mode 100644 index 0000000000000000000000000000000000000000..fdee032e4872207457cd29f7b3b2431ad43d1737 GIT binary patch literal 1673 zcmYjR-%}G;6uwJ{Aqu$Jr7MH9tocD8Rw5Xv)(0V3L>*KTLNu+;x+IrmYkqZiBh3?c zqu8;w(|@7k^u2)qExvUG6<_;M>DczkzH~ZH!Rh$ea}z_G%K zZ0VgxZ0q2_se!=}L6GHJSku*fPL^FrU}cah=P|wsiu16Ch-dlx<16f z{vmlovubXriOyk!Z>Ncb<71O!k&ANZ^2Mpkm&PweW$FC%Sa5P&Vh_N-jXlUZSpMif zf!ouM4q4c~U`QIHm54$rBX4UIXcCxkg0bjl(uPscKlJ-ks*x_v4kYqff1{%Qu|{b_ z^_)!AbJ7qQ0H4Vt+&hCrydk2>-O8Q6U+*RmLJt5vWFdWZ^oxI9@6=H9D%)kVd>J6! z_qltgkpmqPpxPDzbwwhk&oX@i3CI!lG1Dg)p1(YfE5wCCpH>eR+32#>$=@$`>Odn$JK*vB;EJ1)9Lj3 zC)~%KPQQD~Ip~f!o#B)2sQcDQcf{N8O*w-iTH-tCp{RG!L>GEg?dYA?pg(0JjdRfM zN>a@k`3moV(Af5T(U5U2X|k-ElXV)2IdZ2d9=>)xykTyV#}%HJ-X|5_X3jugydp0o z8)1)b1Uu-PJ5o20g;xRQae0$G0nODqaa*cWtQFo0P>u40Jf#G4r$G^FDm4lPYow>) zt?)BSEAP=RKmhMb4tQH?C>ec4wxv$O_HS@Ds!yqBAcn1A*MEu)u)-hN1;GO$F9=vy zZ|}*%>IXJBdjqVkzO^3y?I+1j*2}w}zj+qq$V2*VBM-|vTft^>_nEoH)ozLoK{vEw z!jS2;;rv=L*MIna?cw@@&pyJe_?l|v+?SvIq#YhO+4%lcDtN4)d~@{N;IP}%KjAx; zx_B(y8}6Oq=obZ#A;CouQ3+yBS+EpHqvqVS(#~TCCOBTKT!ezqPc3550=& zCI}G1Vm;f^7%01>9>UqFKV{9sDX8$?odDw`qklnNs^y(nu#<2$%7Aj(zy$B=ZGc5W zb-de>@IQqtDAXy`6OkqU)C7y-OFZoOTgcA{Q|sSE6PzdydZ4>wN~Va#Y*9DFSuE=K t(<06#u$Z3{GdPzr(xNe+*Lys=sOn-aZ-|Ph7Yl{FX5gear`74De*v1CGkE|2 literal 0 HcmV?d00001 diff --git a/lib/adafruit_register/i2c_bcd_datetime.mpy b/lib/adafruit_register/i2c_bcd_datetime.mpy new file mode 100644 index 0000000000000000000000000000000000000000..cd0a27c6a6cebb9387a72bafa6c3a04ebbb2465e GIT binary patch literal 1097 zcmX|9Z*S6G6uuYaR~9F~($2cE&7mk7qEtJA@lP@p)VY`_Zo@2@xt8_|OAbtcRGrpatMR;-BbDsO0bD#645D6_Ld$}ta#I2~hTD4mSBQ~uW z4x_egC>p6~I?+`|nbDxxX8YA$cOv~@Id${errwYCqlllpp1qm9o|hy--cj2zER&EF zl6V4nnie5$X*TKyOL+MXa(Vt~lL1G4%SYGRO_~YKPO^5>Fl%!W3HxWm+^Z`bSn`hBD!guVdE zh20B7^y8o3g8=QWMH5{3(-k-Vk>8&|adbw4E{7$Qc;3x~Ru_?k;-w5;UBpt1kQ!x# zKrLW8zFE>xcpG^=oIr8TEo3fTSiblG3Fz*J9QLLsE3Imk+6SJ9-SS~E>blbgxGXB<{FY=?1` z=y9jBw8SkO?`|IBbo_sJ_44g>GOyfF6eXpg198e*jl*jnd{zL7tKvX16p({52F(o_KO^-4kc`)_>;k z`OnV=Lc|jzy8yulpup{W;`|XnTrYq)uy%aL&X}?7yW3;8>$}~t+k=3CAKzd9>4`H( zIo#=FCi2)H<^F$G<#h}WY$)yLmXfJ?x3(zDsd7$Uyo`iPhvFn_z}z&@=XM}o?3RVd z5N#MHOblKQkQnglR?7~coiVfpbMwU010Uu<%FLiFOdN_ny8%}L3>9)mWr6#b)(X;c qyW<>fs@l*UP!6x{l@G+Lk9f3kAmS^B$I3hG%vU;YAYJy*W~ literal 0 HcmV?d00001 diff --git a/lib/adafruit_register/i2c_bit.mpy b/lib/adafruit_register/i2c_bit.mpy new file mode 100644 index 0000000000000000000000000000000000000000..815733a8ad992771d921f1a4770d5281645c134d GIT binary patch literal 786 zcmYjO(M}UV6ur~66iBVxZg(lrNRtx8hP0tn0-7K~6(mM%sbB+SY`fET6uQms6l~(d zF7N=#R}ep7p}zR+ANT_re*lAt@zL4V8k4!ny?5?C_vD;Kw`(MF_;z9xJTnEgP}Uoi zVVzW{!HAxq$r3J77Oyv7&YOK>52GW|E%ki@MDJvLHaZY%-Jn_x<0vR1=DT$b znd#QuQXQ@++OSxY{1VYJ18E3ku4wT!#%mjD1aCGxIA5wsT1&_GdR1C`-8% zluNpJwaP2MkP;LjQ$jA|ewDGhaW|2uP*!ae<0Wl3(G?-_psU7WhrqKAf$U#x;(W)- z^$rOGr-P>V-Hnqz@WX(@H4qdSva&JP+7u|@&&1H$6jFQ`R|vy6>2gxTNi!u74#J;~ zPzd}UbK>^Ita+&DowuH>}k7=)Yas11= zvO~SaCL;@dW{cN9?GWOy04I^Ihq$1sIx&nMju`&e+@~t526l`hE>qoL2i{8*ko@NC z_&qq6f{yJSg_nllb1OKuuTw@atCAY`x1iD*(`-rNOhlj7V3^cYOB87h8?2x+Yx>BQ z&unc6V9u7@wlwhEmIg0VsLiWKE57pa;69SWh!z@=&AIWJ(Oi<>m6ukXYqBl*9cbC& z&%wG#2hBE;{DMQt-!|750-c82X}G_9-&}76;R8>nk#o5tfedGFAP|*Km(BkFy-9*1 W^9ht5_93^q1_6kqfOK{|aP|jig6qNn literal 0 HcmV?d00001 diff --git a/lib/adafruit_register/i2c_bits.mpy b/lib/adafruit_register/i2c_bits.mpy new file mode 100644 index 0000000000000000000000000000000000000000..f7398c207ac74a3fa7546e7ea2302d4d7f770d86 GIT binary patch literal 1041 zcmZuv(QXq*6rJ%lbx_ z87EB@DYFGc5U3x4_<#*@@&T>s2b9M?v}&t9R02%H2QX_ll!rRni`6NJt?^Mo~AJ1c1swqCdF>QGpP z2WOF^w?8WsOJvomkdkYO!da-Du2^nGu&S@Kn&{Gn<;+eJHal5#NK)bA*|)&uC`kQU zdV?>Xh2Yvk0iwwKyYgD1F>aijZhXWNd{A1^B*1h1CerLX^FTG1%_YR^#|l-TETyb2I6xC>w)eQSpktDUgB{x639X%F5!lyD{9Gys~Q@L|vV_;i}1rF=( z^2{LkaVM5qb1gAbCU1ro=dNDkEg5Xc zK&aHCLvNpN>e3@$i5A0LMlJ~qO3YmyKH9}Ihrv(Ht+q(q`}|33`srrVSB9VYO5%B| z6O|6}=69moi@#dU3J{{a>6E|h7f1Mx+`4`nWk)qWo6fv1rZ|~8pD7(bo(4kczCV80 zRJk=EL7wvLuwT36vxl7VlP}eEbCICl}18a8v}|fMokpcYSqLGEo~*ijN4_Pt7UhyJ5=%0 zZlfO>`xK220L3@Z_wW%+{Nh(@62*Il%4xHb9o8I?x;<*Wp{N( zY}(cxM(v_r(ul+CuEq*h?^VT}n7{upm%ZL-e#(Bj2snDRaIL|M<$ zjrL4LM*rTri!VGXEw9i$U85_u&Id1{%mYogH7?!iu^p}=C@(ZeNu)W-a%Kb>)gQ-T zD*^N0SI)Tg#|U25N(e{SM;4WkjB2G2mNyL5?wyVaIKB4lR5T$df-F=uBsh0>7_*#P z#bR4$JKgPqW_F4v9Eo(JmI{@^X}8m}^*4rdQD?j)@oOh5usG6yKgkS>7? ziRuzszlP*EA#KVCDTVx}<3Fn!2wvs32#GOwK7Rv_`_oVpq2h_N64umR&C%b}eiCYB z^ix6o>F9R1)uQ&GpG58^F9tZ6JJ~Z)n@yWKPC8f?X_I+8~g*QHuK6KLiK9nrFc$~ zyN0D|Z%E5FJH9|s>d=m9_x5!9wx5hB$g37Y8|BbQ<5_e2b(~+mQR+3e#B9n{ltmDy zByrRvmoCHflJbACf90}66o7-2mjpqy9!CQtEWe6mKbprJNrdddKB6Bh!=q o0QfvSZ8-r)??AjXb=Ytx|8eUZL@Sv%3cGDSWljMam>Pql-**oq761SM literal 0 HcmV?d00001 diff --git a/lib/adafruit_register/i2c_struct_array.mpy b/lib/adafruit_register/i2c_struct_array.mpy new file mode 100644 index 0000000000000000000000000000000000000000..62241c631892ab3f9695bcea6d4517a4504ec325 GIT binary patch literal 1014 zcmZvb?M~ZP7{{OE@RpJW$Fa^Bqy;r4qOc{37qS;k8YPsnsM3~^6{Q0mjD149f^FF+ zow8}tF)AOXwKq}q0-S^^7`uagsI)J;hiVtlV<)K6G)uOu^ZcLJ-*ak{($eyC^`inz z*L72GdtHkWkDgdQqh86<4B|7dYcQgFp580Ey`xQ@EIioFFXa!+-^(DU%Eix%!1M-5%?RbR)N-8H}R0x z&-Mgw)e#&vH6-65TTa(D_u{VZM@>~EjGCGxrkMZ-BO zUC*g>|9W7xQ9<913i@t5zM}96I&dfP;fqC{yhvTl(j$5V8TbH;0VOajXn-N3Au+rY z%E)oI-KL%$+H+GtV3j%oz;iw9{pT+GZfjmMu0= z_gGMUF0~p5he}q(UE9@-r=;yUXHhMKpqdyb4j54(m*HEh<#mxbBNAUJ)2b5dqu`N# z7!3A4O|-(Scplz>KQC2yJ*=WA`e<-)0Ixnvra_(MyATZ{jvm~d!Apr3kGT9l5F2Y~ z?-PX6Bqm8j94S~0N7N1@Y62KE1*7yBMMSZl7lNj!F`Sp<`$a5MY@I-t&qLi$kMCY= z`sLU2)L#e-T2DXTzWY5W(CUZTWJRjo5{O=kf26F4@6D*gsOHK