コミットグラフ

306 コミット

作成者 SHA1 メッセージ 日付
曾耿森 d76e79076f
fix(fc): fix mmc3 board (#1529)
1. fix game Mickey's Safari in Letterland (USA)
2. fix game Incredible Crash Dummies, The (USA)
2024-06-14 12:59:30 +01:00
曾耿森 a574410a03
feat(fc): add new board TXC-22211B(Mapper 172) (#1527)
pass issue #755
2024-06-13 20:09:55 +01:00
曾耿森 dc97c814a3
feat(fc): add new board support (225/255) (#1523)
pass issue #753
pass issue #754
2024-06-12 16:28:52 +01:00
曾耿森 9325b04b23
add board unl-bmc-31-in-1 (mapper 229) (#1521)
add board unl-bmc-31-in-1 (mapper 229)
pass issue #752
2024-06-11 17:23:33 +01:00
曾耿森 2b6346df6e
feat(fc): add new board support (#1520)
1. add the board unl-sachen-74ls374n support mapper id = 150 & mapper id
= 243
2. merge Famicom NTSCJ and NTSCU to NTSC
3. pass the issue #282
2024-06-11 09:47:17 +01:00
Derek "Turtle" Roe a327e9b953
Fix some inconsistent formatting in the N64 database (#1496)
Just fixed up a few inconsistent formatting issues in the N64 database
while I was taking a peek 😄
2024-05-18 16:56:18 +01:00
Luke Usher 1bdfa3e21a Merge branch 'master' of https://github.com/ares-emulator/ares 2024-04-22 11:19:49 +01:00
png183 eaab017b26
gba: handle ROM mirroring for Famicom Mini / Classic NES Series (#1456)
The 1MiB ROM chips used in most Famicom Mini carts and all Classic NES
series carts are mirrored, unlike with the larger ROM chips other carts
used. This PR implements the ROM mirroring behaviour and adds detection
for the affected games.

Closes #893
2024-04-21 19:26:29 +01:00
Luke Usher dd7fd4ea52 mia: load sfc boards from filesystem rather than embedding in mia 2024-04-12 14:54:01 +01:00
Luke Usher 5229e0f93a mia: include sha256 in generated sfc manifests 2024-04-12 10:29:21 +01:00
Luke Usher 1ea995f78d arcade: use mame machine names for convenience
Update mame2bml to include mame romset version

Add script to update arcade rom database (requires a MAME installation)
2024-04-03 06:57:51 +01:00
Adrian Siekierka 39c73a89ff
ws: emulate 32KB SRAM for "8KB" cartridges (#1437)
Based on [ototo2009's PCB
scans](http://blog-imgs-131-origin.fc2.com/o/t/o/ototo2009/WS-2019-12b.html),
I have verified that every single cartridge that uses the value `0x01`
for its save type in the ROM header actually comes with 256 Kbit (or 32
KB) of SRAM.

In addition, WonderSwan ROM chips tend to use the notation of
`MHxxMyySzzzz` for a cartridge with `xx` megabits of ROM, `yy` kilobits
of SRAM (or `yyE` for EEPROM), and the ROM data ID `zzzz`. All of the
cartridges in question appear to use `256S`.

As such, it seems to me that Ares should similarly emulate 32KB of save
data for all such cartridges. It seems that this actually fixes a game,
for once.
2024-04-02 19:17:44 +01:00
Luke Usher c9c1a0d532 pc-engine: add support for Games Express games + other fixes
Use the Games Express system card for the games that require it
Use System Card 1.0 for Altered Beast (this game is broken on other bios versions, even on hardwar
Fix CD-ROM pregap offset (Fixes Super Air Zonk, allows Games Express games to boot)
Fix PC-Engine Duo/Super CD-ROM Ram Enable Register
e)
2024-03-08 15:53:44 +00:00
Luke Usher 5cdefb088d desktop-ui: cleanup resource search paths
As well as simplifying the code a little, this also  fixes an oversight where users could not override application resources on macOS.
2024-02-21 17:49:12 +00:00
Steveice10 d6b2ca53e2
nall: Account for macOS app bundles in program path. (#1373)
Contains three main changes:
* In `Path::program()`, account for the macOS app bundle, so that
portable config support works with the app bundle.
* Create a new function `Path::resources()` for the resources path,
since `Path::program()` can no longer trivially be used to construct the
bundle resources path (no guarantee what the .app is named). On macOS
this returns the path to "ares.app/Contents/Resources", on other
platforms (in case they use it in the future) it just returns the same
as `Path::program()`.
* Fix an issue where, if Ares is stored in a sub-directory of the
desktop, the path settings UI will display paths next to the program as
relative to the desktop instead of relative to the program directory.
2024-01-22 14:20:14 +00:00
png183 b28bb3dbd7
gba: improve save type detection for homebrew (#1367)
Commercial GBA games contain strings in the ROM that correspond to a
save type (e.g. SRAM, flash memory, EEPROM), followed by 3 digits. These
strings are used by ares to detect what save type to use. However, when
running [jsmolka's SRAM and flash memory save
tests](https://github.com/jsmolka/gba-tests/tree/master/save), ares does
not detect a save type, since the programs lack the 3 digits at the end
of the save type string. This PR ignores the trailing digits during save
type detection, since it's likely that many other homebrew programs are
affected by the same issue ([GBATEK even advises developers to not add
digits when including save type
strings](https://problemkaputt.de/gbatek-gba-cart-backup-ids.htm)).
2024-01-18 09:27:02 +00:00
Luke Usher 6e8f4f224a cv: fix the build 2023-12-12 13:47:08 +00:00
NoxyMe 20a3aac83b
cv: add "XIn1" and "MegaCart" mappers (#1327)
Added "Xin1" mapper for the ColecoVision, this mapper supports:
- 31-in-1 (v1.1) ( 2013 )
- 63-in-1 (v1.0) ( 2013/0 1)
Both carts are by "Buzz and ZX-81", and i tested all games for both
multis and they all at least boot perfectly fine


And the "MegaCart" mapper, this mapper automaticly triggers for any rom
over 32k that isnt known to be another mapper (like the "xin1" mapper).

it all should be well with all homebrew games that requite the MegaCart
hardware.


If anyone knows of any other ColecoVision carts like these let me know
and I'll try to add them.

---------

Co-authored-by: Luke Usher <luke.usher@outlook.com>
2023-12-11 17:44:19 +00:00
invertego c00e402eeb
build: enable strict standards conformance with cl (msvc) (#1317)
From the MSVC docs: "You can use the /permissive- compiler option to
specify standards-conforming compiler behavior. This option disables
permissive behaviors, and sets the /Zc compiler options for strict
conformance."

While generally a positive thing, this does make MSVC stricter than
GCC/Clang in some cases. A couple of things popped out:

- nall::multiFactorImage had a busted constructor. I fixed this and did
some other cleanup while I was at it.
- nall::string has an implicit conversion operator to const char*. This
is honestly really ugly and creates ambiguity and allows for all kinds
of surprising silent conversions. Unfortunately, fixing that (by making
it explicit) will require touching hundreds of lines of code so I opted
not to deal with it now. Instead I fixed the much smaller number of
ambigous cases relating to string literals.
2023-12-04 12:01:50 +00:00
Tomás Domínguez Bolaño b0ee66d4ad
fc: use hkrom for mmc6 (#1316)
MMC3 and MMC6 share the same mapper in the iNES format. To disambiguate
MMC6 from the MMC3 mapper the NES 2.0 submapper 004:1 should be used:

https://www.nesdev.org/wiki/MMC6

Code for using the MMC6 was actually commented in mia/medium/famicom.cpp
up to commit bed4ce3659, where it was deleted. This commit
reintroduces this code to use it with the NES 2.0 submapper 004:1. This
adds compatibility with the games "StarTropics" and "Zoda's Revenge:
StarTropics II".
2023-12-02 17:54:09 +00:00
Giovanni Bajo 67c6bfa4a5
mia: improve CIC detection algorithm (#1296)
Currently, we detect the CIC to emulate by calculating a CRC32 over IPL3
bootcode in ROM, and keeping a database of the known IPL3s. This works
because right now there are only a handful of IPL3 variants (exactly one
per CIC).

In preparation for libdragon releasing an open source IPL3 that could
evolve and be forked an unbounded number of times, we must stop keeping
a database of IPL3s.

This commit changes strategy: it simulates the IPL2 checksum hash over
IPL3 (which is exactly what a real N64 does at boot) and verifies if the
checksum matches that expected by any of the known CIC variants. This
works because open source IPL3 variants must anyway have a checksum that
collides with that of CICs (which must be obtained via a second preimage
attack, bruteforced on GPUs), otherwise they would not work on real
hardware nor on Ares itself (which correctly simulates the boot sequence
and would refuse to boot an "unsigned" IPL3).
2023-11-21 10:34:53 +00:00
Luke Usher df8d5a6157 mia: .rom => rom 2023-11-14 00:20:27 +00:00
Luke Usher de1c12737a mia: remove support for loading ".smd" extension
This incorrectly implies that we support the old .smd rom format that used to be standard prior to .bin/.md;

This format is an interleaved format designed for the Super Magic Drive copier and ares does not support it

To prevent confusing users who may sill have legacy .smd files around, I'm removing the extension from mia.
2023-11-13 23:39:01 +00:00
Luke Usher da9c82956a mia allow loading .rom files for MSX/MSX2 2023-11-13 23:39:01 +00:00
hackgrid 4dd837ae41
mia: implement n64 controller config (Advanced Homebrew ROM Header) (#1286)
This PR implements the n64 controller config from the Advanced Homebrew
ROM Header:

https://n64brew.dev/wiki/ROM_Header#Advanced_Homebrew_ROM_Header

Only applies to Controller 1 at the moment, because ares only checks
globally for tpak/cpak/rpak:


fa0f9a715f/desktop-ui/emulator/nintendo-64.cpp (L148)
2023-11-13 23:34:04 +00:00
LuigiBlood 87ae65a094
n64: add 64dd disk swapping + safety checks + change manufacture timestamp (#1280)
This adds:
- 64DD Disk Swapping for both 64DD standalone games and N64 Combo games
(only if a disk is loaded).
- Safety checks to prevent corruptions.
- Change manufacture timestamp and line to differenciate different disk
files from each other to avoid confusion
2023-11-08 20:09:27 +00:00
LuigiBlood e7760bfc51
n64: Add D64 file format support (#1279)
Adds D64 file format support, which is the official master 64DD data
file format, which is basically NDD but a lot of the useless data
trimmed out and disk formatting data kept to a minimum.

Works in this way:
- Adds *.d64 file extension to the list.
- Redo code that uses clearer variables to keep track of recognized 64DD
disk file format.
- Add a file size check to do a proper format recognition and avoid
errors.
- Additional data validity checks.
- D64 conversion to the internal disk format (I refer to it as MAME
format) by reusing the same algorithm as NDD while ignoring blocks of
data that are not present.
2023-11-07 13:12:22 +00:00
Adrian Siekierka c27f369e31
fc: Initial EPSM implementation. (#1274)
More information:
https://www.nesdev.org/wiki/Expansion_Port_Sound_Module

While this is a homebrew device, it has already shipped to consumers in
this manner.

TODO (I'm not sure how to fix these issues myself):

- [x] Switching from EPSM back to another peripheral (None or Family
Keyboard) unloads not just the additional EPSM-provided audio streams,
but seems to break *all* audio from the NES core.
- [x] NES 2.0 cartridges can declare that they wish to have the EPSM
peripheral installed by default (Extended Console Type 0x04), but I'm
not sure how to hook this nicely from the pak data to the expansion port
node.
- [ ] Missing serialization, but this affects the Family Keyboard to
some limited extent already, so...

Not urgent at all. It has shipped to consumers, but the amount of
software using it is still lacking.

---------

Co-authored-by: Luke Usher <luke@usher.cc>
2023-11-07 12:09:15 +00:00
Luke Usher d2e20f0d05 mia: use SMS mode when loading .sms roms on gamegear 2023-11-07 09:27:44 +00:00
remutro d201d6a547
N64 Mia Update - Chameleon Twist 2 (#1272)
Update Mia DB to include US/EU Ids for Chameleon Twist 2. The Japanese
Id starts with NV2 while the other regions have an Id that starts with
N2V.
2023-10-26 13:48:30 +01:00
Luke Usher 7dc11a1c39 ms: check for TMR-SEGA header
Games that lack this header are incompatible with non-japanese systems
2023-10-25 22:15:04 +01:00
Luke Usher 414c205256 desktop-ui: surround sg1000a with CORE_SG ifdef 2023-10-25 09:40:16 +01:00
Luke Usher cd8d84ed5b all: create a system for generic arcade boards 2023-10-23 23:08:21 +01:00
Luke Usher 708247ab38 sg: preliminary support for sg1000 based arcade games
Compatible with the current MAME romset at time of writing.

This system only has three games:
  - Champion Boxing [cboxing]
  - Champion Pro Wrestling [chwrestl]
  - Doki Doki Penguin Land [dokidoki]

Known Issues:
  - No support for configuring DIP switches
  - Champion Pro Wrestling [chwrestl] is not working due to encryption
2023-10-19 00:32:33 +01:00
Luke Usher 74e10c45f3 mia: improve system autodetect of cd-rom based games 2023-10-18 19:04:48 +01:00
Luke Usher dd01cf762b mia: identify FDS bios by copyright string rather than digest
A file is regarded as a Famicom Disk System Bios when

1. It is 8KiB in size, AND
2. it contains the Famicom License DRM/Trademark security string at offset 0xd37
2023-10-18 17:30:15 +01:00
Adrian Siekierka 0f265028f2
fc: add self-flashing support to UNROM-512, GTROM (#1237)
Tested with https://github.com/SourMesen/Mesen/issues/753
2023-09-24 14:45:22 +01:00
Adrian Siekierka 99afcff4c7
fc: Fully utilize NES 2.0 extended PRG/CHR size variables. (#1229)
This PR may necessitate more third-party verification than usual. It
also allows for detection of the correct MMC5 board based on NES 2.0
header alone.
2023-09-19 10:02:12 +01:00
invertego 562bcd7b20
build: miscellaneous fixes (#1233)
Fix various recently introduced build issues.

Some background for the string indexing thing: using operator[] to index
nall::string causes some ambiguous overload errors in 32-bit builds.
This isn't the first time it's come up, but since it's so easy to work
around (using operator() instead) I haven't bothered to try to fix it.
2023-09-18 10:13:20 +01:00
Adrian Siekierka 3e9ee7423d
fc: Implement mapper 31, 218. (#1227)
Resolves https://github.com/ares-emulator/ares/issues/751
2023-09-17 16:19:37 +01:00
Adrian Siekierka 85488a7404 fc: Implement Action53 mapper. 2023-09-16 15:38:35 +01:00
Adrian Siekierka 5eccee8457 fc: Implement UNROM-512 mapper. 2023-09-16 10:49:43 +01:00
Luke Usher 546aed6852 sfc: report PAL and NTSC support for SGB1, allowing it to run at 50hz if "Europe" is the users preferred region. 2023-09-02 22:34:09 +01:00
NoxyMe 72cd3c5a65 Update master-system.cpp 2023-09-01 16:18:37 +01:00
NoxyMe 929ad45380 Cleaned up some stuff 2023-09-01 16:18:37 +01:00
NoxyMe bb67742864 Added K188in1 Mapper and fixed missleading names
Added K188in1 Mapper
Changed "msx.cpp" to "zemina" as lots of MSX ports dont use the mapper and its only used by ports by Zemina.
2023-09-01 16:18:37 +01:00
NoxyMe a96395a1c1 Added 2 Hap in 1 - David-2 ~ Moai-ui bomul 2023-09-01 16:18:37 +01:00
NoxyMe 70675c0644 Removed some leftovers 2023-09-01 16:18:37 +01:00
NoxyMe 950d9a1967 Added Pak4 (4 PAK All Action) and Hicom Mappers to the SMS core. 2023-09-01 16:18:37 +01:00
Luke Usher 40a6b8d36a mia: allow atari 2600 to load .bin format roms 2023-08-22 20:59:08 +01:00