Giter VIP home page Giter VIP logo

nestopia's Introduction

nestopia-libretro
-----------------
Nestopia is a cycle accurate emulator for the NES/Famicom.

This is the libretro port of the Nestopia emulator, based on the de facto
upstream Nestopia JG fork, which lives at: https://gitlab.com/jgemu/nestopia

The libretro port contains an additional overclocking feature.

Famicom Disk System
-------------------
FDS support requires the FDS BIOS to be placed in the "system" directory:
 system/disksys.rom

ADPCM Samples
-------------
Some games have ADPCM audio samples on the cartridge, which are not included in
the ROM data. In order to use such samples with Nestopia, you must extract the
samples into the correct location under the System directory. They are
required to be in the "nestopia/samples" subdirectory named after the .zip file
in MAME format:
  moepro.zip        system/nestopia/samples/moepro/
  moepro88.zip      system/nestopia/samples/moepro88/
  mptennis.zip      system/nestopia/samples/mptennis/
  terao.zip         system/nestopia/samples/terao/
  ftaerobi.zip      system/nestopia/samples/ftaerobi/

The location of the System directory depends on the frontend and platform in
use. Refer to the frontend documentation.

Contributing
------------
Changes to the libretro port should be contributed in this repository.
Please contribute any changes to the emulator core to the upstream repository.

Copyright
---------
Nestopia JG (GPL-2.0-or-later)
  Copyright (c) 2003-2008 Martin Freij
  Copyright (c) 2008-2018 Nestopia UE Contributors
  Copyright (c) 2020-2024 Rupert Carmichael

nes_ntsc (LGPL-2.1-or-later)
  Copyright (c) 2006-2007 Shay Green

nestopia's People

Contributors

blazeentertainment avatar carmiker avatar crashgg avatar crystalct avatar disastermo avatar ds22x avatar hizzlekizzle avatar hunterk avatar ilducci avatar inactive123 avatar jdgleaver avatar jdorigao avatar keithbowes avatar liberodark avatar libretroadmin avatar n7alpha avatar rdanbrook avatar realnc avatar ryunam avatar tacoschip avatar warmenhoven avatar webgeek1234 avatar yoshisuga 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

Watchers

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

nestopia's Issues

overclock question

the overclock logic is incorrect.

NST_SINGLE_CALL void Apu::Dmc::WriteReg2(const uint data)
{
regs.address = 0xC000 | (data << 6);
if (regs.address != 0)
{
overclockingIsSafe = true;
}
}

overclockingIsSafe will always be true because regs.address is guaranteed to be at least have a value of 0xC000

NST_SINGLE_CALL void Apu::Dmc::WriteReg3(const uint data)
{
regs.lengthCounter = (data << 4) + 1;
if (regs.lengthCounter != 0)
{
overclockingIsSafe = true;
}
}

same here. regs.lengthCounter will always be at least 1.

load ROMs not in db

this is an annoying behavior Nestopia has compared to other emus like fceumm: if a ROM is missing in the NstDatabase.xml it won't load at all.

I know the correct way to "fix" this is by adding a new entry in the db, however this is still an annoying process to repeat everytime you want to try a new patch.

As alternative, NES ROMs carry infos like the mapper inside the iNes header, so maybe we can fallback to that if there is no match with the db?

Game Crashing Nestopia

When attempting to launch Alfombra Magica, La (Spain) (Rev 1) (Gluk Video) (Unl) from the No-Intro set it simply fails to load content. Wondering if this can be remedied?

Implement Akerasoft Mapper 474 for NROM-383 and NROM-368

https://www.nesdev.org/wiki/NES_2.0_Mapper_474

I've created a mapper that maps 0x4020 to 0xFFFF to PRG ROM.
I called it Akerasoft Mapper 474. This is NROM-383.
It maps more than NROM-368. But an NROM-368 is also planned.

My prototype uses FLASH memory but is designed to be programmed before soldering and is not reflashable.

https://www.nesdev.org/wiki/NROM-368

My design however is this 64KB of ROM space:
Bank 0:
Memory 0x0000 - 0x3FFF (empty or ignored, all zeros?)
Bank 1:
Memory 0x4000 - 0x041F (empty or ignored, all zeros?)
Memory 0x4020 - 0x7FFF (PRG)
Bank 2:
Memory 0x8000 - 0xBFFF (PRG)
Bank 3:
Memory 0xC000 - 0xFFFF (PRG)

Mapper 474 submapper 0 - 0x4020 - 0xFFFF (NROM-383)
Mapper 474 submapper 1 - 0x4800 - 0xFFFF (NROM-368)

Arkanoid controller support

Presently quicknes is the only core able to play Arkanoid as it is the only core accepting directional pad inputs in place of the bundled controller.

Request: Add a shortcut for FDS disk-side switching or an option to auto switch disk sides (please read before replying)

Before replying please read the explanation for this request.

I know that on a PC, or any regular controller with 4 buttons or more, it's easy to assign the swap disk sides to a couple of unused keys. But the purpose of this request is because Nestopia also works with the NES Classic through Retroarch, and the original NES controller only has 2 buttons. Assigning the disk side change option to the A/B/Start/Select buttons cause problems because if you press any of those buttons during gameplay, it will unwillingly change or eject the disk, and that will cause many games to error-out when trying to load a new segment that's supposed to be on the disk-side you were using. This is specially true for RPGs that are constantly reading from the disk when entering battle scenes or houses.

This wouldn't a problem if Retroarch allowed for user-set double binds or button combinations, but it doesn't. It has a few pre-set button combinations that are being used for other things, but a user cannot set their own. So the only option left is for Nestopia to have a button combination of its own (Down+Start / Up+ Start should work fine to swap disk sides) or to have an option to auto swap sides like how the native NES Classic emulator does for FDS games.

is this an option that can be added for NES Classic users using the original 2-button controller?

Stereo biased to the right

Minor improvement, but the way nestopia is currently handling the fake stereo effect is a bit too intense to the right side making it sound more like right side mono. Compare the stereo separation of mesen and fceumm that's more left-right balanced.

Love the sound of this emulator, especially with the volume sliders you get.

Policeman (Spain) (En) (Gluk Video) (Unl) [graphical glitches]

Policeman (Spain) (En) (Gluk Video) (Unl) does not run correctly
1

here it is in another emulator

2

'Policeman (Spain) (En) (Gluk Video) (Unl).nes': Done.

CRC32: e0384f53

MD5: 5b6e7645d345619205c6781f8ecaceff

SHA1: ae61b5c5b2f42cbb97fcbb8b2abc311012dc63da

SHA256: 42453fd1efb2af9698bdb90f60d6c1fa127f9c6af443ea07c22a4861d74485b5

Policeman (Spain) (En) (Gluk Video) (Unl).nes

nestopia_libretro doesn't save input_libretro_device

Hello,

I seems that nestopia libretro core doesn't save or load values at input_libretro_device_* in retroarch.cfg.

e.g If I want to use the zapper as emulated device, it works when I select it in the menu, but the next time when I run retroarch with nestopia, it always revert back to auto.

All others settings are saved, but not those related to inputs.

I use retroarch 1.10.3 Windows 64bit with the latest build of nestopia_libretro available on the buildbot.

Super Gun (USA) (Unl)

Super Gun (USA) (Unl) will only work in Mesen

MD5: 16D8999C8B35C509FC6DD3568C0CEF93

error helpme

Hello very good, I am trying to compile the emulator but I have many errors, could someone help me

Here I leave a capture

thank you

Add SNES mouse emulation support

Since there have been a fair number of romhacks, including one for Maniac Mansion, that add support for the SNES mouse to NES games it would be nice to have that supported. While Mesen already has such support it would be nice to have support in Nestopia as well.

Mask Overscan only allow 0 4 8 12

Hello.
Thanks for reading my topic.
Currently Nestopia only allow change the mask overscan using values 0 4 8 12 16 20 24.
For some games being 4 digits is much high.
Please allow using any number value from 0 to 20 so for example is possible select 6 or 10.

Have an nice week.

Moero! Pro Yakyuu (JPN) (Jaleco Voice Samples Loading?)

@rdanbrook its been awhile! Hope all is well. You previously added "THIS" commit. But, it was kind of lost when the "hack" occurred on libretro awhile back. I was personally trying to get it up and running on my end, as far as running the samples. Not sure if it is fresh enough in your memory to remember anything about it? So far, I attempted to have etc/libretro/system/nestopia/samples/samples here in zip and in folder format, and load of the games that SHOULD trigger the samples, to no avail. Any input on this?

https://notabug.org/0ldsk00l/nestopia/commit/441a13a7544ec8807f3ede550f6db2326c2566dc

This video shows the before and after, WITH how the samples would usually be. I am hoping to be able to have success in running them, as well!

https://www.youtube.com/watch?v=JQAy6_ZLE3c

Versioning scheme

Well could you start to use versions like Major.Minor.Patch for your releases?

Screenshots not loading correctly on Steam OS

Previously taken screenshots and save-state thumbnails fail to load on Steam OS on Steam Deck. This issue does not occur for other cores in RetroArch and does not occur on Windows. Screenshots and save-state thumbnails are still being saved in the correct directories under the correct filenames and are viewable outside of RetroArch, but fail to load in RetroArch's user interface.

Database: only one peripheral per game allowed

I have Super Mario Bros/Duck Hunt/World Class Track Meet and the Zapper doesn't work for Duck Hunt. I've tracked down the problem in the NstDatabase.xml file (with an older version of the core, before NstDatabase.xml got baked-in):

<peripherals>
  <device type="zapper"/>
  <device type="powerpad"/>
</peripherals>

The second device overrides the first, so the Zapper doesn't work. However, if I delete the powerpad device (logical, as I don't have a USB PowerPad) or invert the order, the Zapper works fine.

However, Nestopia should support both (and other peripherals, if they exist) simultaneously.

Mute ultrasonic frequencies on the triangle channel. Reduce popping sounds on the DMC channel

This would be nice because games like Jackal has this popping sounds in the music there are other games that has it to Mesen has these options.

Mute ultrasonic frequencies on the triangle channel: This option mutes the triangle channel under certain conditions, which prevents it from causing popping sounds.

Reduce popping sounds on the DMC channel: Similar to the previous option, but for the DMC channel – this option prevents games from changing the output of the DMC channel too abruptly, which often causes popping sounds.

https://www.mesen.ca/docs/configuration/audio.html

Core Details not information about NstDatabase.xml

Nestopia core need NstDatabase.xml in "system firmware" path.
In Core \ Manage Cores not have information about NstDatabase.xml.
The user need understand NstDatabase.xml is required for load games.
That information need to be added in core.

Audio crackling on the latest Nestopia UE core on Wii RetroArch

The latest Wii RetroArch Nestopia UE core has audio crackling, I've tested with Super Mario Bros. 2 for example, audio crackling in the title screen. The previous version of the core works perfectly. The latest Wii RetroArch works if you take the Nestopia UE core file from the previous RetroArch version. The problem occurs with default Wii RetroArch settings.

Sound mode mono only output for left speaker

Hello.
Using Nestopia UE core 1.52 dd78611.
If Audio Output is Mono the sound output is only for left speaker.
If selecting Stereo both left and right speaker have sound output.

The correct is Mono being for both left and right speaker ? or Stereo not split sounds fx for each speaker side and does sound output with exact same sound in both left and right speaker ?

Thanks for reading.
Have an nice week.

Zapper input on pointer mode resets to center when horizontally is out of bounds

I tried to set my Zapper to be used as pointer instead of mouse to avoid changing the mouse sensitivity each time. I have a monitor with 1920x1080 resolution and because of the 4:3 aspect ratio when the cursor moves out of horizontal bounds of the rendered video, it resets to the center of the screen. If I change following option from: Video -> Scaling -> Core Provided to Video -> Scaling -> 16:9 then I don't have this issue but the video is streched. Also using mouse instead of pointer doesn't have this behavior, but I really prefer the pointer option.

[Windows] FDS games don't start if system path contains a special character

Hey!

If the disksys.rom file is in a path that contains a special character, FDS games will fail to boot on Windows.
As a test I moved the BIOS in a "é" folder on my desktop and changed Settings > Directory > System/BIOS path in RetroArch:

[INFO] [Environ]: SYSTEM_DIRECTORY: "C:\Users\B-S\Desktop\é".
[libretro INFO] Custom palette path: C:\Users\B-S\Desktop\é\custom.pal
[libretro INFO] custom.pal not found in system directory.
[INFO] [Environ]: SET_PIXEL_FORMAT: XRGB8888.
[libretro INFO] FDS BIOS path: C:\Users\B-S\Desktop\é\disksys.rom
[INFO] [CONTENT LOAD]: Removing temporary content file: D:\programmes\RetroArch\cache\Zelda no Densetsu - The Hyrule Fantasy (Japan).fds.
[ERROR] [CONTENT LOAD]: Failed to load content

Full log: retroarch_nestopia.log
It works fine on my Linux Mint VM however.

Nestopia UE core automatically not change disk side from B to A

I have played a game (Green Beret) and in begin is displayed message to change disk side to B being automatically changed to side B thus the game start, but after some stages the game need change to side A.
Is displayed message to change to side A, but the emulation core not change the disk side.

Update to 1.51.0

I'm not sure the best way to do this:

  1. Cherry pick the relevant changes from upstream.
  2. Rebase to use upstream.
  3. Create a submodule for use of Rupert Carmichael's backend.
  4. Create a submodule but also allow using the existing backend, sort like snes9x2005 does for the different APUs.

[3DS] Occasional crash on ROM load

When loading a ROM on the 3DS, the core will usually crash with an ARM11 exception. It looks like this is related to loading NstDatabase: it fails with 354fa2f, and earlier commits will fail in the same way if NstDatabase.xml is in the system directory.

Here's the dump:

Processor: ARM11 (core 0)
Exception type: prefetch abort (kernel panic)
Fault status: Debug event
Current process: 3dsx_app (0004001000021100)

Register dump:

r0             00000000            r1             00000000
r2             e6a83000            r3             00000000
r4             00000000            r5             ff539d88
r6             00000000            r7             00000001
r8             e6a81000            r9             08800000
r10            00000100            r11            fff2f2b4
r12            ee147460            sp             ff539d18
lr             fff1c76c            pc             fff1c7c0

cpsr           60000113            dfsr           000008ff
ifsr           00000002            far            7affffee
fpexc          40000700            fpinst         eefd7bc7
fpinst2        eefd7bc7

Code dump:

fff1c794:       e12fff1e        bx      lr
fff1c798:       e3510000        cmp     r1, #0, 0
fff1c79c:       0a000005        beq     0xfff1c7b8
fff1c7a0:       e1902f9f        ldrex   r2, [r0]
fff1c7a4:       e5812000        str     r2, [r1]
fff1c7a8:       e180cf91        strex   r12, r1, [r0]
fff1c7ac:       e35c0000        cmp     r12, #0, 0
fff1c7b0:       1afffffa        bne     0xfff1c7a0
fff1c7b4:       e12fff1e        bx      lr
fff1c7b8:       e320f000        nop     {0}
fff1c7bc:       e1a00000        nop                     ; (mov r0, r0)
fff1c7c0:       e12fff7e        bkpt    0xfffe


Stack dump:

ff539d18:  00 00 00 00 1c a5 f1 ff  00 00 00 00 00 80 81 08   |................|
ff539d28:  5c bb f7 ff 51 00 00 00  00 74 14 ee 38 4d f2 ff   |\...Q....t..8M..|
ff539d38:  00 10 a8 26 00 10 00 00  00 00 10 00 87 00 00 00   |...&............|
ff539d48:  24 e2 13 ee 64 74 14 ee  c0 9d 53 ff 5c bb f7 ff   |$...dt....S.\...|
ff539d58:  00 50 57 08 f4 02 00 00  88 9d 53 ff 5c bb f7 ff   |.PW.......S.\...|
ff539d68:  f4 02 00 00 00 50 57 08  00 00 00 00 00 00 00 00   |.....PW.........|
ff539d78:  00 90 86 08 30 00 00 00  7c 9e 53 ff 44 00 f2 ff   |....0...|.S.D...|
ff539d88:  b0 01 00 00 e0 8f f9 ff  1c ea f9 ff 5c bb f7 ff   |............\...|
ff539d98:  5c bb f7 ff f5 1b e0 e0  00 01 00 00 00 00 00 00   |\...............|
ff539da8:  00 00 00 00 00 90 86 08  30 00 00 00 24 d0 f1 ff   |........0...$...|
ff539db8:  1b 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539dc8:  00 80 86 08 00 80 39 07  5c bb f7 ff 2c 9e 53 ff   |......9.\...,.S.|
ff539dd8:  00 50 57 08 5c bb f7 ff  00 50 57 08 f4 02 00 00   |.PW.\....PW.....|
ff539de8:  00 00 00 00 00 90 86 08  00 50 57 08 f4 02 00 00   |.........PW.....|
ff539df8:  00 00 00 00 00 00 00 00  01 01 00 00 05 bb 00 00   |................|
ff539e08:  7c 9e 53 ff c0 0d f1 ff  00 00 00 00 00 00 00 00   ||.S.............|
ff539e18:  00 00 00 00 00 01 00 00  00 00 00 00 1b 00 00 00   |................|
ff539e28:  00 00 00 00 00 00 00 08  00 90 86 00 1b 00 00 00   |................|
ff539e38:  05 bb 00 00 5c bb f7 ff  7c 9e 53 ff 00 50 57 08   |....\...|.S..PW.|
ff539e48:  00 00 00 00 00 50 57 08  00 40 2f 00 00 00 00 00   |.....PW..@/.....|
ff539e58:  01 01 00 00 01 00 00 00  40 bb f7 ff 5c bb f7 ff   |........@...\...|
ff539e68:  00 90 86 08 bc 85 f0 ff  00 40 2f 00 01 01 00 00   |.........@/.....|
ff539e78:  03 00 00 00 00 00 00 00  00 90 ff ff e8 9e 53 ff   |..............S.|
ff539e88:  00 50 57 08 00 00 00 00  00 40 2f 00 03 00 00 00   |.PW......@/.....|
ff539e98:  94 82 f0 ff 00 a1 5e 00  ec a6 5e 00 f8 06 00 40   |......^...^....@|
ff539ea8:  01 00 00 00 01 00 00 00  00 00 00 00 c8 3b 00 40   |.............;.@|
ff539eb8:  01 00 00 00 03 00 00 00  00 00 00 00 00 40 2f 00   |.............@/.|
ff539ec8:  03 00 00 00 03 00 00 00  48 41 2f 00 00 a1 5e 00   |........HA/...^.|
ff539ed8:  ec a6 5e 00 0c 07 00 40  01 00 00 00 03 00 00 00   |..^....@........|
ff539ee8:  00 00 00 00 fc 00 00 40  01 00 00 00 00 50 57 08   |[email protected].|
ff539ef8:  00 00 00 00 00 40 2f 00  03 00 00 00 48 41 2f 00   |.....@/.....HA/.|
ff539f08:  00 a1 5e 00 ec a6 5e 00  80 34 2f 00 00 00 00 00   |..^...^..4/.....|
ff539f18:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539f28:  00 ed ff 0f 44 0f 10 00  48 24 3f 00 10 00 07 a0   |....D...H$?.....|
ff539f38:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539f48:  00 01 00 01 00 00 00 00  c8 10 fd ff 13 01 00 60   |...............`|
ff539f58:  00 00 00 00 20 9d 53 ff  00 78 14 ee 00 00 70 08   |.... .S..x....p.|
ff539f68:  00 01 00 00 b4 f2 f2 ff  f8 9c 53 ff 70 dd f1 ff   |..........S.p...|
ff539f78:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539f88:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539f98:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539fa8:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539fb8:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539fc8:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539fd8:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539fe8:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   |................|
ff539ff8:  00 07 00 40 00 00 c0 03                            |...@....|

I've attached the raw file, too.
crash_dump_00000014.dmp.zip

Don't bake the NstDatabase.xml file into the core

This is beyond stupid, and I just wasted hours of my time trying to get Micro Mages added to the database so that a few of my friends and I could play 4 players over netplay.

DO NOT DO THIS, configuration files are meant to be configured. RetroArch warns that the file is missing, and the docs prompt you to download it yourself. This is incredibly misleading and infuriating. The decision to do this is incredibly misguided, since it assumes the set of NES games is fixed, which it definitely isn't as homebrew and commercial games are still developed.

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.