Code Monkey home page Code Monkey logo

pocketnes's Introduction

PocketNES

NES emulator for GBA

pocketnes's People

Contributors

dwedit 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pocketnes's Issues

Failing to compile on Windows and MacOS

I just installed devkitPro and gba-dev, and attempted to run make. Tried on both f7e7cbb and 1ae2741.

% make
cache.c
In file included from /opt/devkitpro/libgba/include/gba.h:41,
                 from /Users/grayson/projects/ext/PocketNES/src/gba.h:7,
                 from /Users/grayson/projects/ext/PocketNES/src/includes.h:8,
                 from /Users/grayson/projects/ext/PocketNES/src/cache.c:1:
/opt/devkitpro/libgba/include/gba_systemcalls.h: In function 'BiosCheckSum':
/opt/devkitpro/libgba/include/gba_systemcalls.h:102:29: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'asm'
  102 |         register u32 result asm("r0");
      |                             ^~~
/opt/devkitpro/libgba/include/gba_systemcalls.h:102:29: error: implicit declaration of function 'asm' [-Wimplicit-function-declaration]
/opt/devkitpro/libgba/include/gba_systemcalls.h:104:47: error: 'result' undeclared (first use in this function)
  104 |                 __asm ("SWI     0x0d" :  "=r"(result) :: "r1", "r2", "r3");
      |                                               ^~~~~~
/opt/devkitpro/libgba/include/gba_systemcalls.h:104:47: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [cache.o] Error 1
make: *** [build] Error 2
% gcc --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

would you mind submitting pocketNes code sources, per version?

Not really an issue, heh.

An user requested that I update the pocketNes CPU core in NesDS, but before I go adding some 2013'ish version there. Is there any source that I can use as base, where I can more or less see supported games or known glitches?

git versioning is perfect for this kind of task, so users (beta testers) would keep a list of known working games, then I could update Nes cores just fine inmediately excluding any bugs that may arise pre-port or post-port

Thanks.

Region settings are not saved

Step by step:

  • Load pocketNESNenu.gba
  • Select any game from list
  • set "other settings->region" any other than US NTSC
  • Load another game: press "restart" to entry game-list.
    Region will be reset to US NTSC

tested on PocketNES 2020-1-4

flags and sprite/mem follow ROM header data is ignored in a single game compilation

With an EZ-Flash IV flashcart, it's a common scenario to build an emulator+rom compilation for each individual ROM since the emulator can exit back to the flashcart menu and then the game load is nearly instant, rather than copying megabytes of data to PSRAM before execution. Also there will be plenty of room for save states in the SRAM without contention from other games, and the additional storage space isn't an issue with an SD card.

When a single rom is added to PocketNES like this, the emulator ignores the ROM flags and sprite/mem follow values from the ROM header. If you add more than one ROM it's fine. I discovered this while writing my own PocketNES builder script here:
https://github.com/patters-syno/gba-emu-compilation-builders

This behaviour can also be observed using PocketNES Menu Maker to build a single ROM compilation, so it's not caused by my own code. I have verified that the ROM header data in the compilation is consistent with the expected values, so it seems that the emulator isn't acting on this information for some reason. Perhaps it's dependent on the game list selection code, but it probably shouldn't be.

Some build config fixes

The hexn, hex8 and number functions are also used by the crash checker. If CHEATFINDER and EDITFOLLOW are disabled, the build currently fails. Please see clbr/pocketnes@90594a0 for which parts need an additional "| CRASH" check (the inline change was specific to my toolchain, so you may not want to take that part).

ROMMENU 0 creates a broken emu

If I disable ROMMENU, everything else staying the same, the resulting build blackscreens. It stays interactive however - L+R loads the menu. Trying to track down why it fails. At least it seems to load the ROM correctly, mapper_number was correct.

Splash screen is offset wrong

If you build the latest PocketNES into a compilation with a splash screen, the splash screen is displayed offset to the right by about 20% and wrapped.

Salamander graphics issue

On Salamander (J), the bottom part of the screen showing the various ship power-ups should be static but it scrolls horizontally with the playfield and rolls around the screen. Since the power-ups are pivotal to the game experience this renders this particular game unplayable, and it's a favourite of mine. Hopefully it's something simple to fix. I noticed that this issue is present going back to your 2013 fork. PocketNES 9.98 renders this correctly, but you have made so many other improvements since then that it would be a pity to use that old version.

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.