GithubHelp home page GithubHelp logo

pico-zxspectrum's Issues

CVBS output

I don't know how to do this but it is interesting!

Support for original ZX Spectrum Keyboard?

Hi Guys!

LOVE THIS PROJECT!

I´m wondering if it´s a way to use the original keyboard of a ZX Spectrum directly wo the Raspberry Pico for more enjoy of the project!?

I´ve one to make tests if needed.

Keep up going the good work!

Regards

SD card access results in audio under-run

I think I just need the PIO program to emit the last value if no new values are available.
Currently, each under-run results in a 'tap' as the DAC mute switches on and off.

Can not read .tap files from SD card.

I've hooked up the ZxSpectrum4PinAudioVga1111Ps2 on a perforated breadboard, it is working very well, except the fact that I can not read any .tap filefrom the SD card. I can do load .z80 files and save/load the snapshots. The Keyboard F5/F6/F7 keys are good, the .tap files are good (tested on an emulator).
Steps I am doing:
1 - Press F1,
2 - Choose .tap file,
3 - Motor on,
4 - Esc to go back to ZX screen,
5 - Press F5.
I've tried other ways with no success.

I created the folders as per instructions:
zxspectrum/snapshots Put your .z80 snapshot files in here.
zxspectrum/quicksaves Folder for quick saves.
zxspectrum/tapes Folder for .tap tape files.

Using F5/F6/F7 as per instructions:
F5 play current tape
F6 play previous tape
F7 play next tape

Any clue?

Thanks a lot.

Kempston joystick issiue on PicoZX VGA Board with Pico W

Hi,

I build myself a PicoZX with VGA boards from Bobricius:
https://www.tindie.com/products/bobricius/picozx-zx-spectrum-128k-vga-emulator-on-rpi-pico/
with Fruit-bat onboard. However I used Pico W instead a regullar Pico and have a "semi non-working" 9pin- Kempston joystick on many games. Strange behaviour as around 20% .z80 are working flawlessly, 20% .z80s are freezing and the rest around 60% of .z80 are compleatly non responsive at all ;-(

PS:Joysticks are Competion Pro & 2xQuickshots(xtested on ZX Spectrum +2A and Clones like Didaktik Gama/M tested & fully working)

Thanks for any help or support

Firmware update manual needed

I have PICOZX and I'd like to be able to update my firmware once in a while.
Could you please add a section to the README.md file on how to do it?
Or if it's already explained somewhere, please just refer me to that manual.

Pico W ?

Hi ,

Is it possible to use PicoW instead of a standard one? The Wi-fi options could be quite handy ;-D
Dont you think?

Thanks & regards for any feedback

error: 'CFG_TUH_ENDPOINT_MAX' undeclared here

Hello Again,

I'm using your pre-built binary, and its work on my new pcb. I got sound, video, keyboard, all less sd-card access because i havent sd-card detect line.

When i'm trying compile (in the past I got it) now i'm getting next error:
/pipico/PicoDVI/software/apps/pico-emu-utils/src/hid_host_info.c:26:38: error: 'CFG_TUH_ENDPOINT_MAX' undeclared here (not in a function)

imagen

whats i'm doing wrong?

Best Regards,
Shaeon.

Audio input suggestion

Since I figure that the ultimate goal is to recreate all functionality of the original ZX Spectrum, I am thinking that by using some modified hardware (or some new one even) from this microphone library, this goal can be achieved.
By adding a 100uF for isolation purposes as the guidelines for the analog module say maybe we can reach the goal.
I may be able (and willing) to test some hardware... I'm no audiophile but I got the tools to make what I usually need so that the analog "Line In" function can be available for the old cassette players out there... maybe even a save to ".tap" directly to the SD Card at the end... for comparison purposes since I still remember how error prone was this process in the old days.
I can try some different ways with the hardware part (will research more this part so we don't fry the pico) but since all this work is your baby, only you know if the analog part of the library can be adjusted to work with all the different layouts and if one input pin is available.

Composite Video output from VGA signals

I've been working on getting a composite video out signal by using an AD724 and the circuit taken from the datasheet, also used here for the Amstrad CPC.

Problem is that although I can get a colour image on my monitor, there is some kind of sync issue as the image is not stable and appears to roll around. I was wanting to find out if anyone has managed to get a stable composite video out signal ? I think the issue is to do with the CSYNC signal or timing from the Pi to the SYNC signal on the AD724. Or maybe there is a simpler circuit than using an AD724 decoding IC.

60 Hz refresh rate

** Raised on behalf of https://github.com/javavi **

There are a number of issues that I am currently working on and need your
advice.

  • 60Hz interrupt rate is not native to ZX Spectrum which has a 50Hz
    interrupt rate
    Because of this, the music is distorted, plays faster, a number of games
    crash.
    I've experimented with different approaches to convert interrupts to 50Hz.
    Music, gameplay restored to normal, but interrupts are out of sync with
    frame rate.
    Created a border buffer to display the border correctly but the border
    effects are jittery, maybe
    there is no clear stability in the execution time of processor command
    cycles.
    A more correct approach for negotiation is a frame buffer into which the
    input process writes to
    line emulation frequency of 50Hz, and the output process at VGA 60Hz.
    This approach is used by the authors of emulators for MURMULATOR and gives
    a good result.

Keyboard

I'm using a Pimoroni Pico VGA and everything works fine, except the USB keyboard. Only the basic keys work correctly on it, but it is impossible to get special characters through which it is impossible to program in Basic. :( Is there any way to get the correct key mapping of a standard USB keyboard? (Great project btw :) ).

PICOZX TFT

I accidentally bought HC28010-D TFT displays. Unlike the HC28010-ISP displays, these display the image inversely. Is it possible to adjust this in the software without much effort? Maybe I am not the only one who wants to use such "inverse displays".

Matthias

Regarding Audio output

I think you should change the circuits for the audio pwm pin and discard the digital pin. The bad sound on the pwm pin is surely from wrongly used RC components.
Look at the audio circuit for Raspberry Pi.
By doing some math with a RC High Pass Filter calculator they allow frequencies over ~106 Hz and with a RC Low Pass Filter calculator they allow frequencies under ~17871 Hz.
Humans can detect sounds in a frequency range from about 20 Hz to 20000 Hz.
The BAV99 are used for ESD protection (electrostatic discharges).
I've been following your project and been waiting for components to build it.

cant get sound

hello i build your pi pico zx spectrum. every thing works perfectly except i cant get any sound,. i am using retroVGA configuration. And i tried to get sound from all the pin combinations you have mentioned. any suggestions ??

Pimoroni DV

Hi, I got the Pimoroni DV board thinking that I could drop the precompiled UF2 on and the emulator would be ready to go. But nothing happens, no video output, no LEDs flash, nothing.

Do I need to do anything else? Is the emulator in the UF2 or do I need to put it onto an SD card?

I'm sure I'm not the only untechnical (would be) user. Some instructions would be a great help.

cannot find hid_rip.h

Hi, I'm trying to compile the current sources with tinyusb and libdvi but I got error missing hid_rip.h referenced by hid_host_joy.h of pico-emu-utils - where can I get this file?

Kempston Joystick

I use the ingenious emulator PICOZX from Bobricius. Everything works very well but there is a problem with the Kempston interface:
When loading programs with the load function for TZX files, the joystick works fine, with a snapshot not. The USB joystick always works.
Unfortunately I'm not a programmer so I can't find any hints about the bug in the sources.

ps2kbd.h missing

Good afternoon,

I'm trying config ps2 and i need swap pines clk and data from keyboard, and I cant find ps2kbd.h.

Can you tell me where i can get it?

Best Regards.

Where I can find the USB pins?

Hello, I am assembling the Breadboard Version of pico-zxspectrum and I saw it is compatible with USB and PS2 keyboards.

I do not have any PS2 keyboards with me, but I looked for the D+ and D- pins to connect to my USB keyboard at pinout figure but I did not find any dedicated pin.

Could someone help me finding that? Thanks in advance!

build failure

Setup environment and can build, compile and make other applications - so the environment is okay.

Followed the readme instructions as defined;

cmake -DPICO_COPY_TO_RAM=0 -DPICO_BOARD=vgaboard ..

Using PICO_SDK_PATH from environment ('/opt/pico-sdk')
PICO_SDK_PATH is /opt/pico-sdk
Defaulting PICO_PLATFORM to rp2040 since not specified.
Defaulting PICO platform compiler to pico_arm_gcc since not specified.
-- Defaulting build type to 'Release' since not specified.
PICO compiler is pico_arm_gcc
Using PICO_EXTRAS_PATH from environment ('/home/tony/dev/pico/c-code/pico-extras')
-- The C compiler identification is GNU 10.3.1
-- The CXX compiler identification is GNU 10.3.1
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-none-eabi-gcc
Build type is Release
PICO target board is vgaboard.
Using board configuration from /opt/pico-sdk/src/boards/include/boards/vgaboard.h
-- Found Python3: /usr/bin/python3.10 (found version "3.10.6") found components: Interpreter 
TinyUSB available at /opt/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB.
cyw43-driver available at /opt/pico-sdk/lib/cyw43-driver
lwIP available at /opt/pico-sdk/lib/lwip
lwIP available at /home/tony/dev/pico/c-code/pico-extras/lib/lwip/src/core/tcp.c; TCP/IP support is available.
Zeta v0.1
CMake Warning (dev) at /usr/share/cmake-3.22/Modules/GNUInstallDirs.cmake:239 (message):
  Unable to determine default CMAKE_INSTALL_LIBDIR directory because no
  target architecture is known.  Please enable at least one language before
  including GNUInstallDirs.
Call Stack (most recent call first):
  /home/tony/dev/pico/c-code/zxspectrum/Zeta/CMakeLists.txt:17 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

Z80 v0.2
-- Found Zeta: /home/tony/dev/pico/c-code/zxspectrum/Zeta (found version "v0.1") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tony/dev/pico/c-code/zxspectrum/pico-zxspectrum/build

however when I get to this point the build fails:
make -j4 ZxSpectrumPicoVga

[ 37%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj
[ 37%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj
/home/tony/dev/pico/c-code/zxspectrum/pico-zxspectrum/src/ZxSpectrumMenu.cpp: In member function 'void ZxSpectrumMenu::nextSnap(int)':
/home/tony/dev/pico/c-code/zxspectrum/pico-zxspectrum/src/ZxSpectrumMenu.cpp:452:39: error: type-specifier invalid in lambda
  452 |   _chooseSnap.next([](FILINFO* finfo) bool {
      |                                       ^~~~
[ 37%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/rp2_common/hardware_claim/claim.c.obj
[ 37%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/rp2_common/pico_platform/platform.c.obj
[ 37%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/rp2_common/hardware_sync/sync.c.obj
[ 37%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj
[ 37%] Building ASM object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.obj
[ 37%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/opt/pico-sdk/src/common/pico_sync/sem.c.obj
make[3]: *** [bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/build.make:622: bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/__/ZxSpectrumMenu.cpp.obj] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/Makefile2:3128: bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:3135: bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/rule] Error 2
make: *** [Makefile:663: ZxSpectrumPicoVga] Error 2

Looking at the code in ZxSpectrumMenu.cpp it is just stepping through the snapshot images, so if I comment it out it gets further but then fails here on the same type of declaration:

[ 25%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/home/tony/dev/pico/c-code/pico-extras/src/common/pico_scanvideo/vga_modes.c.obj
/home/tony/dev/pico/c-code/zxspectrum/pico-dvi-menu/src/PicoExplorer.cpp: In constructor 'PicoExplorer::PicoExplorer(SdCardFatFsSpi*, FatFsFilePath*, int32_t, int32_t, int32_t, int32_t, int32_t)':
/home/tony/dev/pico/c-code/zxspectrum/pico-dvi-menu/src/PicoExplorer.cpp:21:40: error: type-specifier invalid in lambda
   21 |   _cache.filter([] (const char *fname) bool {
      |                                        ^~~~
[ 25%] Building C object bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/home/tony/dev/pico/c-code/pico-extras/src/common/pico_util_buffer/buffer.c.obj
make[3]: *** [bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/build.make:1899: bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/home/tony/dev/pico/c-code/zxspectrum/pico-dvi-menu/src/PicoExplorer.cpp.obj] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/Makefile2:3128: bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:3135: bin/picovga/CMakeFiles/ZxSpectrumPicoVga.dir/rule] Error 2
make: *** [Makefile:663: ZxSpectrumPicoVga] Error 2

Wild guess from me - but is this a C compiler version problem? have you used a new way of defining a function with a bool return or something relating to the []'s? or are you needing a different C ompiler version? any ideas how to over come this would be great.

The pre-built .uf2 file works great on my picodemovga, but I need to modify it a bit that's why I'm looking at build/compile myself.

Compiling with USB and Keyboard mapping question ?

I'm compiling the source on raspbian which is all setup and building fine but not sure which git source to use for the pico_sdk_extras with TinyUSB sources for HID keyboard. I'm currently following the instructions in the readme which
is to delete the original TinyUSB and use the following for TinyUSB:
cd $PICO_SDK_PATH/lib/
mv tinyusb tinyusb.orig
git clone [email protected]:fruit-bat/tinyusb.git
cd tinyusb
git checkout hid_micro_parser
Is this correct as conflicting info in the readme suggested by Ryzee119 are getting harder to merge into the latest code ? What is the correct way to make sure the TinyUSB sources are cloned from git ?

Also, attempting to remap the keyboard GPIO I found this defined macro function in pzx_keyscan.map
#define CP_JOIN_PZX(a) ((a & 15) | ((a >> 3) & (7 << 4)))
What exactly does this function do and what do and how does it relate to the other defines set for the GPIO Pins:
#define CN_PZX 7
#define RN_PZX 7
#define CP_PZX 19, 20, 21, 22, 26, 27, 28
#define RP_PZX 8, 9, 14, 15, 16, 17, 18
#define CP_SHIFT_PZX 19
Thanks and this a really interesting project to work on! Hoping to contribute somthing myself when I'm familair with the source code.

SAVE "MyProgram" doesn't save anything

It would be nice be able to save a BASIC program or CODE.

Without it, the only way for me to save my mega program in BASIC is in the Snaps, of which I only have one available (I still haven't found a keyboard to work with my PICOZX). Which means I need to plug my micro SD in a computer to do the renaming to have more Snaps.

Picomputer

Map Picomputer backspace key to Spectrum shift-0

SD Card reading stuck on lots of files

Hi, noticed the SD Card loading gets stuck if I have a lot of files on the SD Card (280). Is it possible to add support for subfolders so we can have big collections in on a single SD Card (tried with subfolders and it doesn't display anything)? around 50 files works fine (talking about the tapes folder)

PS. Thanks for this amazing piece of work !

Flickering sprites in some games.

I've had some time over the weekend to play around with the emulator and in some games, Ghosts n Goblins for example, display sprite flickering, although the game plays fine. I'm using the VGA out build BTW.
Is this a known issue ?

I've noticed in the main.cpp code and the core1_main function that there is a comment in the code at this line:

if (y == 239) { // TODO use a const / get from vmode

Not quite sure what this means for what the 239 means either. I've also played around with changing the loop
variable i in this code here:
void __not_in_flash_func(main_loop)()
if (!showMenu) { for (int i = 1; i < 100; ++i) { if (lastInterruptFrame != _frames) { lastInterruptFrame = _frames; zxSpectrum.interrupt(); } zxSpectrum.step(); } } else if (frames != _frames) { frames = _frames; picoDisplay.refresh(); } }

Didn't make much of a differnece though but setting too high or too low would crash the emulator.

file missing

When i try compile i got this error:

PicoDVI/software/apps/zxspectrum/src/ZxSpectrumAy.h:3:20: fatal error: memory.h: No such file or directory

Can you upload memory.h file?

SD card problem

Hello, I made a project on the breadboard.
VGA connected according to the RGBY 1111 scheme.
Keyboard via USB.
It works!

Emulator does not see memory card
I used data from table Wiring->General->MicroSD 0
But doesn't work.
The SD card is formatted with FAT32.
I created folders
zxspectrum/snapshots
zxspectrum/quicksaves
zxspectrum/tapes

Firmware: ZxSpectrumPicomputerVga1111Zx.uf2
Where are the pins to connect the SD card?
In which file can I see the connection of peripherals?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.