Giter VIP home page Giter VIP logo

openfpga-nes's Introduction

NES for Analogue Pocket

Ported from the core originally developed by Ludvig Strigeus and heavily developed by @sorgelig, @greyrogue, @Kitrinx, @paulb-nl, and many more. Core icon by spiritualized1997. Latest upstream available at https://github.com/MiSTer-devel/NES_MiSTer

Please report any issues encountered to this repo. Most likely any problems are a result of my port, not the original core. Issues will be upstreamed as necessary.

Installation

Easy mode

I highly recommend the updater tools by @mattpannella and @RetroDriven. If you're running Windows, use the RetroDriven GUI, or if you prefer the CLI, use the mattpannella tool. Either of these will allow you to automatically download and install openFPGA cores onto your Analogue Pocket. Go donate to them if you can

Manual mode

To install the core, copy the Assets, Cores, and Platform folders over to the root of your SD card. Please note that Finder on macOS automatically replaces folders, rather than merging them like Windows does, so you have to manually merge the folders.

Usage

ROMs should be placed in /Assets/nes/common

PAL ROMs should boot, but there will be timing and sound issues as the core currently doesn't properly support PAL (proper support coming soon). I highly recommend you do not play PAL games, and instead use NTSC games (if they exist) at this time.

Features

Dock Support

Core supports four players/controllers via the Analogue Dock. To enable four player mode, turn on Use Multitap setting.

Mappers

This core has pairity with the MiSTer core's mapper support. See the full breakdown here. Please note that the VRC7 expansion audio chip is not supported in this core (but is in MiSTer) due to space constraints.

Save States/Sleep + Wake

Known as "Memories" on the Pocket, this core supports the creation and loading of save states for most mappers. See the full list in the Mappers section. By extension, the core supports Sleep + Wake functionality on the Pocket. In games with supported mappers, tapping the power button while playing will suspend the game, ready to be resumed when powering the Pocket back on.

Saves

Supports saves for most games and mappers. Saving on the NES is rather complicated due to the different scenarios for different mappers, so it's possible some less common mappers do not save correctly on this core. Please report all such issues to this repo.

Controller Turbo

By configuring the Turbo Speed controller option in Core Settings, you can use the X and Y buttons (by default) as A/B turbo buttons. The period for each of the settings in NTSC are below (PAL will have different timings):

Setting Period
0 Off
1 3 Hz
2 5 Hz
3 7.5 Hz
4 10 Hz
5 15 Hz
6 30 Hz

Expansion Audio

Expansion audio should be supported for every mapper except those that use VRC7. If you encounter a game that is not playing the expanded audio outside of VRC7, please report it.

Palette Options

The core has 5 palette options built in, changable in Core Settings/Palette. The palettes are known as:

  • Kitrinx 34 by Kitrinx
  • Smooth by FirebrandX (Default)
  • Wavebeam by NakedArthur
  • Sony CXA by FirebrandX
  • PC-10 Better by Kitrinx

You can load external palettes as well. This palette is stored at Assets/nes/agg23.NES/custom.pal, and can be selected by the sixth option (Custom).

For testing, or to temporarily load a new palette, you can choose the Load Custom Palette option (make sure to choose Core Settings/Palette/Custom). This palette selection is temporary, and will be reset when quitting and reopening the core.

Video Options

There are several options provided for tweaking the displayed video:

  • Hide Overscan - Hides the top and bottom 8 pixels of the video, which would normally be masked by the CRT. Adjusts the aspect ratio to correspond with this modification. This option does nothing in PAL mode
  • Edge Masking - Masks the sides of the screen in black, depending on the chosen option. The auto setting automatically masks the left side when certain conditions are met.
  • Square Pixels - The internal resolution of the NES is a 8:7 pixel aspect ratio (wide pixels), which roughly corresponds to what users would see on 4:3 display aspect ratio CRTs. Some games are designed to be displayed at 8:7 PAR (the core's default), and others at 1:1 PAR (square pixels). The Square Pixels option is provided to switch to a 1:1 pixel aspect ratio.
  • Extra Sprites - Allows an extra 8 sprites to be displayed per line (up to 16 from the original 8). Will decrease flickering in some games

Lightguns

Core supports virtual lightguns by enabling the "Use Zapper" setting. The crosshair can be controlled with the D-Pad or left joystick, using the A button to fire. D-Pad aim sensitivity can be adjusted with the "D-Pad Aim Speed" setting.

NOTE: Joystick support for aiming only appears to work when a controller is paired over Bluetooth and not connected to the Analogue Dock directly by USB.

openfpga-nes's People

Contributors

agg23 avatar ericlewis avatar iequalshane avatar terminator2k2 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

openfpga-nes's Issues

Save states (Memories) don't seem to work at all.

Version (or build number)

0.3.0

Steps to reproduce

No response

Expected Behavior

No response

Actual Behavior

Save states don't seem to work at all. I've tried it on a bunch of different games already, and none of them work with save states.

Trying it will give the error message: "Save not supported", and will corrupt the game and core, thus forcing a hard reboot of the Pocket.

Tried with common games like Super Mario Bros. 1, DuckTales, Contra and so on. None work.

Additional Context

No response

Scanlines or other CRT effects?

Ask a question

The "native" cores have various wonderful video effects, but I don't think this core has any?

Even changing pixel format, resolution and coverage has to be done via a .json file currently...

What are the chances things could be done in this area, like:

  • Simple 100%, 75%, 50%, 25% scanlines
  • More advanced CRT effects with bloom, bleed and bevel?

Elite NTSC version renders too short and garbled

Version (or build number)

1.0.0

Steps to reproduce

Install NES core
Install Elite ROM to Assets/nes/common
Open Elite on the Analogue Pocket

Expected Behavior

Elite running as normal

Actual Behavior

Elite opens, but the whole screen is shifted down a portion of the screen. Anything bellow a certain point in the ship view is rendered garbled.
20231029_173808
20231029_173759
20231029_173742

Additional Context

No response

Frequent Audio Popping

Version (or build number)

0.3.1

Steps to reproduce

I'm experiencing audio popping while playing games. intermittently.

Can be heard portably on bootup but it's really noticeable when playing on Dock, using headphones.

Tested across a few games, can be most prevalent when booting into a new rom but it does persist during gameplay. Not an issue on the Spiritualized NES core.

Captured gameplay showing the issue:

https://youtu.be/zk8KOBJDYlk

Expected Behavior

No audio pop

Actual Behavior

audio pop

Additional Context

No response

Alignment issue

Version (or build number)

1.0.0

Steps to reproduce

Run Mega Man VI, navigate to level-select screen.
Mario Bros seems okay. I also notice this with Mighty Final Fight.

Expected Behavior

Video is centered

Actual Behavior

There is a noticeable black bar running down the left of the screen. (pocket)

Additional Context

No response

Core resets after loading custom palettes

Version (or build number)

0.3.1

Steps to reproduce

  • Load the core

  • Load game

  • Select “Custom” in Palettes

  • Select “Load Custom Palette”

  • Select your palette

  • Go back to the game

  • Re-select the same palette

  • Repeat going back to the game and selecting the palette until the core resets the game as it’s random but does happen fast.

Expected Behavior

Core shouldn’t reset

Actual Behavior

Core resets upon loading the palette in some occasions.

agg23 vs Spiritualized NES core differences?

Ask a question

Just curious if there are any important differences between this agg23 NES core and the Spiritualized_NES core (latest is Spiritualized_NES_1.0.2_2022_11_08). I assume both will continue to be developed in parallel?

Saves are wiped

Version (or build number)

0.3.0

Steps to reproduce

  • Open a game with a save
  • Get to a point where it saves
  • Quit the core
  • Open again
  • The save is gone

Expected Behavior

The save should be present

Actual Behavior

The save is lost

Additional Context

No response

Incorrect Audio in some games (noticed in Mega Man IV)

Version (or build number)

0.3.1

Steps to reproduce

we discussed this on discord, at the very least the audio is off in mega man IV and was confirmed by you. easily check by jumping and todman's stage music is way off.

Expected Behavior

audio should sound identical to the NES/ Spirtualized core.

Actual Behavior

Audio at least in mega man IV is just plain wrong vs the original.

Additional Context

No response

Castlevania 3 sprite missing

Version (or build number)

0.1.1

Steps to reproduce

No Intro Castlevania 3 USA ROM
Player sprite is missing

Expected Behavior

No response

Actual Behavior

Player sprite is not shown

Additional Context

No response

SMB3 Romhacks not working

Version (or build number)

0.1.1

Steps to reproduce

First I verified I had the correct ROM version(s) and matched the hash to the listings on the following romhacks:
Super Mario Ultimate
Mario Adventure

I was able to successfully patch the ROMs and test in an emulator on my PC prior to loading them onto my Pocket.

Expected Behavior

Games to launch and play successfully.

Actual Behavior

In Mario Adventure, the music plays, but input is unresponsive and the screen is black.
In Super Mario Ultimate, it's stuck in a boot loop. After displaying the "THIS HACK IS NOT TO BE SOLD!" screen, the graphics get scrambled and it resets.

Additional Context

I also verified that the base ROMs used will run just fine with the core and I've successfully ran some Zelda II romhacks on my pocket such as Zelda II Redux.

Cheat Support

Ask a question

I remember a while back you were looking at adding cheat support. Is this still planned?

-Rob

Humming sound using Agg NES core when docked with Analogue Pocket

Version (or build number)

Current

Steps to reproduce

Hi, I purchased an Analogue dock for my gitd pocket and set it up with various cores. I noticed that there’s a humming sound coming out of my tv whenever I use the agg nes core. This doesn’t happen with the cartridge or other cores (PC engine, snes, genesis, sega master etc.) Also, this is happening when I was plugging in my 8bit Do send Bluetooth controller.

Expected Behavior

No humming sound ha

Actual Behavior

Humming sound coming from tv. It stops if I use a different core or go to the pocket menu

Additional Context

No response

Can't seem to save state in several games

Version (or build number)

0.1.1

Steps to reproduce

Tried hitting analogue+up to save state in Ninja Gaiden, Dragon Warrior, and Final Fantasy, and all three give a Save Failed error. These are the only games I've tried so far.

Expected Behavior

No response

Actual Behavior

See Steps to reproduce. Pretty straightforward :)

Additional Context

No response

Incorrect, large OAM implementation

The MiSTer core has an extremely large OAM implementation that does not mirror the hardware at all. It wastes a ton of space and does simultaneous access to many addresses at once, requiring it to be implemented as a massive register instead of RAM. This consumes around 27% of the Pocket's resources.

image

This was introduced in MiSTer-devel/NES_MiSTer@922cdcb, which added extra sprite functionality to the core.

Boulder Dash grey screen.

Version (or build number)

0.1.1

Steps to reproduce

Attempt to load a Boulder Dash USA ROM file.

Expected Behavior

The game to load in a playable state.

Actual Behavior

The game hangs with a grey screen.

Additional Context

The original upstream MiSTer core doesn't seem to have any issues open for this game, so I figured I'd open an issue here first.

Konami VRC7 support?

Ask a question

im not sure if its a bug but Lagrange Point has no audio at all.
If the mapper hasnt been implemented yet, its understandable since its for only one game.
sorry for the confusion if thats the reason.
thank you for all your had work.

Turbo A and B button mapping

Would be fantastic for my old hands if I could map the other two face buttons to rapid fire A and B in the future!

PAL Support

Version (or build number)

agg23.NES_0.3.1_2022-12-07

Steps to reproduce

  • Start the Analogue Pocket
  • Navigate into openFGPA/NES
  • Run Core
  • Select a game (I've tested with Super Mario Bros. (Europe)
  • Start to play

Expected Behavior

Game is running fine.

Actual Behavior

Game is actually running faster than expected. It can be witnessed both from the sound, playing faster and the remaining time clock decreasing at a faster rate.

Additional Context

No response

Unable to see NES as system in menu

Version (or build number)

0.1.1

Steps to reproduce

Copied over zip contents and then added rom to assets/common

Expected Behavior

I expected to see NES listed as a system in the analogue for settings

Actual Behavior

I can load a game but have no core settings. The NES is not listed as a system in my analogue pause menu or menus in general. The only thing I can do is launch NES rom

Additional Context

No response

Framework error

Ask a question

I assume it is something I am doing wrong but I am getting an error when loading roms in the nes core. It reads "Error in framework can't find bitstream" for every rom I have tried.

star tropics

Version (or build number)

latest

Steps to reproduce

no sound
cannot name and save name in game slot or start game

Expected Behavior

create name in game slot and start game

Actual Behavior

cannot get past new game creation

Additional Context

No response

Sleep function resets game to title screen.

Version (or build number)

0.3.0

Steps to reproduce

No response

Expected Behavior

No response

Actual Behavior

You can put the Pocket to sleep while playing NES games.

But, when waking it up, it will reset the game to the title screen, rendering the feature useless.

Tried with a whole bunch of games, all common.

Additional Context

No response

wonderswan: Error in framework Chip32: No B&W BIOS found

Version (or build number)

1.0.1

Steps to reproduce

  1. Installing the wonderswan core using Pocket Sync on Mac
  2. load up a rom in the common folder
  3. obeserve

Expected Behavior

the core runs successfully

Actual Behavior

Error in framework Chip32: No B&W BIOS found message with a black background

Additional Context

No response

SMB 3 Battery Hack Not Running

Version (or build number)

0.1.0

Steps to reproduce

  • Super Mario Bros. 3 (USA).nes from Nintendo Entertainment System NES Roms (Europe/USA)
  • SMB3_Battery Hack_v7 from romhacking.net
  • Patch with Lunar IPS v1.03

Expected Behavior

Patched rom runs on MiSTer NES core

Actual Behavior

Patched rom does not run on Pocket NES core. I get a black screen

Additional Context

n/a

Square pixels/8:7 aspect ratio support

Ask a question

It'd be awesome if your NES core supported square pixels, as seen in the SNES core, since many games look significantly better in this aspect ratio.

Rad Racer boots in different states depending on most recently loaded ROM

Version (or build number)

1.0.0

Steps to reproduce

-Use RetroDriven/Pocket_Updater v1.5.6 to install this core on a formatted memory card
-Run this core from the FPGA menu, as normal, and select (no-intro verified) "Rad Racer (USA)"
-Title screen shows, as expected, followed by the vehicle selection screen several seconds later
-Access the system menu and quit the core
-Run the core once more and select the same ROM
-Title screen is skipped and execution proceeds from the vehicle selection screen
-Access the system menu and quit the core
-Run the core once more and select (one that I know works, but there may be others) the ROM "Racket Attack (USA)"
-Allow the game to load
-Access the system menu and quit the core
-Run the core again and select "Rad Racer (USA)" once more
-Title screen shows, as expected, followed by the vehicle selection screen several seconds later
-Other ROMs seem to have other effects on the boot state of Rad Racer

Expected Behavior

The Rad Racer ROM boots to the title screen 100% of time on ROM load.

Actual Behavior

The Rad Racer ROM boots in a variety of states (perhaps according to the state of RAM?):

  • The title screen
  • The vehicle select screen (this is the most common)
  • A grey screen that's unresponsive to game controls (happened once and can't reproduce)
  • The ending sequence of the game! (happened once and can't reproduce)

Additional Context

Is there something odd about this game that I don't know? Is there a race condition (no pun intended) coded into the front-end or something? Or is this behavior I just happened to notice indicative of an issue with the core?

The reason I suspect the core is that the one time the game booted to the ending sequence, I used the system menu to "Reset core" multiple times and it simply reset the ending sequence every time.

missing Load Cartridge in Core Settings

Ask a question

Great work on the core! It seems to be the first I've seen that doesn't have Load Cartridge in the Core Settings menu, though, meaning you have to quit and restart entirely to change games, unless I'm missing something super obvious.

Is this something end users can add in the Core files? (I dug around the files for your SNES core looking for where that might be hidden and couldn't find anything obvious!)

Reset option

Add a Core Setting to reset the core, same as pressing the reset button on the console

missing sprites in Castlevania III

Version (or build number)

0.1.0

Steps to reproduce

load Castlevania III, any version. start game, enter name, watch intro sequence play. Simon will be invisible, but his whip will not.

Expected Behavior

Simon should have appeared.

Actual Behavior

Simon did not appear.

Additional Context

Other enemies and sprites appear.

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.