Git Product home page Git Product logo

lcdzapper's Introduction

LightGunVerter

Device for making lightgun games playable on modern LCD TVs with original hardware. For example NES Duck Hunt but the system will work with almost all lightgun games/systems from the NES all the way up to the Dreamcast.

For latest information and purchasing information please visit www.lightgunverter.com.

Instructions for use can be found here

There's a discussion thread (Issue: General Discussion) or a thread about building your own if you want to ask any questions.

Everything is open source but cannot be used for commercial purposes (ie. you can make your own but you can't make them and sell them). See LICENSE for more details.

lcdzapper's People

Contributors

charcole avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lcdzapper's Issues

[FR] RGB/YPrBr video support

hi. is possible add support for this type of video signal?

the compose signal is the worst (less than RF) signal you get in the console output

Almost all consoles have this type of output (a selected group need a hardmod inside the cosole (NES needs a expensive PCB), other like Xbox Og this output is a mess, so YPrBr can be used instead) , Ps2 han handle RGB and YPrBr with same quality, Dreamcast the best output is VGA, but can you use RGB)

only compose signal is no-go for most of users

greetings

PSX Cable (using Arduino Nano)

Initial instructions on how to build an adapter cable to connect your Wii mote to your PS1/PSX using a LCDGunverter.

What you'll need:

  • Psx cable with 1x male socket (ie ps1/2 control pad cable extension or old control pad cable from broken controller)
  • Cat 5 network cable (with an RJ45 socket)
  • Arduino Nano (+ a mini usb cable to connect to pc to program)

Optional - Arduino prototyping /breadboard wires. Multimeter to test connections.

Note: You should be able to build this without soldering and using just cable/wire joiners (if your nano comes with pins already soldered on)

Setting up the Ardunio Nano
Download and install the Arduino software (IDE), found at https://www.arduino.cc/en/Main/Software
Connect nano to pc
Open IDE
Go to "Tools" > "Board:" select Arduino Nano
As per following
20210512_222122

Check also the 'port:' (it can change each time you unplug and plug in nano to pc ..ie port 3 or port 4).

You should now be ready install the 'active cable' firmware to you nano.

The original can be initially downloaded from
https://github.com/charcole/LCDZapper/blob/master/Firmware/ActiveCables/PSXGun.ino

Although check here for updates as there a few changes required for the code (see main discussion issue for details).

**Scroll down for guncon45 version attached to the bottom of this post **

Compile and upload .ino to Nano
Connect nano to pc and open the arduino IDE
Open PSXGun.ino
Click on the verify button
Click in the upload button

Your nano should now be ready for wiring the connection.

Creating custom cables

There are 2x parts to wiring

  • nano to psx cable
  • nano to LGV via RJ45 cable

I used a cable from a broken ps2 controller and soldered then to a breadboard/ protoyping cables.

[UPDATE 6/6/2021]- old ps2 controlpad cables were a bad idea and caused so much wasted time. Suggest to open the male psx sockets and solder new wire!]

Original attempt (see other recent posts for better examples)
20210513_204945

This cable proved to be too long and resulted in strange issues (gun would only register in some parts of the screen).

For the RJ45 cable, i cut a cat5 network cable and stripped the wires and connected to breadboard style wires.

20210513_204830
Note: wire colors on the rj45 pic were different to my wiring diagram (as its the only colors i had left)

Make sure you test contuinity with a multimeter to ensure your wires correspond with the intended pins.

Wiring Arduino to LCDGunverter
This part should be straight forward - simply connect the cable pins to the nano.

118137473-95467600-b448-11eb-8258-371efc77384a
Correction 1: VCC on nano should use the 5v pin not the 3.3v pin to the rj45 (this is needed to pull up the tx signal to the nano otherwise it wont detect controller)

20210513_210217

images (36)

20210513_223125
Note:

  • ive powered the nano using the 7.3v motor line from the psx to the VIN pin to nano (you can optionally use pin 1 from the LGV rj45 instead which should give 4-5v)
  • i grabbed the 2nd ground from one of the pins at the end of the nano.

Setting up LCDGunverter to use adapter
Once connected and plugged in to psx and LGV, power on all devices.

In LGV, set to 'custom' cable and press A on wii mote.
Press Home on wii mote to bring up LGVmenu and use arrow keys to select IO Type.

  • set this to `Serial'

You should notice an smd led on the nano will turn on to indicate it is receiving data from the LGV.

Testing the results
This cable is still very much in development, so you may need to use another psx controller to get thru game menus as not all not all buttons from wii mote were working.

Initial signs are promising...
20210515_120911_HDR

20210515_121546_HDR

Updated - got it working great! (6/6/2021) - this .ino file worked for me! Includes some additional commentary in case anyone would like to make further modifications.
PSXGun_GUNCON45_ArduinoNano.ino.txt

Wiimote buttons layout

Dpad LEFT = guncon A
Dpad RiGHT = guncon B
Trigger (B) = guncon trigger

Nes Zapper Cable

Documenting examples of each cable wiring (in case anyone needs to create additional nes ones, or build their understanding of how the system works). Ive included a few photos and original schematic (as drawn by charcole).

Note: cables themselves do not appear to include any passive components (ie resistors/ capacitors).

IMG_2020-11-23_23-44-47
IMG_2020-11-23_23-46-13

95362210-ac772100-08c5-11eb-8a3b-912a4fdf0a0b (2)

Guncon2 support?

Will it be possible to support the ps2 light gun with this? If I remember correctly the device was USB, so I'm not sure if you're able to emulate a USB device.

Branching

This is not an issue, but I am new on GitHub and not sure where comments are inserted.
I am interested in this project, but from a different use. They are currently lots of emulators and some run on the pi directly. Do you think it is possible to apply part of this code to determine if the duck has been shot to tell the emulator? Basically just having a pi and a Wiimote.

Universal Mode Cable

Example cable for Universal Mode

IMG_2020-11-24_21-04-10

95362210-ac772100-08c5-11eb-8a3b-912a4fdf0a0b (2)

Need to confirm if there anything special regarding of 3.3v LED used at end of cable (ie white or an ultraviolet/ IR style)

Improved reticles

Reticles currently filled circle or square. Instead of just changing size supply number of different reticle styles to choose from.

Need to think about how to allow 2 players to select own reticle.

Building Discussion (Non-commercial use only)

I'm going to try my hand at building one of these. I am logging my progress here. If anyone sees any issues or things I get wrong please let me know, and @charcole has been gracious enough to answer my questions. I will post any further questions here as I go.

compile and upload the program

Hello, I've tried a lot of ways and unfortunately haven't managed to compile the software and flash it onto the chip. I hope someone can help me.

  1. try: quick way
    I flash the ESP32 with the help of the Arduino(1.8.13) IDE example: OTA Web update in order to use the existing Firmware file. When loading the file, the error message: Wrong Magic Byte appears.

  2. try long way
    I installed Ubuntu on a VM and followed the steps according to the instructions. (I installed Ubuntu on a VM and followed the steps according to the instructions.) After the successful test with the Hello World example, I wanted to create and upload the firmware. I continued with the instructions from the Programmer.md file. I loaded the existing SKConfig and started make flash.
    Ich denke hier gibt es ein Paar probleme mit den Bibliotheken.
    `XX build/main/main.o
    In file included from /home/alex/esp/Firmware/main/main.cpp:33:
    /home/alex/esp/esp-idf/components/esp_event/include/esp_event_loop.h:2:2: warning: #warning "esp_event_loop.h is deprecated, please include esp_event.h instead" [-Wcpp]
    #warning "esp_event_loop.h is deprecated, please include esp_event.h instead"
    ^~~~~~~
    In file included from /home/alex/esp/Firmware/main/main.cpp:41:
    /home/alex/esp/esp-idf/components/esp32/include/rom/rtc.h:1:2: warning: #warning rom/rtc.h is deprecated, please use esp32/rom/rtc.h instead [-Wcpp]
    #warning rom/rtc.h is deprecated, please use esp32/rom/rtc.h instead
    ^~~~~~~
    In file included from /home/alex/esp/Firmware/main/main.cpp:42:
    /home/alex/esp/esp-idf/components/esp32/include/rom/cache.h:1:2: warning: #warning rom/cache.h is deprecated, please use esp32/rom/cache.h instead [-Wcpp]
    #warning rom/cache.h is deprecated, please use esp32/rom/cache.h instead
    ^~~~~~~
    /home/alex/esp/Firmware/main/main.cpp: In function 'void WiimoteTask(void*)':
    /home/alex/esp/Firmware/main/main.cpp:699:8: error: 'UART1' was not declared in this scope
    if (UART1.status.txfifo_cnt == 0 && UART2.status.txfifo_cnt == 0)
    ^~~~~
    /home/alex/esp/Firmware/main/main.cpp:699:40: error: 'UART2' was not declared in this scope
    if (UART1.status.txfifo_cnt == 0 && UART2.status.txfifo_cnt == 0)
    ^~~~~
    /home/alex/esp/Firmware/main/main.cpp:736:8: error: 'UART1' was not declared in this scope
    if (UART1.status.txfifo_cnt == 0) // UART FIFO is zero
    ^~~~~
    /home/alex/esp/Firmware/main/main.cpp: In function 'void WifiInitAccessPoint()':
    /home/alex/esp/Firmware/main/main.cpp:1684:21: warning: 'void tcpip_adapter_init()' is deprecated [-Wdeprecated-declarations]
    tcpip_adapter_init();
    ^
    In file included from /home/alex/esp/esp-idf/components/esp_netif/include/esp_netif.h:35,
    from /home/alex/esp/esp-idf/components/esp_event/include/esp_event_legacy.h:22,
    from /home/alex/esp/esp-idf/components/esp_event/include/esp_event.h:26,
    from /home/alex/esp/esp-idf/components/esp_wifi/include/esp_wifi.h:64,
    from /home/alex/esp/Firmware/main/main.cpp:32:
    /home/alex/esp/esp-idf/components/tcpip_adapter/include/tcpip_adapter.h:34:6: note: declared here
    void tcpip_adapter_init(void) attribute ((deprecated));
    ^~~~~~~~~~~~~~~~~~
    /home/alex/esp/Firmware/main/main.cpp:1684:21: warning: 'void tcpip_adapter_init()' is deprecated [-Wdeprecated-declarations]
    tcpip_adapter_init();
    ^
    In file included from /home/alex/esp/esp-idf/components/esp_netif/include/esp_netif.h:35,
    from /home/alex/esp/esp-idf/components/esp_event/include/esp_event_legacy.h:22,
    from /home/alex/esp/esp-idf/components/esp_event/include/esp_event.h:26,
    from /home/alex/esp/esp-idf/components/esp_wifi/include/esp_wifi.h:64,
    from /home/alex/esp/Firmware/main/main.cpp:32:
    /home/alex/esp/esp-idf/components/tcpip_adapter/include/tcpip_adapter.h:34:6: note: declared here
    void tcpip_adapter_init(void) attribute ((deprecated));
    ^~~~~~~~~~~~~~~~~~
    In file included from /home/alex/esp/esp-idf/components/esp_timer/include/esp_timer.h:45,
    from /home/alex/esp/esp-idf/components/freertos/port/xtensa/include/freertos/portmacro.h:46,
    from /home/alex/esp/esp-idf/components/freertos/include/freertos/portable.h:52,
    from /home/alex/esp/esp-idf/components/freertos/include/freertos/FreeRTOS.h:64,
    from /home/alex/esp/Firmware/main/main.cpp:23:
    /home/alex/esp/Firmware/main/main.cpp:1685:57: warning: 'esp_err_t esp_event_loop_init(system_event_cb_t, void*)' is deprecated [-Wdeprecated-declarations]
    ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));
    ^
    /home/alex/esp/esp-idf/components/esp_common/include/esp_err.h:119:31: note: in definition of macro 'ESP_ERROR_CHECK'
    esp_err_t __err_rc = (x);
    ^
    In file included from /home/alex/esp/esp-idf/components/esp_event/include/esp_event.h:26,
    from /home/alex/esp/esp-idf/components/esp_wifi/include/esp_wifi.h:64,
    from /home/alex/esp/Firmware/main/main.cpp:32:
    /home/alex/esp/esp-idf/components/esp_event/include/esp_event_legacy.h:239:11: note: declared here
    esp_err_t esp_event_loop_init(system_event_cb_t cb, void ctx) attribute ((deprecated));
    ^~~~~~~~~~~~~~~~~~~
    In file included from /home/alex/esp/esp-idf/components/esp_timer/include/esp_timer.h:45,
    from /home/alex/esp/esp-idf/components/freertos/port/xtensa/include/freertos/portmacro.h:46,
    from /home/alex/esp/esp-idf/components/freertos/include/freertos/portable.h:52,
    from /home/alex/esp/esp-idf/components/freertos/include/freertos/FreeRTOS.h:64,
    from /home/alex/esp/Firmware/main/main.cpp:23:
    /home/alex/esp/Firmware/main/main.cpp:1685:57: warning: 'esp_err_t esp_event_loop_init(system_event_cb_t, void
    )' is deprecated [-Wdeprecated-declarations]
    ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));
    ^
    /home/alex/esp/esp-idf/components/esp_common/include/esp_err.h:119:31: note: in definition of macro 'ESP_ERROR_CHECK'
    esp_err_t __err_rc = (x);
    ^
    In file included from /home/alex/esp/esp-idf/components/esp_event/include/esp_event.h:26,
    from /home/alex/esp/esp-idf/components/esp_wifi/include/esp_wifi.h:64,
    from /home/alex/esp/Firmware/main/main.cpp:32:
    /home/alex/esp/esp-idf/components/esp_event/include/esp_event_legacy.h:239:11: note: declared here
    esp_err_t esp_event_loop_init(system_event_cb_t cb, void ctx) attribute ((deprecated));
    ^~~~~~~~~~~~~~~~~~~
    In file included from /home/alex/esp/esp-idf/components/esp_timer/include/esp_timer.h:45,
    from /home/alex/esp/esp-idf/components/freertos/port/xtensa/include/freertos/portmacro.h:46,
    from /home/alex/esp/esp-idf/components/freertos/include/freertos/portable.h:52,
    from /home/alex/esp/esp-idf/components/freertos/include/freertos/FreeRTOS.h:64,
    from /home/alex/esp/Firmware/main/main.cpp:23:
    /home/alex/esp/Firmware/main/main.cpp:1698:65: error: cannot convert 'esp_interface_t' to 'wifi_interface_t'
    ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP, &WiFiConfig));
    ^
    /home/alex/esp/esp-idf/components/esp_common/include/esp_err.h:119:31: note: in definition of macro 'ESP_ERROR_CHECK'
    esp_err_t __err_rc = (x);
    ^
    In file included from /home/alex/esp/Firmware/main/main.cpp:32:
    /home/alex/esp/esp-idf/components/esp_wifi/include/esp_wifi.h:791:48: note: initializing argument 1 of 'esp_err_t esp_wifi_set_config(wifi_interface_t, wifi_config_t
    )'
    esp_err_t esp_wifi_set_config(wifi_interface_t interface, wifi_config_t *conf);
    ~~~~~~~~~~~~~~~~~^~~~~~~~~
    /home/alex/esp/Firmware/main/main.cpp: In function 'void StartAppCPU()':
    /home/alex/esp/Firmware/main/main.cpp:1877:2: error: 'cpu_configure_region_protection' was not declared in this scope
    cpu_configure_region_protection();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/alex/esp/Firmware/main/main.cpp:1877:2: note: suggested alternative: 'esp_cpu_configure_region_protection'
    cpu_configure_region_protection();
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    esp_cpu_configure_region_protection
    In file included from /home/alex/esp/esp-idf/components/esp_rom/include/esp32/rom/cache.h:18,
    from /home/alex/esp/esp-idf/components/esp32/include/rom/cache.h:2,
    from /home/alex/esp/Firmware/main/main.cpp:42:
    /home/alex/esp/Firmware/main/main.cpp: In function 'void app_main()':
    /home/alex/esp/Firmware/main/main.cpp:1929:31: error: 'DPORT_APPCPU_CTRL_B_REG' was not declared in this scope
    if (!DPORT_GET_PERI_REG_MASK(DPORT_APPCPU_CTRL_B_REG, DPORT_APPCPU_CLKGATE_EN)) {
    ^~~~~~~~~~~~~~~~~~~~~~~
    /home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:186:67: note: in definition of macro 'DPORT_GET_PERI_REG_MASK'
    #define DPORT_GET_PERI_REG_MASK(reg, mask) (DPORT_READ_PERI_REG(reg) & (mask))
    ^~~
    /home/alex/esp/Firmware/main/main.cpp:1929:31: note: suggested alternative: 'DPORT_READ_PERI_REG'
    if (!DPORT_GET_PERI_REG_MASK(DPORT_APPCPU_CTRL_B_REG, DPORT_APPCPU_CLKGATE_EN)) {
    ^~~~~~~~~~~~~~~~~~~~~~~
    /home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:186:67: note: in definition of macro 'DPORT_GET_PERI_REG_MASK'
    #define DPORT_GET_PERI_REG_MASK(reg, mask) (DPORT_READ_PERI_REG(reg) & (mask))
    ^~~
    /home/alex/esp/Firmware/main/main.cpp:1929:56: error: 'DPORT_APPCPU_CLKGATE_EN' was not declared in this scope
    if (!DPORT_GET_PERI_REG_MASK(DPORT_APPCPU_CTRL_B_REG, DPORT_APPCPU_CLKGATE_EN)) {
    ^~~~~~~~~~~~~~~~~~~~~~~
    /home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:186:75: note: in definition of macro 'DPORT_GET_PERI_REG_MASK'
    define DPORT_GET_PERI_REG_MASK(reg, mask) (DPORT_READ_PERI_REG(reg) & (mask))
    ^~~~

/home/alex/esp/Firmware/main/main.cpp:1931:29: error: 'DPORT_APPCPU_CTRL_C_REG' was not declared in this scope
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:67: note: in definition of macro '_DPORT_WRITE_PERI_REG'
#define _DPORT_WRITE_PERI_REG(addr, val) (*((volatile uint32_t )(addr))) = (uint32_t)(val)
^~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:180:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_CLEAR_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)&(~(mask))))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1931:3: note: in expansion of macro 'DPORT_CLEAR_PERI_REG_MASK'
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1931:29: note: suggested alternative: 'DPORT_READ_PERI_REG'
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:67: note: in definition of macro '_DPORT_WRITE_PERI_REG'
#define _DPORT_WRITE_PERI_REG(addr, val) (
((volatile uint32_t )(addr))) = (uint32_t)(val)
^~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:180:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_CLEAR_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)&(~(mask))))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1931:3: note: in expansion of macro 'DPORT_CLEAR_PERI_REG_MASK'
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1931:54: error: 'DPORT_APPCPU_RUNSTALL' was not declared in this scope
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:88: note: in definition of macro '_DPORT_WRITE_PERI_REG'
RT_WRITE_PERI_REG(addr, val) (
((volatile uint32_t *)(addr))) = (uint32_t)(val)
^~~

/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:180:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_CLEAR_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)&(~(mask))))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1931:3: note: in expansion of macro 'DPORT_CLEAR_PERI_REG_MASK'
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1931:54: note: suggested alternative: 'GPIO_APPCPU_INT_H'
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:88: note: in definition of macro '_DPORT_WRITE_PERI_REG'
RT_WRITE_PERI_REG(addr, val) (*((volatile uint32_t *)(addr))) = (uint32_t)(val)
^~~

/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:180:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_CLEAR_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)&(~(mask))))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1931:3: note: in expansion of macro 'DPORT_CLEAR_PERI_REG_MASK'
DPORT_CLEAR_PERI_REG_MASK(DPORT_APPCPU_CTRL_C_REG, DPORT_APPCPU_RUNSTALL);
^~~~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:27: error: 'DPORT_APPCPU_CTRL_A_REG' was not declared in this scope
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:67: note: in definition of macro '_DPORT_WRITE_PERI_REG'
#define _DPORT_WRITE_PERI_REG(addr, val) (*((volatile uint32_t )(addr))) = (uint32_t)(val)
^~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:183:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_SET_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)|(mask)))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:3: note: in expansion of macro 'DPORT_SET_PERI_REG_MASK'
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:27: note: suggested alternative: 'DPORT_READ_PERI_REG'
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:67: note: in definition of macro '_DPORT_WRITE_PERI_REG'
#define _DPORT_WRITE_PERI_REG(addr, val) (
((volatile uint32_t )(addr))) = (uint32_t)(val)
^~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:183:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_SET_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)|(mask)))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:3: note: in expansion of macro 'DPORT_SET_PERI_REG_MASK'
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:52: error: 'DPORT_APPCPU_RESETTING' was not declared in this scope
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:88: note: in definition of macro '_DPORT_WRITE_PERI_REG'
RT_WRITE_PERI_REG(addr, val) (
((volatile uint32_t *)(addr))) = (uint32_t)(val)
^~~

/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:183:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_SET_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)|(mask)))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:3: note: in expansion of macro 'DPORT_SET_PERI_REG_MASK'
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:52: note: suggested alternative: 'EXT_CPU_RESET'
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~
/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:154:88: note: in definition of macro '_DPORT_WRITE_PERI_REG'
RT_WRITE_PERI_REG(addr, val) (*((volatile uint32_t *)(addr))) = (uint32_t)(val)
^~~

/home/alex/esp/esp-idf/components/soc/esp32/include/soc/dport_access.h:183:46: note: in expansion of macro 'DPORT_WRITE_PERI_REG'
#define DPORT_SET_PERI_REG_MASK(reg, mask) DPORT_WRITE_PERI_REG((reg), (DPORT_READ_PERI_REG(reg)|(mask)))
^~~~~~~~~~~~~~~~~~~~
/home/alex/esp/Firmware/main/main.cpp:1932:3: note: in expansion of macro 'DPORT_SET_PERI_REG_MASK'
DPORT_SET_PERI_REG_MASK(DPORT_APPCPU_CTRL_A_REG, DPORT_APPCPU_RESETTING);
^~~~~~~~~~~~~~~~~~~~~~~
make[1]: *** [/home/alex/esp/esp-idf/make/component_wrapper.mk:292: main.o] Fehler 1
make: *** [/home/alex/esp/esp-idf/make/project.mk:635: component-main-build] Fehler 2`

Question: Understanding light detection

Hi I was trying to better understand how the NES handles light detection.

When you pull the trigger on the zapper, electrically that's a 1. The NES then provides 1 frame of a black screen and looks to make sure the zapper detects that (D3 = 1) during the vertical blanking period (hence the need to have your RCA cable plugged in?)
After vertical blanking it will display a white square and check that the zapper detects that (D3 = 0)

So to make this work you use the v sync find when you need to hold D3 high but how do you actually decide when to set D3 low?

General Discussion

Hi,

Very excited to see this project. I wasn't sure the best way to contact you so I figured I would post an issue here.

I started on converting your hand drawn schematic.
wip

The goal is to make a self contained board that would fit in a small enclosure.

Thanks

wiimote emulation

is it possible to adapt the code to use in emulators using wiimote for pointing?
so i could play more games instead of just the 8 bit nes

IO Type in menu is non functional

IO Type should change what the two IO lines do...

Normal: A or B, Serial Data (all buttons + coordinates)
A + B: A, B
B + A: B, A

Also inverted versions for console needing active high

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.