Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- nSide v009r05 (2015-10-08)
- A fork of higan v095 by byuu (http://byuu.org/emulation/higan/), which was
- renamed to exclude "higan" at byuu's request.
- Individual emulators are also renamed to the following:
- bnes -> nSide-fc
- bsnes -> nSide-sfc
- bgb -> nSide-gb
- bgba -> nSide-gba
- nSide adds new devices to the Famicom emulator's controller ports. The supported
- devices are:
- *Standard controller
- *Four Score
- *Zapper (port 2 only)
- *Power Pad (port 2 only)
- In addition, it adds the Famicom expansion port for its own devices. The only
- expansion port devices supported are:
- *Standard controller (counts as Player 3)
- *4-Players Adaptor
- *Beam Gun (Zapper)
- *Family Trainer (Power Pad)
- *VS. Panel (VS. arcade games only; if you try to select this for a Famicom or
- PlayChoice-10 game, it instead selects None, though the menu does not properly
- recognize that the device change failed)
- Please be aware that a great majority of Famicom and NES games support the use
- of Player 3 and Player 4 as substitutes for Player 1 and Player 2, including
- ones that use the NES Four Score such as A Nightmare on Elm Street. If the
- expansion slot is not explicitly set to "None", this can result in Player 3's
- controller controlling both Player 1 and Player 3.
- The Export Memory functions for the Famicom and Super Famicom emulators now
- export a limited selection of PPU registers in BML format and expansion chip
- memory (except for the NEC DSPs). The Game Boy and Game Boy Advance emulators
- will also dump their RAMs but not registers.
- (This function was removed in higan v094r06. Preserved in nSide for the benefit
- of 3rd-party tools that depend on it)
- nSide uses different directories for storing configuration settings, save
- states, and shaders so as to not conflict with higan.
- In Windows, the configuration files are in "%AppData%\nSide-t".
- You will need the GBA BIOS to play Game Boy Advance games. This is no different
- from higan.
- GBA BIOS
- sha256: fd2547724b505f487e6dcb29ec2ecff3af35a841a77ab2e85fd87350abd36570
- In addition, the PlayChoice-10 takes 3 files:
- BIOS for dual-screen
- sha256: 12200cee0965b871d2a47ac09ef563214d1b1a8355beda8bd477e21a561682e8
- BIOS for single-screen
- sha256: 64c1a7debf4729941c60e4c722ed61282ebd2f36928a30e55c9631477ce522ac
- Composite character ROM (3 files 8P + 8M + 8K put together for a 24KB ROM)
- sha256: a8bf9c58e31dee0a60a2d480bd707c323212fba8963cc35a47423cadd1d7ed26
- Composite palette ROM (3 files 6F + 6E + 6D put together—each byte is the
- corresponding nybble with a leading 0—for a 768-byte ROM)
- sha256: 9f639da2e0248431b59a9344769a38fad8b64742ce6e0e44534e6918b8977a0a)
- ...but if you do not wish to emulate the PlayChoice-10, the above 3 files are
- not necessary. Keep in mind that PlayChoice-10 emulation is still incomplete, so
- these files will not be very useful right now.
- Known Bugs:
- Famicom:
- *Saving a state while the Zapper or Beam Gun is connected will cause the
- emulator to hang. If the cursor was captured, it can be hard to rescue.
- *The VS. Zapper with its own separate protocol is badly supported (timing of
- light sensor is not well understood).
- Super Famicom:
- *Magical Drop (JP) (1.0) does not play voice effects, and it hangs when trying
- to show the Game Over screen in Endless Mode (とことんモード).
- Inherited from higan v094.
- *Super Bonk's demo sequence is mis-timed. Bonk falls short of entering a pipe,
- which ruins the rest of the demo as he continues reading inputs and gets stuck
- in the area above the pipe. It is likely that this bug is related to the
- Magical Drop bug above.
- Inherited from higan v094.
- Game Boy:
- *When loading a Game Boy game in Game Boy Color mode, colors are applied to
- the wrong areas, making game displays terrible on the eyes.
- Inherited from higan v094.
- Game Boy Advance:
- *The Classic NES Series games will not work. Loading them would cause higan
- to hang, and so too do they cause nSide to hang.
- There is still much to know about the Game Boy Advance's inner workings, so
- it is recommended that you either use mGBA (by endrift) to play these games,
- or play the original Famicom/NES versions instead.
- Inherited from higan v095.
- ===========================
- Changes from higan: General
- ===========================
- Changed "higan" to "nSide" and added a Contributors field for Ryphecha and
- Cydrak, which were credited in comments in fc.hpp and gba.hpp, on the
- Configuration Settings Advanced tab and Cocoa About box.
- Credited blargg and Jonas Quinn as contributors to higan (blargg wrote the
- DSP code for the compatibility and performance cores, and Jonas Quinn
- contributed many fixes for the SFC DSPs and the Game Boy).
- There may still be more that I am missing, so let me know if you or someone
- else needs to be credited.
- Moved "<configpath>/higan/library.bml" to "<configpath>/nSide/library.bml".
- Reformatted the "About" text to show contributors to higan and show which
- program nSide branched from.
- Renamed "{game}/higan" folder for save states to "{game}/nSide".
- Renamed the ethos-based UI to "nSide-e", imported tomoko with hiro, and
- re-branded it as "nSide-t".
- Notable, nall v094r37 dropped nall::group, which phoenix depends on, so
- moved nall::group's definition into phoenix/core/core.hpp.
- Renamed icarus to "cart-pal".
- ============================
- Changes from higan: nSide-fc
- ============================
- Revised emulator name and copyright information.
- Moved fc/video/*, fc/audio/*, and fc/input/* into fc/system and changed
- references to point to the new locations.
- Changed the Serializer version from 2 to 127. This step is necessary because
- of the addition of the Famicom's expansion port. Why 127 instead of 3? To
- account for official revisions in the future.
- The read registers at $4016 and $4017 only have 5 bits each, not 6, so
- cpu.mdr() is ANDed with 0xe0 instead of 0xc0.
- Commented out a line in ppu_read for the OAMREAD register that was making
- Magic Floor's ball sprite behave strangely. The mystery of this behavior is
- still not solved, however: a shadow ball copies the ball's previous X
- coördinate upon update, which does not appear in Nestopia or FCEUX.
- Added emulation of PPU open bus behavior according to the notes blargg wrote
- when he published his ppu_open_bus demo. ppu.status.mdr will decay to 0x00 if
- not refreshed after about 600 milliseconds, and reading from the palette will
- put the 2 highest MDR bits into the read value.
- Changed PPU timing to account for the dummy tick in front of every scanline.
- bnes had pixel rendering on ticks 0-255 of every scanline, whereas an actual
- PPU renders on ticks 1-256.
- Added direct color support (when rendering is disabled and PPUADDR points to
- the palette at $3F00-$3FFF, the selected color will render instead of the
- background color).
- Added PAL support, which reduces games to 50Hz and swaps the red and green
- color emphasis bits.
- Overhauled the device implementation to depend on controller objects like in
- the Super Famicom emulator.
- Added the ability to change controllers for the Famicom, which required
- adding an Interface#connect method that calls Input#connect.
- Added Four Score support. It is split into 2 devices, so for best results,
- plug a Four Score into both slots.
- Added support for the Zapper/Beam Gun.
- Added support for the Power Pad/Family Trainer.
- Added support for the 4-Players Adaptor.
- Light is defined as any Famicom color with a luma of 0x20 or greater and a
- chroma less than 0x0D, not taking into account emphasis or RGB PPUs.
- Added new board types:
- NES-EVENT // Nintendo World Championships 1990
- NES-QJ // Super Spike V'Ball / Nintendo World Cup
- NES-SF1ROM // Bases Loaded II (1.2)
- HVC-UN1ROM // 戦場の狼 (Senjou no Ookami) (JP)
- PAL-ZZ // Super Mario Bros. / Tetris / Nintendo World Cup (EU)
- BANDAI-74*161/02/74 // Oeka Kids (JP)
- BANDAI-74*161/161/32 // Kamen Rider Club (JP)
- BANDAI-PT-554 // Family Trainer 3 - Aerobics Studio (JP)
- IREM-74*161/161/21/138 // ナポレオン戦記 (Napoleon Senki) (JP)
- IREM-G101 // Image Fight (JP)
- IREM-H3001 // 大工の源さん2 (Daiku no Gen-san 2) (JP)
- IREM-HOLYDIVER // Holy Diver (JP)
- IREM-TAM-S1 // 快傑ヤンチャ丸 (Kaiketsu Yanchamaru 2) (JP)
- JALECO-JF-05..08 // 忍者じゃじゃ丸くん (Ninja Jajamaru-kun) (JP)
- JALECO-JF-09 // じゃじゃ丸の大冒険 (Jajamaru no Daibouken) (JP)
- JALECO-JF-10 // うる生やつら ルムのウエヂングベル (Urusei Yatsura) (JP)
- JALECO-JF-11 // 妖怪倶楽部 (Youkai Club) (JP)
- JALECO-JF-14 // バイオ戦士DAN インクリーサーとの闘い (Bio Senshi DAN) (JP)
- JALECO-JF-16 // 宇宙船コスモキャリア (Uchuusen: Cosmo Carrier) (JP)
- JALECO-JF-24 // Magic John (JP)
- JALECO-JF-25 // 忍者じゃじゃ丸 銀河大作戦 (Ninja Jajamaru G.D.) (JP)
- NAMCOT-129
- NAMCOT-163 // 貝獣物語 (Kaijuu Monogatari) (JP)
- NAMCOT-175
- NAMCOT-340
- NAMCOT-34xx // SkyKid (JP), The Quest of Ki (JP)
- SUNSOFT-4 // After Burner (JP)
- TAITO-TC0190FMC
- TAITO-TC0350FMR
- TAITO-TC0690FMC
- Added aliases for existing board classes:
- HVC-?????? to NES-?????? // Games released in Japan
- NES-HROM to NES-NROM // Donkey Kong Jr. (JP)
- NES-RROM to NES-NROM // Duck Hunt (JP)
- NES-RROM-128 to NES-NROM // Clu Clu Land (NA)
- NES-RTROM to NES-NROM // Excitebike (JP)
- NES-SNWEPROM to NES-SxROM // Final Fantasy II Prototype (NA)
- NES-SROM to NES-NROM // Mario Bros. (JP)
- NES-STROM to NES-NROM // Pinball (JP)
- BANDAI-FCG-1 to BANDAI-FCG // ドラゴンボール 大魔王復活 (JP)
- // (Dragon Ball: Dai Maou Fukkatsu)
- BANDAI-FCG-2 to BANDAI-FCG // ドラゴンボール3 悟空伝 (JP)
- // (Dragon Ball 3: Gokuu Den)
- BANDAI-JUMP2 to BANDAI-FCG // ファミコンジャンプII 最強の7人 (JP)
- // (Famicom Jump II: Saikyou no 7 Nin)
- BANDAI-LZ93D50 to BANDAI-FCG // クレヨンしんちゃん オラとポイポイ (JP)
- // (Crayon Shin-chan: Ora to Poi Poi)
- IREM-BNROM to NES-BNROM // 魔鐘 (JP)
- // (Mashou)
- IREM-FCG-1 to BANDAI-FCG // 西村京太郎ミステリー ブルートレイン殺人事件 (JP)
- // (Nishimura Kyoutarou Mystery: Blue Train
- // Satsujin Jiken)
- IREM-NROM-128 to NES-NROM // Zippy Race (JP)
- IREM-NROM-256 to NES-NROM // Spelunker (JP)
- IREM-UNROM to NES-UNROM // Spelunker II (JP)
- KONAMI-CNROM to NES-CNROM // Gradius (JP)
- KONAMI-NROM-128 to NES-NROM // Road Fighter (JP)
- KONAMI-SLROM to NES-SLROM // The Adventures of Bayou Billy (NA)
- KONAMI-TLROM to NES-TLROM // Super C (NA)
- KONAMI-UNROM to NES-UNROM // Life Force (NA)
- NAMCOT-3301 to NES-NROM // Galaxian (JP)
- NAMCOT-3302 to NES-NROM // Mappy (JP)
- NAMCOT-3305 to NES-NROM // The Tower of Druaga (JP)
- NAMCOT-3311 to NES-NROM // Tag Team Pro-Wrestling (JP)
- NAMCOT-3312 to NES-NROM // Dig Dug II (JP)
- TENGEN-800008
- Added unlicensed aliases for existing board classes:
- TENGEN-800003 to NES-NROM // Pac-Man (Unlicensed) (NA)
- TENGEN-800008 to NES-CNROM // Tetris: The Soviet Mind Game (NA)
- TENGEN-800042 to SUNSOFT-4 // After Burner (NA)
- Added unlicensed board types: (note that they are sectioned off separately
- from the licensed ones for easy removal):
- CAMERICA-BF909x // Micro Machines
- CAMERICA-ALGN
- CAMERICA-ALGQ
- COLORDREAMS-74*377.cpp // Bible Adventures
- MLT-ACTION52 // Action 52
- AVE-NINA-xx // Impossible Mission II
- SingleChip // Magic Floor (nocash)
- Many games published on Camerica boards were made by Codemasters who is
- notorious for exploiting rarely-used aspects of the NES. This is not a problem
- with the Camerica board but with Famicom hardware timing.
- Prevented saving to non-existent SRAM/WRAM for the following board families:
- SxROM
- TxROM
- The board definitions for the following board families now read the board and
- chip types and choose a board and chip revisions accordingly:
- NROM
- HROM has no solder pads to select mirroring and is locked to vertical
- mirroring.
- SxROM (MMC1)
- SEROM, SHROM, and SH1ROM have pin A14 hooked directly between the control
- deck and the program ROM, which prevents the ROM from being bankswitched.
- Prevented reading from and writing to non-existent PRG RAM. This bug
- prevented Bionic Commando from booting.
- Added tracking of the last CHR bank used, so that the legacy PRG RAM
- disable bit and 256 KB PRG bank bit will dynamically switch as the PPU
- renders. Can be used for software IRQs but will catastrophically crash the
- game if misused.
- TxROM (MMC3)
- Added TQROM support, which has both CHR-ROM and CHR-RAM (selected via bit
- 6 of the bank number). Needed to play High Speed and Pin Bot.
- Added TxSROM support, which selects mirroring via bit 7 of whichever CHR
- banks control PPU $0000..$0FFF. Needed to play Armadillo.
- Added support for TVROM. TR1ROM support already existed, which provides
- four-screen mirroring, but it did not recognize TVROM as also having it.
- Needed to play Rad Racer II.
- Added support for Acclaim's MC-ACC chip, which fires IRQs on PPU A12
- falling edges instead of rising edges. Needed to properly display The
- Incredible Crash Dummies's messages during its intro.
- ExROM (MMC5)
- Fixed a bug in CHR mode 0 concerning background access to the PPU.
- Originally, though an increment of 1 to $512B advanced by 0x2000 bytes,
- PPU $1000..$1FFF acted as a mirror of $0000..$0FFF, making the latter half
- of each bank inaccessible. It now accesses the latter half of the bank.
- Sprite access was not affected by the bug.
- AxROM
- PxROM
- FxROM
- Added bus conflict emulation to the following board families (assuming that
- the written value is ANDed with the ROM byte):
- UxROM
- Added support for the 74HC08 chip, which is required to play Crazy
- Climber. Normal UxROM games use the 74HC32 chip.
- CxROM
- Added support for CPROM, which restricts PPU $0000-0FFF to the first bank
- while $1000-1FFF is a 4KB switchable bank. Needed to play Videomation.
- Added support for CNROM security CHR chip enables. Each game has a
- specific CHR bank that is read from
- manifest["cartridge/board/security/pass"], and that bank is the only one
- that maps in the CHR. Spy vs. Spy uses 0x1.
- AxROM (AMROM only; AOROM has no quality database coverage)
- BNROM
- GNROM/MHROM
- Made the MMC3 read the PPU's address bus (status.chr_abus) instead of ticking
- on every CHR ROM/RAM read.
- Added support for VRC2a, which is similar to VRC2c except that CHR banks are
- right-shifted by 1. "cartridge/chip/pinout/chr-shift" indicates the shift
- amount, with 0 used by VRC2b and VRC2c, and 1 used by VRC2a.
- VRC2a was used in ツインビー3 ポコポコ大魔王 (TwinBee 3: The Aimless Demon King).
- VRC2b was used in 魂斗羅 (Contra).
- VRC2c was used in がんばれゴエモン外伝 けいた黄金キセル (Ganbare Goemon Gaiden).
- The variants VRC4a, VRC4b, VRC4d, VRC4e, and VRC4f (if it exists) were all
- supported already, but VRC4c had been locked out, making it impossible to
- run がんばれゴエモン外伝2 天下の財宝 (Ganbare Goemon Gaiden 2). Not anymore.
- VRC4c's pinout is: "pinout a0=6 a1=7"
- Added the ability to read the VRC6 pinout from manifest.bml. Before, it would
- dynamically determine the pinout based on the presence of SRAM.
- 悪魔城伝説 (Akumajou Densetsu/Castlevania 3) uses "pinout a0=0 a1=1".
- Esper Dream 2 and 魍魎戦記マダラ (Mouryou Senki Madara) use "pinout a0=1 a1=0".
- Split chip code for the Bandai chips into a separate file alongside the MMCs
- and VRCs.
- Made register placement in the Bandai boards more strict based on board type.
- "board type=???" determines how to lay out the registers.
- FCG-1 and FCG-2 use $6000-7FFF, and LZ93D50 and JUMP2 uses $8000-FFFF.
- Additionally, a second "chip type=???" line determines which type of EEPROM
- to use (24C01 for 128-byte and 24C02 for 256-byte). Leave the second line out
- to exclude EEPROM (and use SRAM if it exists). True EEPROM support is still
- not in, however.
- クレヨンしんちゃん オラとポイポイ (Crayon Shin-chan: Ora to Poi Poi) is the only game using
- the LZ93D50 to not have any way of saving data, and
- ファミコンジャンプII 最強の7人 (Famicom Jump II) is the only game on any variant of this
- board to use normal SRAM at $6000-7FFF.
- Added support for the Camerica boards ALGQ, BF9096 and BF9097. Needed to play
- Fire Hawk and the Quattro multicarts.
- Added the exportMemory function, which can dump WRAM, CIRAM, CGRAM, OAM,
- cartridge PRG RAM, and cartridge CHR RAM.
- Added limited support for the VS. System. Only UniSystem games will work
- right now (Tennis and Baseball are DualSystem games that would require
- emulating 2 Famicoms). The Start and Select buttons are disabled in favor of
- Buttons 1, 2, 3, and 4, which can be configured in the new Famicom Expansion
- device, the VS. Panel. The VS. Panel also controls the service button and coin
- slots. It is connected automatically and cannot be disconnected, but a
- limitation of the UI prevents the interface from acknowledging that a device
- change was refused.
- VS. games are stored in a separate "VS. System" folder in the library, just
- like PlayChoice-10 games. The VS. manifest format selects the PPU revision in
- "cartridge/vs/ppu/revision" and specifies DIP switch settings in the same
- format as the Nintendo Super System's DIP switch settings
- ("cartridge/vs/setting/option/value").
- Added support for loading games with the .pc10 extension.
- Currently, PlayChoice-10 games load the same way as Famicom games but with the
- RGB palette in the 2C03. It will now load the BIOS from the PlayChoice-10.sys
- folder and throw a warning if one is not found, but because it is not
- actually used in any way, you can put any 16384-byte file in there to avoid
- the warning.
- Note that RGB PPUs do not support the Color Emulation option or Display
- Emulation shader. They display the same colors as when both are turned off.
- Which PPU to use is decided by the presence of the "pc10" node in the
- cartridge manifest, so if you want to bypass loading the PlayChoice-10 BIOS
- while still using the RGB PPU, rename a ".pc10" folder to ".fc".
- Prepared the video renderer for dynamic adjustment of screen width for
- VS. DualSystem and PlayChoice-10 games. To set the width to 512 pixels for a
- VS. DualSystem game, add a second "vs" node with a "ppu" child. It is not
- enough to simply have a 2nd "vs" node, said node needs to have a "ppu" node as
- a child to activate the double width. This is currently not useful because of
- lack of true DualSystem support. The height is set to 480 if using the
- PlayChoice-10's dual screen mode (set in PlayChoice-10.sys/manifest.bml), and,
- as a basic demonstration of the horrid frame-based renderer, it will display
- the PlayChoice-10 logo at the top as you play.
- ======================================================
- Changes from higan: processor/r6502 (affects nSide-fc)
- ======================================================
- BRK was improperly clearing the Decimal flag when it should leave it alone.
- Only the interrupt flag is set now.
- An NMI can now redirect a BRK if it occurs after BRK's 4th cycle (after
- pushing the return vector into the stack but before pushing register P).
- Opcode 0x80 was being treated as NOP abs, when it should be NOP #imm.
- NOP #imm now advances the program counter properly, fixing Puzznic's columns
- of corruption bug.
- Added support for the unofficial opcodes ALR, ANC, AXS, DCP, ISC (ISB), LAX,
- RLA, RRA, SAX, SLO, SRE, and STP (KIL).
- =============================
- Changes from higan: nSide-sfc
- =============================
- Revised emulator name and copyright information. Credited multiple people who
- helped out with bsnes in the past.
- Expanded exportMemory to dump expansion chip-specific memory.
- Added exportRegisters for exporting some PPU registers to a debug report in
- BML format. Not all registers are supported yet.
- ============================
- Changes from higan: nSide-gb
- ============================
- Added the exportMemory function, which can dump WRAM, HRAM (internal RAM),
- VRAM, OAM, and the palette, which is different for the Game Boy and Game Boy
- Color.
- =============================
- Changes from higan: nSide-gba
- =============================
- Revised emulator name and copyright information. Credited endrift, jchadwick,
- and Jonas Quinn for various improvements to GBA emulation.
- Added the exportMemory function, which can dump External WRAM, Internal WRAM,
- VRAM, and PRAM (Palette RAM).
- However, dumping External WRAM causes a crash with about 3/4 of the data
- dumped, so it has been temporarily disabled (External WRAM is 262144 bytes
- long, the longest of any file dumped by any emulator's exportMemory function).
- ===================================================================
- Changes from higan: processor/arm (affects nSide-sfc and nSide-gba)
- ===================================================================
- Added Jonas Quinn's rd delayed write code, which fixed multiple errors that
- armwrestler reported.
- ========================================
- Changes from higan: cart-pal/auto_purify
- ========================================
- Renamed "ananke" to "auto_purify".
- Renamed "icarus" to "cart-pal".
- Added support for the following Famicom boards:
- NES-CPROM
- HVC-UN1ROM
- HVC-UNROM+74HC08
- NES_TQROM
- NES-TVROM
- IREM-G101
- IREM-H3001
- IREM-74*161/161/21/138
- IREM-HOLYDIVER (NES 2.0 only)
- IREM-TAM-S1
- JALECO-JF-16
- NAMCOT-34xx
- Revised the header information for iNES mappers 21, 23, 24, 25, and 26 to
- correctly detect VRC4 and VRC6 pinouts more often (but in VRC4's case, still
- not 100% of the time)
- Revised the header information for iNES mappers 16, 153, and 159 to select
- which type of EEPROM/SRAM to use for the Bandai FCG series of boards.
- Began planning support for purification based on bootgod's database.
- Added preliminary support for NES 2.0. This allows submappers to influence
- purification of Konami VRC games, distinguish between IREM-HOLYDIVER and
- JALECO-JF-16 (Cosmo Carrier), among other things.
- (auto_purify only) Added support for PRG ROMs that are 8192 bytes long, half
- the minimum size needed for iNES and NES 2.0. If a 16384-byte PRG ROM has 2
- halves with the same data, it is truncated to 8192 bytes.
- (auto_purify only) Corrected the Sufami Turbo database to give SD Gundam
- Generation - Colony Kakutouki 0x2000 bytes of RAM. It erroneously had 0x800,
- preventing it from saving properly.
Add Comment
Please, Sign In to add comment