I have ported my old project “pNesX” game console emulator to the nucleo.

Dependencies:   SDFileSystem mbed

Intro

I have ported my old project “pNesX” to the STM32 Nucleo. The pNesX is a NES emulator for the PlayStation that I have created 16 years ago!

Emulation part was almost without change, the sound part was newly added.

Parts

STM32 Nucleo F446RE
QVGA 2.2 TFT SPI (with the SD card slot)
Audio jack(TS or TRS)
USB Connector
Register 100k, 10k, 4.7k, 100
Capacitor 0.01uF, 2.2uF
Breadboard
Wires
Computer Speakers
USB GamePad

Wiring diagram

/media/uploads/beaglescout007/nucleo_ex06_emu.png

TFT J2Nucleo
VCC3V3
GNDGND
CSPB_5(D4)
ResetPA_10(D2) Pull Up(100k)
D/CPA_8(D7)
MOSIPA_7(D11)
SCKPA_5(D13)
LEDLED-100ohm-3V3
MISOPA_6(D12)
TFT J4Nucleo
SD_CSPA_9
SD_MOSIPB_15
SD_MISOPB_14
SD_SCKPB_13
AudioNucleo
TIPPA_4(A2)
USB con.Nucleo
GNDGND
+PA_12
-PA_11
5V5V

https://youtu.be/jL24IjT6LnI

Limitations

  • Since the rest of the RAM is about 50kbyte, maximum capacity of the game ROM is about 50kbyte.
  • The length of the file name up to 32 characters.
  • The number of files in the folder is up to 100.

Used Library

Committer:
beaglescout007
Date:
Sun Apr 03 07:45:29 2016 +0000
Revision:
0:3dac1f1bc9e0
Release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
beaglescout007 0:3dac1f1bc9e0 1 /*===================================================================*/
beaglescout007 0:3dac1f1bc9e0 2 /* */
beaglescout007 0:3dac1f1bc9e0 3 /* pNesX_Types.h : Type definitions for pNesX */
beaglescout007 0:3dac1f1bc9e0 4 /* */
beaglescout007 0:3dac1f1bc9e0 5 /* 1999/11/03 Racoon New preparation */
beaglescout007 0:3dac1f1bc9e0 6 /* */
beaglescout007 0:3dac1f1bc9e0 7 /*===================================================================*/
beaglescout007 0:3dac1f1bc9e0 8
beaglescout007 0:3dac1f1bc9e0 9 #ifndef PNESX_TYPES_H_INCLUDED
beaglescout007 0:3dac1f1bc9e0 10 #define PNESX_TYPES_H_INCLUDED
beaglescout007 0:3dac1f1bc9e0 11
beaglescout007 0:3dac1f1bc9e0 12 /*-------------------------------------------------------------------*/
beaglescout007 0:3dac1f1bc9e0 13 /* Type definition */
beaglescout007 0:3dac1f1bc9e0 14 /*-------------------------------------------------------------------*/
beaglescout007 0:3dac1f1bc9e0 15 #ifndef DWORD
beaglescout007 0:3dac1f1bc9e0 16 typedef unsigned long DWORD;
beaglescout007 0:3dac1f1bc9e0 17 #endif /* !DWORD */
beaglescout007 0:3dac1f1bc9e0 18
beaglescout007 0:3dac1f1bc9e0 19 #ifndef WORD
beaglescout007 0:3dac1f1bc9e0 20 typedef unsigned short WORD;
beaglescout007 0:3dac1f1bc9e0 21 #endif /* !WORD */
beaglescout007 0:3dac1f1bc9e0 22
beaglescout007 0:3dac1f1bc9e0 23 #ifndef BYTE
beaglescout007 0:3dac1f1bc9e0 24 typedef unsigned char BYTE;
beaglescout007 0:3dac1f1bc9e0 25 #endif /* !BYTE */
beaglescout007 0:3dac1f1bc9e0 26
beaglescout007 0:3dac1f1bc9e0 27 /*-------------------------------------------------------------------*/
beaglescout007 0:3dac1f1bc9e0 28 /* NULL definition */
beaglescout007 0:3dac1f1bc9e0 29 /*-------------------------------------------------------------------*/
beaglescout007 0:3dac1f1bc9e0 30 #ifndef NULL
beaglescout007 0:3dac1f1bc9e0 31 #define NULL 0
beaglescout007 0:3dac1f1bc9e0 32 #endif /* !NULL */
beaglescout007 0:3dac1f1bc9e0 33
beaglescout007 0:3dac1f1bc9e0 34 #endif /* !PNESX_TYPES_H_INCLUDED */
beaglescout007 0:3dac1f1bc9e0 35
beaglescout007 0:3dac1f1bc9e0 36
beaglescout007 0:3dac1f1bc9e0 37