Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 13:32 28 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : PICO PETSCII

     Page 16 of 38    
Author Message
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4247
Posted: 07:56pm 18 Oct 2023
Copy link to clipboard 
Print this post

Thanks to Martins hard work, here is the latest version for the VGA version.

It uses magenta as transparent color in the L-layer, allowing use to use black as a solid color for the sprites.
It also contains the improved game sound file.
Robots are alternating sprites, but that actually does not bring much. I may remove it in newer versions.

petrobot.zip

Go as follows:

1/
Install: PicoMiteVGA V5.07.08RC10 (this version is also compatible with the RC4 for the earlier release pet18.zip. But you need RC10 to run this version).

2/
UNZIP the pet19.zip to a folder.

3/
In this folder
LIBRARY DELETE
LIBRARY DISK LOAD "lib/pet_lib.bin"
RUN "pet19.bas"

Enjoy....

Volhout
Edited 2023-10-19 05:58 by Volhout
PicomiteVGA PETSCII ROBOTS
 
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 512
Posted: 08:25pm 18 Oct 2023
Copy link to clipboard 
Print this post

And here is the same bas file, but for a LCD display. :-)
Not yet at full speed as the background merge is currently commented out.

lcdpet.bas.zip
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3150
Posted: 08:28pm 18 Oct 2023
Copy link to clipboard 
Print this post

With the latest, I got the same endless loop as Martin, and had to clear flash to be able to reload the latest firmware.
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1114
Posted: 04:05am 19 Oct 2023
Copy link to clipboard 
Print this post

That's interesting,
with Bleep the LCD version works, with Lizby and me loading the library leads to a total crash.
To narrow this down,

OPTION SYSTEM SPI GP6,GP3,GP4          º
OPTION AUTORUN 1                       º
OPTION CPUSPEED (KHz) 252000           º
OPTION DISPLAY 28, 80d SELECT          º
OPTION LCDPANEL ILI9341, RLANDSCAPE,GP2,GP1,GP0
OPTION TOUCH GP5,GP7
GUI CALIBRATE 0, 368, 294, 882, 666
OPTION SDCARD GP22
OPTION AUDIO GP20,GP21, ON PWM CHANNEL 2
OPTION MODBUFF 128


I use an original Pico, not a clone with more memory. Since this is soldered in for reasons of space, in the Game*Mite I can't even change it quickly to test it with a Pico clone with more memory.
However, a test with a new bare clone showed the same result (endless boot),
..
At the moment I have no idea what the difference is, but I have to go to work now, so I can't look at it again until later.

@ Volhout
This only affects the Picomite version. the PicomiteVGA version runs smoothly.
I'm going to test your new version this evening   .
Have a nice one
Mart!n
Edited 2023-10-19 15:17 by Martin H.
'no comment
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4247
Posted: 06:45am 19 Oct 2023
Copy link to clipboard 
Print this post

The Game*Mite shares SPI between LCD and SD-card and Touch.

Peter says that is not compatible anymore with this fast update. Het drives the LCD SPI bus with maximum speed.

I hope there is some OPTION setting to go back to the slower (and Game*Mite compatible) LCD control. Otherwise there will be a fourth PicoMite version (a branch). The one that Tom maintains, and remains compatible with his new platform.

Volhout
PicomiteVGA PETSCII ROBOTS
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1114
Posted: 06:53am 19 Oct 2023
Copy link to clipboard 
Print this post

  Volhout said  The Game*Mite shares SPI between LCD and SD-card and Touch.

Peter says that is not compatible anymore with this fast update. Het drives the LCD SPI bus with maximum speed.

I hope there is some OPTION setting to go back to the slower (and Game*Mite compatible) LCD control. Otherwise there will be a fourth PicoMite version (a branch). The one that Tom maintains, and remains compatible with his new platform.

Volhout

It all sounds logical, but I also had the same issue (endless reboot after LIBRARY DISK LOAD) on a freshly installed clone that had never connected an LCD or a LCD Configuration, before.So I didn't even get around to loading the basic program.
Edited 2023-10-19 16:58 by Martin H.
'no comment
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9129
Posted: 07:21am 19 Oct 2023
Copy link to clipboard 
Print this post

The current version should work properly with the continuous background merge or foreground merge as I programmed the continuous version to circumvent this issue. I'll look at the single shot background merge (same probably applies to background copy)

The issue is that I have to block CPU1 access to SPI while CPU2 is using it. The routine that updates the audio buffers is the same one that checks for the SDcard being removed and this has to be deferred when CPU2 is using SPI. Prior to MOD files this was OK as FLAC and WAV playback both needed SDcard access so couldn't and can't work. MOD playback doesn't need SPI access so I need to special case it some more.

There are two H/W solutions.
One, use a parallel display, my high spec game design doesn't have the problem
Two, use different pins for SDcard than the system SPI pins - uses three extra pins but solves the issue completely
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6798
Posted: 07:27am 19 Oct 2023
Copy link to clipboard 
Print this post

Tom has used SPI for the on-board stuff, but SP2 is available in the form of the ADC pins. It may be possible to do a bit of PCB carving to use that channel as well.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1114
Posted: 07:49am 19 Oct 2023
Copy link to clipboard 
Print this post

MMBasic (non VGA) crashes through LIBRARY DISK LOAD even there is nothing configured
freshly unpacked, No SPI no SD Card etc. configured.
'no comment
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9129
Posted: 08:00am 19 Oct 2023
Copy link to clipboard 
Print this post

  Quote  MMBasic (non VGA) crashes through LIBRARY DISK LOAD even there is nothing configured
freshly unpacked, No SPI no SD Card etc. configured.


Seems reasonable  
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4043
Posted: 08:24am 19 Oct 2023
Copy link to clipboard 
Print this post

  matherp said  
  Quote  MMBasic (non VGA) crashes through LIBRARY DISK LOAD even there is nothing configured freshly unpacked, No SPI no SD Card etc. configured.


Seems reasonable  


In what way is it reasonable ?

I look away for a few days and we seem to have jumped the shark.

Can I confirm that people have updated their Game*Mites and are experiencing this issue on one of Peter's recent standard PicoMite 5.07.08 RCs ?

Peter, have you made a change that ALWAYS makes sharing of SPI pins between LCD and SDI card/touch IMPOSSIBLE ? Or, as I assumed from first reading is this new behaviour only enabled via:

   FRAMEBUFFER MERGE col,R

Specifically the R option which makes the merge run continuously in the background ?

Best wishes,

Tom
Edited 2023-10-19 18:28 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6798
Posted: 08:32am 19 Oct 2023
Copy link to clipboard 
Print this post

How are you going to do a LIBRARY DISK LOAD without a disk?  :)

I don't think any changes have broken Game*Mite, it's just that it doesn't support that new-fangled R mode. Mind you, nothing does yet, I don't think.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9129
Posted: 08:43am 19 Oct 2023
Copy link to clipboard 
Print this post

  Quote  In what way is it reasonable ?


He said he used an explicitly disk activity without enabling the disk first. Of course it should be trapped but it is a nonsensical thing to do.

  Quote  Peter, have you made a change that ALWAYS makes sharing of SPI pins between LCD and SDI card/touch IMPOSSIBLE ?


No, of course not, the issue arises with any use of the second core to do SPI things. When I first implemented FRAMEBUFFER COPY s,d,BACKGROUND I said there was no interlock and the same applies to any CPU2 activity. MERGE R is of course worst case as, unless the optional cycle time is used it completely takes over the SPI channel allocated to the LCD - that is easy to handle as I have just blocked any attempt to use SPI for anything else. MOD file playback (not load) doesn't use SPI, unlike flac or wav playback,  so can be special cased.
Merge B and copy B are the hardest to handle as they have undefined durations depending on the display in use and we don't want normal Basic processing to block because a background activity like audio buffer update or touch checking is taking place.
All-in-all quite a difficult challenge without a multi-tasking OS
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1114
Posted: 08:51am 19 Oct 2023
Copy link to clipboard 
Print this post

Before we bloat the thread with endless policy discussions, it would be the Point to clarify why the LCD version works with Bleep, but it causes Lizby and me to load the library to a total crash. And if / how we can get it working.
Edited 2023-10-19 18:52 by Martin H.
'no comment
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4043
Posted: 08:51am 19 Oct 2023
Copy link to clipboard 
Print this post

  matherp said  
  thwill said  Peter, have you made a change that ALWAYS makes sharing of SPI pins between LCD and SDI card/touch IMPOSSIBLE ?


No, of course not ...


Good, I thought as much, but had to ask as this fire is generating a lot of smoke.

  matherp said  Merge B and copy B are the hardest to handle as they have undefined durations depending on the display in use and we don't want normal Basic processing to block because a background activity like audio buffer update or touch checking is taking place.
All-in-all quite a difficult challenge without a multi-tasking OS


Ignoring MERGE for the moment (which is new since I last looked), but I thought you had COPY B working with the SD card ... ah, that was the issue of polling the SD card.

Is the issue here that someone is reading the SD card during a background copy ? Right, that should be verboten, or failing that it's the programmer's problem, add a sufficient PAUSE.

I'm also confused because I thought the initially reported issue was that a 'mite with a loaded LIBRARY was going into a continuous reboot cycle and don't see how that is related to this. I had guessed that the issue there was that the LIBRARY contained executable code (i.e. non functions/subs) that were causing a "sigbus" error and that the LIBRARY was always loaded when the firmware started (like the AUTORUN problem) ... but I haven't verified that.

Best wishes,

Tom
Edited 2023-10-19 18:52 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4043
Posted: 08:53am 19 Oct 2023
Copy link to clipboard 
Print this post

  Martin H. said  Before we bloat the thread with endless policy discussions, it would be the Point to clarify why the LCD version works with Bleep, but it causes Lizby and me to load the library to a total crash. And if / how we can get it working.


Agreed, and I don't think @lizby even has a Game*Mite unless he has sorted one out for scratch himself.

Best wishes,

Tom
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9129
Posted: 09:09am 19 Oct 2023
Copy link to clipboard 
Print this post

Please post the library file in question and your complete option list when trying to load and exactly which firmware version you are using - suggest you re-download from Geoff's site before anything else.

I'm going to try to implement proper locking between the CPUs using spinlocks but unfortunately this is one area where there are no examples from Raspberry Pi, the documentation is very poor, and there are far more sdk functions than you would see in a normal spinlock library on windows or Linux
Edited 2023-10-19 19:12 by matherp
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1114
Posted: 09:20am 19 Oct 2023
Copy link to clipboard 
Print this post

  matherp said  Please post the library file in question and your complete option list when trying to load and exactly which firmware version you are using - suggest you re-download from Geoff's site before anything else.


the Lib file is in the Zip  Archve, Bleep posted yesterday.
I posted the PicoMite version in the Error message:

library delete
> library disk load "LCDLIB.BIN
Error: Invalid address - resetting
PicoMite MMBasic Version 5.07.08RC10
Copyright 2011-2023 Geoff Graham
Copyright 2016-2023 Peter Mather

so it is PicoMite MMBasic Version 5.07.08RC10
I don't know which version Bleep is using
Edited 2023-10-19 19:23 by Martin H.
'no comment
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4247
Posted: 09:35am 19 Oct 2023
Copy link to clipboard 
Print this post

I created the magenta version of the library with RC10 (since ti requires RC10 to run). This version saves only the active part of the library (~90k), not the whole 100k, as in previous library publications. Maybe Bleeps derived version is incomplete ?

Could this be of importance ?

Volhout
Edited 2023-10-19 19:35 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9129
Posted: 10:20am 19 Oct 2023
Copy link to clipboard 
Print this post

Loads perfectly for me using the RC10 in the download from Geoff. Also tested on VGA version with no issues

UPDATE: loads but won't run as the index of sprite addresses seems wrong. Line 342 fails with invalid dimensions i.e. the w and h are out of range



Edited 2023-10-19 21:21 by matherp
 
     Page 16 of 38    
Print this page
© JAQ Software 2024