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_logo.cpp : pNesX Logo image data(4bit bmp) */
beaglescout007 0:3dac1f1bc9e0 4 /* */
beaglescout007 0:3dac1f1bc9e0 5 /* 2016/1/20 Racoon */
beaglescout007 0:3dac1f1bc9e0 6 /* */
beaglescout007 0:3dac1f1bc9e0 7 /*===================================================================*/
beaglescout007 0:3dac1f1bc9e0 8 extern const unsigned char pNesX_logo[];
beaglescout007 0:3dac1f1bc9e0 9
beaglescout007 0:3dac1f1bc9e0 10 const unsigned char pNesX_logo[] =
beaglescout007 0:3dac1f1bc9e0 11 {
beaglescout007 0:3dac1f1bc9e0 12 0x42,0x4D,0x4A,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x6A,0x00,0x00,0x00,0x28,0x00,
beaglescout007 0:3dac1f1bc9e0 13 0x00,0x00,0x63,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 14 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x00,
beaglescout007 0:3dac1f1bc9e0 15 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xB0,0xF8,0x00,0x2F,0xAD,0xF5,0x00,0x2D,0xA7,
beaglescout007 0:3dac1f1bc9e0 16 0xEC,0x00,0x2A,0x9C,0xDD,0x00,0x26,0x8A,0xC3,0x00,0x22,0x7A,0xAC,0x00,0x1B,0x5B,
beaglescout007 0:3dac1f1bc9e0 17 0x81,0x00,0x14,0x40,0x5A,0x00,0x0D,0x26,0x35,0x00,0x0B,0x18,0x20,0x00,0x09,0x11,
beaglescout007 0:3dac1f1bc9e0 18 0x16,0x00,0x08,0x0D,0x0F,0x00,0x08,0x08,0x08,0x00,0x9C,0xCC,0xC5,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 19 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 20 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 21 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xCC,
beaglescout007 0:3dac1f1bc9e0 22 0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 23 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 24 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 25 0x00,0x00,0x5C,0xCC,0xC9,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 26 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 27 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 28 0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xCC,0xCC,0x50,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 29 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 30 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 31 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0xCC,0xCC,0x70,0x24,0x54,
beaglescout007 0:3dac1f1bc9e0 32 0x30,0x00,0x00,0x02,0x33,0x33,0x20,0x00,0x00,0x02,0x33,0x33,0x31,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 33 0x24,0x45,0x54,0x31,0x00,0x00,0x00,0x00,0x23,0x45,0x54,0x43,0x00,0x00,0x23,0x33,
beaglescout007 0:3dac1f1bc9e0 34 0x33,0x30,0x00,0x00,0x01,0x33,0x33,0x33,0x20,0x00,0x00,0x00,0x00,0x00,0x05,0xCC,
beaglescout007 0:3dac1f1bc9e0 35 0xCC,0x94,0x8B,0xCC,0x97,0x30,0x00,0x06,0x99,0x99,0x82,0x00,0x00,0x06,0x99,0x99,
beaglescout007 0:3dac1f1bc9e0 36 0x95,0x00,0x00,0x05,0x8A,0xCC,0xCB,0x98,0x62,0x00,0x00,0x15,0x8A,0xBC,0xCC,0xB9,
beaglescout007 0:3dac1f1bc9e0 37 0x74,0x00,0x48,0x99,0x99,0x95,0x00,0x00,0x03,0x89,0x99,0x99,0x60,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 38 0x00,0x00,0x03,0x9C,0xCC,0xCA,0xCC,0xCC,0xCC,0xA5,0x10,0x04,0xBC,0xCC,0xC5,0x00,
beaglescout007 0:3dac1f1bc9e0 39 0x00,0x18,0xCC,0xCC,0xC7,0x00,0x01,0x6C,0xCC,0xCC,0xCC,0xCC,0xC9,0x51,0x00,0x5B,
beaglescout007 0:3dac1f1bc9e0 40 0xCC,0xCC,0xCC,0xCC,0xCC,0x73,0x04,0x9C,0xCC,0xCA,0x41,0x00,0x05,0xCC,0xCC,0xCB,
beaglescout007 0:3dac1f1bc9e0 41 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xCC,0xCC,0xCC,0xCC,0xCC,0xCB,0x51,0x02,
beaglescout007 0:3dac1f1bc9e0 42 0x8C,0xCC,0xC7,0x10,0x00,0x4A,0xCC,0xCC,0xC9,0x20,0x03,0x9C,0xCC,0xCA,0x88,0xCC,
beaglescout007 0:3dac1f1bc9e0 43 0xCC,0xB6,0x10,0x7C,0xCC,0xCC,0x77,0x7B,0xCC,0xC7,0x20,0x49,0xCC,0xCC,0x94,0x00,
beaglescout007 0:3dac1f1bc9e0 44 0x06,0xCC,0xCC,0xC8,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x5C,0xCC,0xCC,0xC8,0x79,
beaglescout007 0:3dac1f1bc9e0 45 0xCC,0xCC,0xA4,0x00,0x6C,0xCC,0xC9,0x10,0x00,0x6C,0xCC,0xCC,0xCC,0x50,0x04,0xCC,
beaglescout007 0:3dac1f1bc9e0 46 0xCC,0xC5,0x22,0x59,0x99,0x87,0x30,0x69,0xCC,0xC8,0x20,0x15,0xBC,0xCC,0x60,0x04,
beaglescout007 0:3dac1f1bc9e0 47 0xAC,0xCC,0xC9,0x40,0x28,0xCC,0xCC,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,
beaglescout007 0:3dac1f1bc9e0 48 0xCC,0xCC,0x92,0x02,0x7C,0xCC,0xC8,0x10,0x4C,0xCC,0xCC,0x50,0x02,0x8C,0xCC,0xCC,
beaglescout007 0:3dac1f1bc9e0 49 0xCC,0x71,0x05,0xCC,0xCC,0xA1,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x44,0x11,0x35,
beaglescout007 0:3dac1f1bc9e0 50 0xAC,0xCC,0x91,0x00,0x49,0xCC,0xCC,0x94,0x3B,0xCC,0xCC,0xB4,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 51 0x00,0x00,0x00,0x17,0xCC,0xCC,0x80,0x00,0x39,0xCC,0xCB,0x40,0x28,0xCC,0xCC,0x70,
beaglescout007 0:3dac1f1bc9e0 52 0x04,0xBC,0xCC,0xCC,0xCC,0x93,0x03,0xBC,0xCC,0xC6,0x66,0x66,0x66,0x66,0x65,0x00,
beaglescout007 0:3dac1f1bc9e0 53 0x01,0x35,0x67,0x9C,0xCC,0xCC,0xC3,0x00,0x05,0x9C,0xCC,0xC8,0x6C,0xCC,0xCC,0x82,
beaglescout007 0:3dac1f1bc9e0 54 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0xCC,0xCC,0x92,0x00,0x17,0xCC,0xCC,0x70,
beaglescout007 0:3dac1f1bc9e0 55 0x16,0xCC,0xCC,0x92,0x06,0xCC,0xCC,0xCC,0xCC,0xC5,0x02,0x8C,0xCC,0xCC,0xCC,0xCC,
beaglescout007 0:3dac1f1bc9e0 56 0xCC,0xCC,0xC7,0x10,0x06,0x9C,0xCC,0xCC,0xCC,0xCC,0xA2,0x00,0x00,0x5A,0xCC,0xCC,
beaglescout007 0:3dac1f1bc9e0 57 0xCC,0xCC,0xCC,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x8C,0xCC,0xC5,0x00,
beaglescout007 0:3dac1f1bc9e0 58 0x04,0xCC,0xCC,0x93,0x04,0xBC,0xCC,0xC5,0x18,0xCC,0xCC,0xCC,0xCC,0xC7,0x10,0x6C,
beaglescout007 0:3dac1f1bc9e0 59 0xCC,0xCC,0x99,0x99,0x9C,0xCC,0xCB,0x30,0x4B,0xCC,0xCC,0xCC,0xCC,0xC9,0x50,0x00,
beaglescout007 0:3dac1f1bc9e0 60 0x00,0x05,0x9C,0xCC,0xCC,0xCC,0xCC,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 61 0x7C,0xCC,0xC8,0x30,0x04,0xBC,0xCC,0xB3,0x02,0x8C,0xCC,0xC7,0x4C,0xCC,0xCC,0x8C,
beaglescout007 0:3dac1f1bc9e0 62 0xCC,0xC9,0x30,0x39,0xCC,0xCA,0x53,0x33,0x39,0xCC,0xCC,0x40,0x5C,0xCC,0xCC,0xB9,
beaglescout007 0:3dac1f1bc9e0 63 0x87,0x63,0x10,0x00,0x00,0x00,0x59,0xCC,0xCC,0xCC,0xC9,0x20,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 64 0x00,0x00,0x00,0x00,0x5C,0xCC,0xCC,0x74,0x16,0xCC,0xCC,0xC4,0x00,0x6C,0xCC,0xC8,
beaglescout007 0:3dac1f1bc9e0 65 0x7C,0xCC,0xCB,0x5C,0xCC,0xCC,0x50,0x06,0xCC,0xCC,0x82,0x00,0x29,0xCC,0xCC,0x50,
beaglescout007 0:3dac1f1bc9e0 66 0x4C,0xCC,0xC8,0x43,0x23,0x31,0x00,0x00,0x00,0x00,0x05,0xBC,0xCC,0xCC,0xC7,0x10,
beaglescout007 0:3dac1f1bc9e0 67 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xCC,0xCC,0xCC,0x9C,0xCC,0xCC,0xC4,
beaglescout007 0:3dac1f1bc9e0 68 0x00,0x4C,0xCC,0xCC,0xBC,0xCC,0xC8,0x28,0xCC,0xCC,0x70,0x01,0x7C,0xCC,0xC8,0x54,
beaglescout007 0:3dac1f1bc9e0 69 0x6C,0xCC,0xCC,0x40,0x07,0xCC,0xC8,0x42,0x38,0xCC,0x98,0x50,0x00,0x00,0x04,0xCC,
beaglescout007 0:3dac1f1bc9e0 70 0xCC,0xCC,0xCB,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xCC,0xCC,0xAC,
beaglescout007 0:3dac1f1bc9e0 71 0xCC,0xCC,0xCC,0x93,0x00,0x18,0xCC,0xCC,0xCC,0xCC,0xC6,0x16,0xCC,0xCC,0xA3,0x00,
beaglescout007 0:3dac1f1bc9e0 72 0x26,0xBC,0xCC,0xCC,0xCC,0xCC,0xC8,0x20,0x04,0x9C,0xCC,0xA8,0x9C,0xCC,0xCB,0x40,
beaglescout007 0:3dac1f1bc9e0 73 0x00,0x00,0x06,0xCC,0xCC,0xCC,0xCC,0xA5,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 74 0x05,0xCC,0xCC,0x77,0xCC,0xCC,0xCC,0x61,0x00,0x06,0xCC,0xCC,0xCC,0xCC,0xA4,0x03,
beaglescout007 0:3dac1f1bc9e0 75 0xAC,0xCC,0xC5,0x00,0x01,0x58,0xCC,0xCC,0xCC,0xCC,0x94,0x10,0x01,0x37,0xCC,0xCC,
beaglescout007 0:3dac1f1bc9e0 76 0xCC,0xCC,0xC7,0x20,0x00,0x00,0x08,0xCC,0xCC,0xCC,0xCC,0xCA,0x51,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 77 0x00,0x00,0x00,0x00,0x01,0x77,0x77,0x72,0x47,0x89,0x86,0x20,0x00,0x04,0xCC,0xCC,
beaglescout007 0:3dac1f1bc9e0 78 0xCC,0xCC,0x81,0x02,0x7C,0xCC,0xC7,0x10,0x00,0x01,0x57,0x89,0x98,0x76,0x30,0x00,
beaglescout007 0:3dac1f1bc9e0 79 0x00,0x00,0x46,0x79,0x99,0x87,0x62,0x00,0x00,0x00,0x3B,0xCC,0xCC,0x87,0xCC,0xCC,
beaglescout007 0:3dac1f1bc9e0 80 0xB5,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 81 0x00,0x02,0x8C,0xCC,0xCC,0xCC,0x60,0x00,0x6C,0xCC,0xC9,0x30,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 82 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0xCC,
beaglescout007 0:3dac1f1bc9e0 83 0xCC,0x72,0x7C,0xCC,0xCA,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 84 0x00,0x00,0x00,0x00,0x00,0x01,0x6C,0xCC,0xCC,0xCC,0x30,0x00,0x4A,0xCC,0xCC,0x50,
beaglescout007 0:3dac1f1bc9e0 85 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 86 0x00,0x01,0x8C,0xCC,0xCC,0x50,0x38,0xCC,0xCC,0x94,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 87 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4B,0xCC,0xCC,0xC8,0x10,0x00,
beaglescout007 0:3dac1f1bc9e0 88 0x08,0xCC,0xCC,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 89 0x00,0x00,0x00,0x00,0x00,0x03,0x9C,0xCC,0xCA,0x30,0x03,0x8C,0xCC,0xCA,0x40,0x00,
beaglescout007 0:3dac1f1bc9e0 90 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0xCC,
beaglescout007 0:3dac1f1bc9e0 91 0xCC,0xC6,0x00,0x00,0x06,0xCC,0xCC,0x93,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 92 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xCC,0xCC,0xC8,0x20,0x00,0x49,
beaglescout007 0:3dac1f1bc9e0 93 0xCC,0xCC,0x94,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 94 0x00,0x00,0x06,0x88,0x88,0x83,0x00,0x00,0x03,0x88,0x88,0x84,0x00,0x00,0x00,0x00,
beaglescout007 0:3dac1f1bc9e0 95 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x88,0x88,
beaglescout007 0:3dac1f1bc9e0 96 0x86,0x00,0x00,0x14,0x88,0x88,0x87,0x30,0x00,0x00
beaglescout007 0:3dac1f1bc9e0 97 };
beaglescout007 0:3dac1f1bc9e0 98
beaglescout007 0:3dac1f1bc9e0 99