yet another version of my handheld BASIC system in a GameGear case
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
Hi, Here is my current BASIC Keywords set:
AND,OR, NOT,MOD
PRINT -----------------------> ADDED <?> shortcut
CLS
LIST, LLIST ,RUN
GOTO,GOSUB,RETURN,
REM, ------------------------> ADDED <'> shortcut
STOP,CONT,PAUSE
INPUT, INKEY$ // INKEY$ : non blocking key listening ....
IF,THEN
FOR,TO,STEP,NEXT
VAL()
INT(),RND() // int(1.5) -> rounds to 1 // rnd -> returns between 0.00 & 1.00
STR$() // STR$(1) => "1" (allows string concat)
LEN(), // LEN("abc") => 3
RIGHT$(),MID$(),LEFT$(),
POSITION,LOCATE <COL>,<ROW>
LET,DIM,
MEM --> function that return free ammount of RAM
SAVE,LOAD,NEW, CHAIN, DELETE
DIR, ----------------------> ADDED optional extension filter ex: DIR ".BAS"
DIRARRAY ------------------> Stores FS list in "DIR$" ARRAY VARIABLE
DIRM ----------------------> show FS content for MCU#2
MUTE (toggle mute buzzer)
BEEP 100,2 : 1-48 produces some notes, direct freq. otherwise, beeps for 2*50msec
PLAY "ABC#" : play some notes of OCTAVE_4
PLAYT5K & PLAYT53 : to play audio (beep) files
DRAWBPP : display a 1bpp (B/W) picture to builtin screen
DRAWPCT : display a 64K colors picture
DRAWSPRT : draw a sprite (portion of a .PCT image file)
CIRCLE x,y,r : draw a circle
LINE x,y,x2,y2 : draw a line
PSET x,y : switch ON a pixel
PRESET x,y : switch OFF a pixel
RECT x,y,w,h,c,m : c : 0,1,2,3 (black,white,gray, darkGray) // m : 0,1 (draw,fill)
TRIANGLE x,y,x,y,x,y,c,m : as same as RECT but draws a triangle
BLITT x : 0 stop blitt / 1 trigger blitt / 2 auto blitt (default mode)
SCREEN 0/1/2 : switch resolution (128x64, 160x128, 320x240)
(TEXT 0/1 -> change text overlay mode)
BTN(x) : function get button state
LED [1..3], {0,1} : switch on/off a LED
( CONSOLE <out>,<in>,<gfx> : set I/O + GFX main devices )
( ECHO {0;1} : enable/disable console output )
DELAY x : wait x msec
SECS : function that returns nb of seconds elapsed since boot
MILLIS : function that returns nb of milli-seconds elapsed since boot
UPPER$(str) : function that return UPPERCASE of str
STRING$(nbTimes, chr) : function that returns repeating string of nbTimes * CHR$(chr)
CHR$( chr ) : function that return a char of given ASCII code
SPACE$(nbTimes) : function that returns repeating string of nbTimes * CHR$(32)
ASC( str ) : returns ascii code of 1st char of str
INSTR( str, toFind ) : returns index of 'toFind' in 'str' (else 0)
ABS(x) : return absolute value of number
COS(x) : return cos( x in radians)
SIN(x) : return sin( x in radians)
SQRT(x) : return square-root of x
POW(x,y) : return x pow y
MIN(x,y) : guess
MAX(x,y) : guess ...
EXEC "<extCmd>", "[<extArg>]" : to launch an extended command
DO "? 3.14" : ~ as eval() in JS, interprets & launch a String expr.
DATAF "file", "SZ", "A$", "B" -> feeds A$ & B arrays w/ a PSEUDO CSV file content (ex: file.BAD) of a length of SZ
(DATAU "url?", "SZ", "A$", "B" -> will do as same but with an URL)
(COPY "/TOTO.PCT" -> copy an asset to MCU#2 )
BYE : to reset the MCU
HALT : to halt the MCU & optional connected RPI
I used 2x ESP32 (instead of only 1 in #Xts-uBASIC Pocket V2 ) because I needed hudge RAM to correctly manage the 320x240px Screen ops. (& ESP32 is relatively cheap & fast) so there is an UART Bridge between BOTH MCUs in order to send commands from #1 (BASIC+BEEP+BTNs+WIFI) & #2 (SCREEN + MP3Player) Then the SX1509 boards allows me to read all buttons to #1...
Hi, today I'm starting to write a little RPG demo (not a real game @ this time).
Just for the experiment & detect lags (& try to fix those)
I found this very good tutorial about case & buttons reusing...
Then I decided to try by myself.
Then I connected all buttons to a Sparkfun SX1509 I2C I/O expander.
Hi, today I mounted the 2MCUs together...
It now looks like this :
From bottom to top : we have the 2x ESP32, the GPIO expander at center, then the 320x240px TFT w/ legacy GameGear controls PCB on sides.
a small overview :
buttons are responding & bridged screen works !
Hi, last week : I added the MP3 Module (DFPlayer MINI) & wired 2x MCUs USBs + added a LED @ same place than original one.
So we have the MP3Module on left side (linked to #2 MCU), BUZZER (linked to MCU#1) on right side & 2 USBs to control BOTH MCUs (via ArduinoIDE) + a micro female USB to power the whole system (@top)
So it can now play BEEPs & MP3 Tracks !
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates
About Us Contact Hackaday.io Give Feedback Terms of Use Privacy Policy Hackaday API Do not sell or share my personal information