u/lunarc3

[update] MMBasic for Cardputer ADV 1.0.2

[update] MMBasic for Cardputer ADV 1.0.2

This is a BASIC interpreter port from MMBASIC.

MMBasic was created and refined over many years by Geoff Graham. It is a full-featured, powerful BASIC interpreter used across a wide range of platforms, including the Maximite and Micromite families. Official website and original documentation: http://mmbasic.com

1.0.2 Release Notes

Turtle Graphics The turtle implementation should now be complete (please let me know if you encounter any bugs).

New Features (mostly aligned with the picomite implementation)

  • ARC
  • BEGIN FILL / END FILL
  • SET X
  • SET Y

Bug Fixes in turtle

  • Cursor‑related issues
  • TDRAWLINE
  • TARC
  • Scanline logic, as well as TFORWARD and TGOTO – re‑synced with the picomite codebase
  • SET‑related commands

Additional Changes

New Commands

  • FIX
  • CHOICE
  • BOUND

Bug Fixes

  • Fixed a potential bug in REM line handling.
  • Fixed an issue related to TMATCH (also addressed side effects affecting PEN, CURSOR, FILL, and SET).

Get it on GitHub

u/lunarc3 — 19 hours ago

[update] MMBasic for cardputer 1.0.1

It is now open-sourced. Thanks to Geoff for the permission — it was also my misunderstanding earlier.

This is a BASIC language interpreter port from the MMBasic

1.0.1 update

  • SPRITE added and tested
  • GPIO implemented using Arduino standard library, but not yet tested Regarding pins: since the default I2C pins (GPIO 8/9) on the Cardputer ADV are occupied by the keyboard and IMU, you'll need to use G1/G2 on the Grove connector (on the left side of the device) for external peripherals. I'm not sure if this is the right approach, but it's implemented for now.
  • Added EVAL$() / BASE$() / VAR SAVE / VAR RESTORE
  • Fixed a bug caused by free(copy)
  • Added ON GOTO/GOSUB (I thought I had already added it)
  • Added some missing operators (e.g. << >> \ etc.)
  • Fixed several minor bugs from the previous version caused by late-night coding

Planned for next version:

  • FILL
  • FIX / BOUND / CHOICE
  • Framebuffer
  • turltle (not promise)
  • 3D (not promise)

get it on https://github.com/lunarc3/MMBasic_cardputer/releases

u/lunarc3 — 6 days ago

[Release] MMBasic Port for CardputerADV

MMBasic Port for CardputerADV

Micromite BASIC is the best BASIC interpreter I have ever used on a development board.

I had a lot of fun playing with it on the Raspberry Pi Pico, so I spent some time porting MMBasic to the CardputerADV — now you can enjoy BASIC directly on your Cardputer!

About MMBasic

MMBasic was created and refined over many years by Geoff Graham. It is a full-featured, powerful BASIC interpreter used across a wide range of platforms, including the Maximite and Micromite families.
Official website and original documentation: http://mmbasic.com

About This Port

This project is a port of MMBasic to the CardputerADV platform. Since it is a port, I have not changed the name of the project — it is called MMBasic port for CardputerADV.

Copyright Notice

This ported firmware retains the original copyright notice of MMBasic. All copyrights for MMBasic belong to the original author, Geoff Graham.
This project provides only the compiled .bin firmware; no source code is included.

What's Implemented So Far

  • Keyboard input
  • Screen display
  • SD card read/write
  • The most important part: the core interpreter

Version 1.0.0 Notes

SUB / FUNCTION

My implementation approach differs from PicoMite — I used a workaround, but it should be compatible with BASIC code written for PicoMite.
(If you encounter any issues related to this while running a BASIC program, please contact me and I'll adjust my code.)

File Management

Added a RENAME command, which is not available in PicoMite.

FORMAT$

The implementation of FORMAT$ uses a different approach from PicoMite, but the results of running a program should be identical. If you find any bugs, please let me know.

Planned Updates

  • SPRITE / 3D
    Not yet implemented. Porting is in progress slowly.

  • TURTLE
    Basic functionality is available, but I may need to significantly rework my code.
    My implementation approach differs from PicoMite — I used a clever workaround. Ideally I would adopt the PicoMite approach, but that would require a few more days of work.

  • XMODEM
    Would anyone need this? (Given that debugging the GPIO part may take a very long time…)

  • Bluetooth Keyboard Support
    Might be added in the next version? However, considering the Cardputer's small built-in screen, I'm still not sure if an external Bluetooth keyboard is really necessary…

  • GPIO
    I need to learn more about this area, so it will take quite a while.
    Neither the GPIO code nor the hardware has been tested yet, so the GPIO code is currently provided with no guarantees.

Acknowledgements

A huge thank you to Geoff Graham for creating MMBasic and allowing me to port it to this platform.


License for the Firmware Binary

This firmware is a port of MMBasic for CardputerADV.
MMBasic is copyright (c) Geoff Graham. All rights reserved.

  • This binary is provided free of charge for personal, non-commercial use.
  • You may not reverse engineer, decompile, or disassemble the firmware.
  • You may not redistribute modified versions of this binary.
  • The original copyright notice must be retained and not altered.

For any other use, please contact Geoff Graham.

Get it here: https://github.com/lunarc3/MMBasic_cardputer/

u/lunarc3 — 26 days ago

GPSMAP(offline map) 1.0.4 for CardputerADV

Changelog

  • A touch of aesthetic refinement
  • Fixed a silly bug: No more power-on sequence issues between Lora HAT and SD card.
    • In version 1.0.3, you had to power on the board first, then insert the HAT—otherwise the SD card would throw an error (my bad).
  • No one told me Arduino supports simultaneous charging and flashing!
    • Goodbye PlatformIO — I'm never going back.

Get it here

https://github.com/lunarc3/CardputerGPSMap/

current firmware 1.0.4 with converter Maptool 1.2.1 tested

u/lunarc3 — 30 days ago

[conventer update] OfflineGPS map for ADV, or DOOMSDAY map. now 1/3 RAM compred last edition

memory usage now about 1/3 of before, should be more RAM friendly.

https://github.com/lunarc3/CardputerGPSMap/releases/

USAGE

  • Go to https://download.geofabrik.de/ to download the map.
  • Go to GitHub to download the converter (recommended to use osm2tile.py)
  • Put the files from steps 1 and 2 in the same folder.
  • Open a terminal and navigate to that folder.
  • Run: python osm2tile.py your_downloaded_map_filename.osm.pbf
  • Wait for the tile files to be converted (the time depends on the map size). If you feel it's stuck, press an arrow key to update (Please read my readme carefully! This is a PowerShell issue, not mine.)
  • Put the converted /gpsmap folder and its contents onto SD card.
  • Flash the firmware to the Cardputer.

If those who tagged me speculation in my original release post still have objections, I can accept a video chat to prove the usability of this firmware and converter, but shouldn't the person who labeled my post speculation apologize to me?!!!

For 7 consecutive days, getting up at 7 a.m. and going to bed at 2 a.m., trying to make a contribution to this community, tyring all ways to make the program easier to use, but in the end, who label me speculation without any notice???

u/lunarc3 — 1 month ago
▲ 110 r/CardPuter

OfflineGPS map for ADV, or DOOMSDAY map

This is just a toy! Please prioritize professional equipment in emergencies!

Author's Ramblings

It started out based on the gpsinfo code, but during actual use I found a few issues with the original and a whole lot of issues of my own: for instance, displaying satellite information over a long period would cause a memory leak. Also, the vector map showing certain bodies of water would turn into a mess of unreadable lines and make the Cardputer extremely laggy (I even spent two days thinking about how to optimize it).

Without PSRAM, programming was a huge struggle. I ran into countless problems.

In the end, I decided to scrap everything and start over, no longer using the GPS info code. Rewrote it from scratch.

Optimized the Cardputer rendering, considered RGB565 but felt the current approach is more storage-friendly, almost rewrote the converter to handle large maps... Some updates are detailed on GitHub, some aren't—I've been sleeping way too late lately.

Because there's no PSRAM, the map display has been pushed to its absolute limit. So if anyone wants modern GPS-style route planning and navigation, I can only hope M5Stack will eventually release a PSRAM upgrade kit for the ADV (if we shout loud enough, maybe it'll happen?).

But I'm also grateful for the lack of PSRAM—it made me notice many things I would never have paid attention to in my usual programming.

Finally, when will Cardputer get a PSRAM upgrade kit? I want PSRAM! Like, with PSRAM, even a DOS emulator or something would probably be playable.

Thank you for reading all my nonsense :) There's even more of it in the GitHub commit messages :)

A Brief Introduction

Doomsday Offline Map! Doesn't that just make it simple and clear what I mean?

PC side: Just download the map file from OpenStreetMap, run it through my magical converter, and throw all the generated files onto an SD card!

Cardputer ADV side: Use whatever flasher you like or M5Launcher, and flash the bin file!

Power it on! (Remember to go outdoors)

The official LoRa hat will give you a much better experience, but you can use it without—it just won't be as nice.

Cardputer Operation Guide

In map mode,

  • ↑↓←→ to pan around
  • Esc (` key) to return to your current GPS location
  • Z to zoom out, X to zoom in
  • Enter to take a screenshot—if someone wants to post it to Instagram or whatever
  • Tab to switch screens: GPS info screen and map screen

Intuitive, right?

On startup, it first checks for GPS signal; once satellites are found (the Cardputer's LoRa hat needs about 30 seconds for a cold start), it will automatically switch to map mode.

Simplest Usage of the Map Converter

PC side: 0. Download a Python interpreter, if you don't already have one.

  1. Download the Python-format converter (hosted on GitHub, released separately from the bin file; get the latest one).
  2. Go to OpenStreetMap and download the map you want.
  3. Run the converter on your PC, and it will do the conversion for you. You need to open the terminal and run pip install protobuf grpcio-tools numpy Pillow once first. For just playing around—even a movie-style doomsday scenario—z12 is basically sufficient. If you want more detail and don't mind larger storage and longer conversion times, feel free to experiment with z13, z14, z15. Some people might want to use the small map converter (e.g., if your OSM file is only about 100MB); see the notes below. This is optional, the default converter works just as well.
  4. Put the converted files onto an SD card.

File Storage Notes

Sorry for hogging your SD card space :) If it makes you angry, go ahead and be angry—after all, we don't have PSRAM :'(

  • Screenshots are saved by default in the \gpsmap\screenshot directory.
  • \gpsmap\gpsmap.ini file is automatically created, saving the last GPS information, so that on your next cold boot you'll roughly see the map centered on your last known location.
  • Map files are saved by default in the \gpsmap folder, for example \gpsmap\12.

If You Want to Know a Bit More

If you have your own ideas about the maps, here's an explanation of the format converter.

First, you need to understand zoom, which I call z (short for zoom).

Here's an example to help you understand the z numbers:

Zoom Level Per Tile Stockholm 上海 New York
z6 ~625km Hela Sverige + Östersjön 中国东部海岸线可见 U.S. East Coast, Maine to Florida
z7 ~312km Södra Sverige, de tre stora städerna Stockholm-Göteborg-Malmö 长三角城市群轮廓,长江入海口 New York–Boston–Washington corridor
z8 ~156km Mälaren, Östersjöns öar, E4:an mot Uppsala 上海全市+苏州+杭州湾 New York City's five boroughs + New Jersey + Long Island
z9 ~78km Stockholms innerstad + förorter, skärgården 外环高速、黄浦江蜿蜒、浦东浦西 Hudson River, Manhattan's elongated shape, Central Park
z10 ~39km Kungsholmen, Gamla Stan, Djurgården, E20 内环/南北高架、陆家嘴、世博园 Central Park, Lincoln Tunnel, Brooklyn Bridge
z11 ~19km Kungsträdgården, Stadshuset, Vasamuseet, Röda linjen 人民广场、外滩、东方明珠、世纪公园 Times Square, Central Park, Empire State Building, East River
z12 ~9.7km Gamla Stans gränder, Nobelmuseet, Slottet, tunnelbanestation 南京路、豫园、陆家嘴三件套 Statue of Liberty, Wall Street, Fifth Avenue, United Nations
z13 ~4.8km Enskilda gator synliga, Stortorget i Gamla Stan 外滩每栋建筑轮廓、陆家嘴绿地 Manhattan grid streets, each avenue clearly visible
z14 ~2.4km Tunnelbanenedgångar, enstaka byggnadsgrupper 豫园九曲桥、外白渡桥 Statue of Liberty base, Empire State Building shadows

Everyday scenes roughly correspond to:

Zoom Level Stockholm 上海 New York
z6 "Jag är i Sverige" "我在华东" "I'm in the Northeastern U.S."
z8 "Åk in till stan via E4" "走沪杭高速进城" "Cross the bridge from New Jersey into Manhattan"
z10 "I närheten av Kungsholmen" "快到内环了" "Driving from Brooklyn toward Manhattan"
z12 "Framme i Gamla Stan, letar parkering" "南京路附近到了" "Near Wall Street, we've arrived"

Now that you have a basic understanding of what I define as z, let's move on to the next step: Non-interactive Mode.

Non-interactive Mode

I think a couple of examples will make it clear (for non-interactive mode users):

# Specify zoom via command line (skips interactive prompt)
python osm2tiles.py input.osm.pbf -z 10-13 -b S,W,N,E

# Don't specify zoom, run interactively (press Enter to use the default 10-12)
python osm2tiles.py input.osm.pbf -b S,W,N,E

Reading the map into memory for indexing does consume some memory, but don't worry—I spent a considerable amount of time solving memory usage issues during conversion. However, if your map is ridiculously large (probably not bigger than what I tested with? How many people tested with gigabyte-sized maps?), your computer should have enough RAM. Reference: a ~50MB map uses at most 2GB of memory during conversion, averaging around 1.7GB.

If you're using PowerShell, the screen might not update. Blame Microsoft, not me. Workaround:

  • Either press any key casually and the text will refresh,
  • Or run $PSDefaultParameterValues['Out-Host:Pager'] = '' first, then python osm2tiles.py. Remember this is temporary, so don't close the window after running the first command.

Small Map Special Edition Converter

  • It's extremely lightweight and fast, but the experience for "average users" might not be as friendly—it requires understanding more concepts, and the generated maps may need repeated tweaking to get the desired result, which is why I'm listing it separately.
  • Very few performance optimizations are done, which also means it can even run on some older dual-core machines.
  • You need to install dependencies first in the terminal: pip install osmium Pillow
  • It's very simple to use; you can even throw multiple .osm.pbf files at it.
  • If you want to use a different font (ttc or ttf format), just place it in the converter directory and the program will automatically detect it.
  • If your map file is under 200MB and you have around 16GB of RAM, you don't need to worry too much about memory usage.
  • The maps are slightly blurrier, saving storage to the extreme, but you can adjust the q parameter; for example, the default compression is 75, set it to 100 if you want more clarity.

Non-interactive mode examples:

python osm2tiles.py input.osm.pbf -z 6-14 -l en -b S,W,N,E -q 75
python osm2tiles.py -z 6-14

Finally

get it here

https://github.com/lunarc3/CardputerGPSMap

[EDIT] all done, just grab 1.0.3.bin and 1.1 map tool on GitHub, have fun 😄

Spent about a whole week on this, going to bed at 2 AM every day lately. Cardputer is so much fun, really addictive.

My Ko-fi (if you feel like supporting me): https://ko-fi.com/lunarc3

Regarding merging multiple maps (for the small map converter), I haven't thought of a more elegant solution yet: currently, it's the ugly approach of locally merging files first, then generating the map all at once. Each map update requires a full rebuild. Maybe? A more elegant solution will come in a future update.

Possible upcoming fix: I haven't fully tested coastlines; they might display abnormally due to OSM data (especially around z6 level).

u/lunarc3 — 1 month ago

[Release] Offline map for cardputer ADV

Reluctant to reveal my address — sorry for using blank GPS info and a blank map as the thumbnail pic.

This is just a toy! Please prioritize professional equipment in emergencies!

Author's Ramblings

It started out based on the gpsinfo code, but during actual use I found a few issues with the original and a whole lot of issues of my own: for instance, displaying satellite information over a long period would cause a memory leak. Also, the vector map showing certain bodies of water would turn into a mess of unreadable lines and make the Cardputer extremely laggy (I even spent two days thinking about how to optimize it).

Without PSRAM, programming was a huge struggle. I ran into countless problems.

In the end, I decided to scrap everything and start over, no longer using the GPS info code. Rewrote it from scratch.

Optimized the Cardputer rendering, considered RGB565 but felt the current approach is more storage-friendly, almost rewrote the converter to handle large maps... Some updates are detailed on GitHub, some aren't—I've been sleeping way too late lately.

Because there's no PSRAM, the map display has been pushed to its absolute limit. So if anyone wants modern GPS-style route planning and navigation, I can only hope M5Stack will eventually release a PSRAM upgrade kit for the ADV (if we shout loud enough, maybe it'll happen?).

But I'm also grateful for the lack of PSRAM—it made me notice many things I would never have paid attention to in my usual programming.

Finally, when will Cardputer get a PSRAM upgrade kit? I want PSRAM! Like, with PSRAM, even a DOS emulator or something would probably be playable.

Thank you for reading all my nonsense :) There's even more of it in the GitHub commit messages :)

A Brief Introduction

Doomsday Offline Map! Doesn't that just make it simple and clear what I mean?

PC side: Just download the map file from OpenStreetMap, run it through my magical converter, and throw all the generated files onto an SD card!

Cardputer ADV side: Use whatever flasher you like or M5Launcher, and flash the bin file!

Power it on! (Remember to go outdoors)

The official LoRa hat will give you a much better experience, but you can use it without—it just won't be as nice.

Cardputer Operation Guide

In map mode, ↑↓←→ to pan around Esc (` key) to return to your current GPS location Z to zoom out, X to zoom in

Enter to take a screenshot—if someone wants to post it to Instagram or whatever Tab to switch screens: GPS info screen and map screen

Intuitive, right?

On startup, it first checks for GPS signal; once satellites are found (the Cardputer's LoRa hat needs about 30 seconds for a cold start), it will automatically switch to map mode.

Simplest Usage of the Map Converter

PC side: 0. Download a Python interpreter, if you don't already have one.

  1. Download the Python-format converter (hosted on GitHub, released separately from the bin file; get the latest one).
  2. Go to OpenStreetMap and download the map you want.
  3. Run the converter on your PC, and it will do the conversion for you. You need to open the terminal and run pip install protobuf grpcio-tools numpy Pillow once first. For just playing around—even a movie-style doomsday scenario—z12 is basically sufficient. If you want more detail and don't mind larger storage and longer conversion times, feel free to experiment with z13, z14, z15. Some people might want to use the small map converter (e.g., if your OSM file is only about 100MB); see the notes below. This is optional, the default converter works just as well.
  4. Put the converted files onto an SD card.

File Storage Notes

Sorry for hogging your SD card space :) If it makes you angry, go ahead and be angry—after all, we don't have PSRAM :'(

  • Screenshots are saved by default in the \gpsmap\screenshot directory.
  • A \gpsmap\gpsmap.ini file is automatically created, saving the last GPS information, so that on your next cold boot you'll roughly see the map centered on your last known location.
  • Map files are saved by default in the \gpsmap folder, for example \gpsmap\12.

If You Want to Know a Bit More

If you have your own ideas about the maps, here's an explanation of the format converter.

First, you need to understand zoom, which I call z (short for zoom).

Here's an example to help you understand the z numbers:

Zoom Level Per Tile Stockholm 上海 New York
z6 ~625km Hela Sverige + Östersjön 中国东部海岸线可见 U.S. East Coast, Maine to Florida
z7 ~312km Södra Sverige, de tre stora städerna Stockholm-Göteborg-Malmö 长三角城市群轮廓,长江入海口 New York–Boston–Washington corridor
z8 ~156km Mälaren, Östersjöns öar, E4:an mot Uppsala 上海全市+苏州+杭州湾 New York City's five boroughs + New Jersey + Long Island
z9 ~78km Stockholms innerstad + förorter, skärgården 外环高速、黄浦江蜿蜒、浦东浦西 Hudson River, Manhattan's elongated shape, Central Park
z10 ~39km Kungsholmen, Gamla Stan, Djurgården, E20 内环/南北高架、陆家嘴、世博园 Central Park, Lincoln Tunnel, Brooklyn Bridge
z11 ~19km Kungsträdgården, Stadshuset, Vasamuseet, Röda linjen 人民广场、外滩、东方明珠、世纪公园 Times Square, Central Park, Empire State Building, East River
z12 ~9.7km Gamla Stans gränder, Nobelmuseet, Slottet, tunnelbanestation 南京路、豫园、陆家嘴三件套 Statue of Liberty, Wall Street, Fifth Avenue, United Nations
z13 ~4.8km Enskilda gator synliga, Stortorget i Gamla Stan 外滩每栋建筑轮廓、陆家嘴绿地 Manhattan grid streets, each avenue clearly visible
z14 ~2.4km Tunnelbanenedgångar, enstaka byggnadsgrupper 豫园九曲桥、外白渡桥 Statue of Liberty base, Empire State Building shadows

Everyday scenes roughly correspond to:

Zoom Level Stockholm 上海 New York
z6 "Jag är i Sverige" "我在华东" "I'm in the Northeastern U.S."
z8 "Åk in till stan via E4" "走沪杭高速进城" "Cross the bridge from New Jersey into Manhattan"
z10 "I närheten av Kungsholmen" "快到内环了" "Driving from Brooklyn toward Manhattan"
z12 "Framme i Gamla Stan, letar parkering" "南京路附近到了" "Near Wall Street, we've arrived"

Now that you have a basic understanding of what I define as z, let's move on to the next step: Non-interactive Mode.

Non-interactive Mode

I think a couple of examples will make it clear (for non-interactive mode users):

# Specify zoom via command line (skips interactive prompt)
python osm2tiles.py input.osm.pbf -z 10-13 -b S,W,N,E

# Don't specify zoom, run interactively (press Enter to use the default 10-12)
python osm2tiles.py input.osm.pbf -b S,W,N,E

Reading the map into memory for indexing does consume some memory, but don't worry—I spent a considerable amount of time solving memory usage issues during conversion. However, if your map is ridiculously large (probably not bigger than what I tested with? How many people tested with gigabyte-sized maps?), your computer should have enough RAM. Reference: a ~50MB map uses at most 2GB of memory during conversion, averaging around 1.7GB.

If you're using PowerShell, the screen might not update. Blame Microsoft, not me. Workaround:

  • Either press any key casually and the text will refresh,
  • Or run $PSDefaultParameterValues['Out-Host:Pager'] = '' first, then python osm2tiles.py. Remember this is temporary, so don't close the window after running the first command.

Small Map Special Edition Converter

  • It's extremely lightweight and fast, but the experience for "average users" might not be as friendly—it requires understanding more concepts, and the generated maps may need repeated tweaking to get the desired result, which is why I'm listing it separately.
  • Very few performance optimizations are done, which also means it can even run on some older dual-core machines.
  • You need to install dependencies first in the terminal: pip install osmium Pillow
  • It's very simple to use; you can even throw multiple .osm.pbf files at it.
  • If you want to use a different font (ttc or ttf format), just place it in the converter directory and the program will automatically detect it.
  • If your map file is under 200MB and you have around 16GB of RAM, you don't need to worry too much about memory usage.
  • The maps are slightly blurrier, saving storage to the extreme, but you can adjust the q parameter; for example, the default compression is 75, set it to 100 if you want more clarity.

Non-interactive mode examples:

python osm2tiles.py input.osm.pbf -z 6-14 -l en -b S,W,N,E -q 75
python osm2tiles.py -z 6-14

Finally

Get it here

https://github.com/lunarc3/CardputerGPSMap

The big map converter (the one that should be the default for average user) should be released this week — way more bugs than I thought.

By now the small map converter works.

Spent about a whole week on this, going to bed at 2 AM every day lately. Cardputer is so much fun, really addictive.

My Ko-fi (if you feel like supporting me): https://ko-fi.com/lunarc3

Regarding merging multiple maps (for the small map converter), I haven't thought of a more elegant solution yet: currently, it's the ugly approach of locally merging files first, then generating the map all at once. Each map update requires a full rebuild. Maybe? A more elegant solution will come in a future update.

Possible upcoming fix: I haven't fully tested coastlines; they might display abnormally due to OSM data (especially around z6 level).

u/lunarc3 — 1 month ago

[WIP]Doomsday Offline Map for ADV

Offline Map for the Cardputer ADV.

I previously found alcor55's Cardputer-GPS-Info and DevinWatson's Cardputer-Adv-GPS-Info really fun to play with, but the maps couldn't be zoomed in further—which would be pretty useful in a doomsday scenario, right?

So, I decided to build upon their code and introduce an SD card-based map tile system. This allows you to download and update maps via your PC (choosing exactly the areas you want), while keeping the device completely offline—once you've converted all the data, that is.

Current progress:

Still a WIP.

The Cardputer-side code runs, and the PC-side converter works too.

It can currently display major roads, rivers, and administrative boundaries down to the city level.

However, there are still some bugs (like rendering issues with water bodies in certain circumstances), and I haven't quite figured out the final map rendering approach yet—I need to find a method optimized for the Cardputer ADV's screen enough.

The security guard in my neighborhood has been giving me some seriously weird looks (after I went out to field-test it a few times), so I'm off to bed now.

Should be able to wrap it up this week if everything goes right 😉

reddit.com
u/lunarc3 — 1 month ago

Ballistic Calc for CardputerADV

Ballistic Calc for CardputerADV

https://preview.redd.it/kexszycsi84h1.jpg?width=4096&format=pjpg&auto=webp&s=14026e1c34cd12e47a57be32a88863a4a254feb7

A standalone ballistic trajectory calculator running on Cardputer ADV. Computes real-time bullet drop, wind drift, velocity, and energy at range using G1/G7 drag models.

Features

  • 19 Built-in Cartridges — organized by caliber (up to 12 caliber groups), browse and select with a two-level caliber → load interface.
  • Full Trajectory Solver — iterative numerical integration computing drop, windage, velocity, energy, and time-of-flight at each range step.
  • Range Card View — tabular display of trajectory data with selectable step intervals (10 / 25 / 50 / 100 m), including MOA and MIL correction values.
  • Trajectory Graph — visual drop/windage curve with scrolling offset, auto-scaled axes, and grid overlay.
  • Persistent Cartridge Profiles — pre-loaded load data stored in flash (PROGMEM) for zero-NVAM startup.

Notes

In parameter edit menu, you should use fn+. to input demical .

Arrow keys always used as arrow keys to avoid logic confusion.

https://preview.redd.it/ah8zfdiui84h1.jpg?width=4096&format=pjpg&auto=webp&s=ad1ac3fe5faf99139db182f2a5d59b0284409415

Get it here

https://github.com/lunarc3/BallisticCalc

reddit.com
u/lunarc3 — 1 month ago