June 17, 2025
Description
official github project and files here:
https://github.com/oramasolutions-git/oramapico
update 25/05/26:
i have upload the step files of the case after the demand on this.
since the lisence is changed into remixable this will help you better if you need modifications..
update 04/03/2026:
thanks to @WesleySwipes and his amazing work on this project i have added 4 more games in the folder.
new games added:
8 games ready to play now! more to come soon!
update 26/06/2025:
added a new game “TETRIS”. its all about a classic tetris clone game….
4 games ready to play now! more to come soon!
update 20/06/2025:
added a new game i call it “race”. its all about a car racing game looking from top….
3 games ready to play now! more to come soon!
update 19/06/2025:
added a new game classic snake game without walls. just teleporting!
2 games ready to play now! more to come soon!
Its all about an 8bit gaming handheld console that is running micropython on a raspberry pico.
It use an spi oled 128x64 pixels and 4 buttons.
you can add your own games with the help of chatgpt. have a look on a promp that may help you:
i want to build a game in micropython, raspberry pico , oled 128x64, vertical holding. snake game. without walls. when you reach the end of the screen the snake must appear from the opposite dirction.
buttons are
btn_up = Pin(10, Pin.IN, Pin.PULL_DOWN)
btn_down = Pin(11, Pin.IN, Pin.PULL_DOWN)
btn_right = Pin(12, Pin.IN, Pin.PULL_DOWN)
btn_left = Pin(13, Pin.IN, Pin.PULL_DOWN)
oled is:
i2c = I2C(0, scl=Pin(1), sda=Pin(0)) .
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
For now there is only space invaders cause all my attention went on the final design and operation.
I will upload even more games in the future so dont forget to follow for next releases!
The structure of the program allows to store multiple games as seperate .py files so not to deal with the main code.
There is a lithium battery and a battery charger inside letting you play on the go.
The charger use as input the vbus pin. Output of the charger is directed to vsys.
A slide main switch to cut off the power of the board is attached on the side.
When powering up a main screen with a list of the games installed is displayed.
You can navigate to the desire game through the main menu and play...
There is increase in the difficulty on every game while playing.
There is a hole to add it in your keys also.
The case is fully 3d printed .
It is specially design not to use any supports or any screws while assembly.
Everything snaps together for the final result.
Some basic soldering skills and computer management skills required for this project.
electronic parts you will need:
1. raspberry pico any of the familly can do the job. i use the pico 2.
2. 4 x Tact Switch 6x6mm 7mm
3. Lithium Battery Charger and Protection Module 1A USB-C - TP4056
4. Slide Switch Mini
5. lithium battery 3.7 v 250mah. size (20mmx30mmx6mm)
6. oled i2c 128x64 display 0,96" screen
Quick tutorial (find the full on the download section.
print the case
assembly the controller screen
solder the parts
upload the programs and test
mount all the parts inside the case
finally!
you are ready to play !
There are variables that you can change if needed.
The difficulty increase while playing
There is a game over screen displaying the final score you manage.
Buttons:
right - left : navigate to the games
Up - down : Start the game
Buttons:
left --> restart game
Up --> return to main menu
1. Tetris
Left --> move left
Right--> move right
Up --> Rotate
Down --> speed up movement
SEGMENT_SIZE = 7 (size of the segments of the blocks)
INITIAL_DELAY = 400 (initial delay between movement)
DELAY_STEP = 20 ( step of the speed increase on every speed_delay_interval)
MIN_DELAY = 40 ( the maximum speed that the blocks can reach)
speed_delay_interval= 50000 ( every 50 seconds the speed of movement will increase)
2. Race
Left --> move left
Right--> move right
base_speed = 2 ( what is the starting speed of the cars)
spawn_interval = 20 ( the interval when the new car coming on the top)
speed_delay_interval=50000 ( increase the difficulty on every 50 seconds)
max_maxspeed = 10 (this is the max speed that cars can reach can go up to 12)
min_spawn_interval = 5 (max speed of the interval when the new car coming on the top)
3.Space invanders
Left --> move left
Right--> move right
enemy_size = 4
enemy_columns = 8
enemy_rows = 5
movement_y = 3 # vertical movement step in pixels
movedown_interval_time = 1500 ( on every 1,5 second the enemies move down)
next_wave_time = 50 ( reduce movedown_interval_time on every new wave)
4.Snake
Left --> move left
Right--> move right
Up --> move up
Down --> move down
GRID_SIZE = 5 (the size of the snake segments)
INITIAL_DELAY = 0.15 # starting “tick” length (seconds)
DELAY_STEP = 0.005 # how much to shave off after every apple(seconds)
MIN_DELAY = 0.04 # don’t let it get faster than this(seconds)
You will find detailed tutorial for this project on my patreon page and other complicated projects also.
Note The subscription is free and everything i upload there is free including this project.
please consider to follow the patreon orama3dvibes page its fresh now more projects to come…
follow, boost, like, share as you wish!
License:
BY-NC-SA