#Sega Master System
2480 messages · Page 3 of 3 (latest)
For information you shared the previous RBF and not the new one with the fixes.
Confirmed Gamegear games are fixed !
Sorry about that, I'll add the correct one.
Changes:
Fixed stuck button 2
Support for both SC-3000 Megacarts
No new issue after some testing of GG, SMS, SC and SG for SMS_SC-3000 core.
Is the Master System core perfected now? 😮
Does 4 Pak All Action work on the Master System yet? I know the mapper wasn't supported last time I checked. Also, there's the 2 baseball games on Game Gear that are missing mappers
There are some mappers still not implemented
SC-3000 and SK-1100 Support
Includes the latest changes. Please let me know if there are any regressions compared against the latest unstable.
Those are in the carts, aren't them?
yes
but some SMS ROMs don't have a header to inform which mapper they use
that's why it is trickier. Even with a mapper implemented, we still have to use some heuristic to know when to use them.
No new issue on my side with this build !
I have a question regarding the SMS core.
Do you think it is possible to merge GG in the same Load with SC, SG and SMS on the OSD ?
No no just to simplify the OSD settings 🙂
because we have
Load *.SMS,SC,SG
Load *.GG
It will be better to have Load *.SMS,GG,SG,SC
Some gamegear games have sms extension like Castle of Illusion (gg version) so I think it could be merged
https://consolemods.org/wiki/Game_Gear:Master_System_Games_on_Game_Gear#Game_Gear_Games_Running_in_Master_System_Mode
The Game Gear hardware is fairly similar to that of the Master System, with only a handful of enhancements (namely stereo sound and a much larger color palette). In addition, the Game Gear itself is capable of running Master System cartridges using a passive adapter, making it one of the few handhelds...
I see so not possible to simplify 😢
Yes I privileged GG version if the game is available on both supports
It would probably require more changes than I can handle. It is a job for a real core developer.
This was my list a while back
#1056020162391851009 message
Thinking GG specifically, it would be great if you could force GG or SMS regardless of the file extension, and have HDMI output simulate what the GG screen did pixel blending
I saw those GitHub issues—would be awesome to get them implemented, and some are already on your list. About issue #167, I played Turma da Mônica for ~20 minutes and it worked fine on my end:
Turma da Monica em O Resgate (Brazilian Dragon's Trap) Doesn't work #167
Border support for 224p and 240p modes to achieve correct aspect ratio #163
GG: All 4 EEPROM games don't boot currently #130
Issues found by atari-forum user "hyperterminal" #55
Kconger and Skooter for all improvements 🙂
If anyone wants to test the SG-1000 games that didn't work before we have them all documented here. Happy for anyone testing to get edit access and update the sheet
The Othello Multivision had built in buttons specifically for Othello, so that version doesn't work with a controller like the stand alone version (which has extra RAM for some reason).
Probably for the AI player
Sorry, misread at first. Makes sense. It kicks my butt even on level 1.
It works in SC-3000 mode on the test core (stand alone).
GameGear Gear to Gear(Link Cable) support over USERIO. Tested between two MiSTers.
https://segaretro.org/Gear-to-Gear_Cable
A cable needs to be built to test, some games you can use a GBLink cable with SNAC adapters. Use a level shifter if connecting to a real Game gear.
https://www.smspower.org/Development/GearToGearCable
GG signal Cable pin USERIO
PC0 1 USER_IO[0]
PC1 2 USER_IO[3]
PC2 3 USER_IO[4]
PC3 4 USER_IO[5]
PC4 / TX 6 USER_IO[1]
PC6 / NMI 7 USER_IO[6]
GND 8 GND
PC5 / RX 9 USER_IO[2]
This had to be worked out before that. 🙂
I have only one MiSTer and no Gamegear so I could test it 😢 but great addition !!!
This build supports Nemesis and Nemesis II.
Note: the mapper must be selected in the new OSD option "Korean Mapper".
I don't like this approach, but I'm still trying to figure out some auto detection that doesn't require CRC (costly on the FPGA side or needs changes on the framework in the host side).
Do we have composite blur on the SMS core already?
Give this build a try - 💬 Sega Master System
Is Robby just rick rolling everyone now?
Testing 4 Pak All Action with this build (not tested with previous build) the game starts and proposed 4 games but when one is selected the game reboot and shows again the menu
That was my experience with 4 Pak All Action years ago when I tested it. The game always booted but none of the 4 games boot and it sends you back to the menu when selecting any of them
Nemesis I works if I set bios to disable and mapper to Nemesis but I couldn't make the Nemesis 2 works
So maybe the Nemesis build doesn't contains 4 Pak All action
With the test build 4Pak I could go in game
That's expected. This build was before I merged 4Pak mapper and Nemesis mappers.
It should work with mapper set to Zemina
I'm testing a small CRC16 in the last 8KB to detect both Nemesis and I'll leave an OSD option to set mapper to Auto, Sega, and Zemina. Maybe other games will work wih Zemina enabled and I can add a CRC detection to them too.
Ok thanks !
The option 'set Mapper' has Auto,Zemina and Nemesis. Is it the correct build ?
Sorry, I wasn't clear. This is what I'm testing now, I didn't post it yet. The last version I posted has Auto, Zemina and Nemesis options. The one I'm working now I merged the "Disable Mapper" and "Korean Mapper" options into a single "Mapper" option.
Thank you for the explanation 🙂
Is there a way to have an external BIOS boot in the core by default? I renamed the wonderful Japanese 2.1 BIOS to boot.rom, but that doesn't work.
It only works with "Load Ext. BIOS", and even so, it isn't saved so everytime I load the core I would have to manually load the BIOS...
I have been searching the channel before asking here, but I can't see a clean answer.
You could use MGL file with this line below to run the core with bios loaded at the startup
<file delay="1" type="f" index="3" path="#Bioses/[BIOS] Sega Master System (Japan) (v2.1).sms"/>
That Bioses path, is it relative to games/SMS or to _Console?
it is relative to the directory /media/fat/game/<setname_choose_on_mgl_file>
Ok, that works. But now I have two "Master System" entries: one is the actual .RBF core file, and the other is the MGL. Is there a way to hide the actual core?
on _console directory you could create a directory named mgl without "_" to no make it visible and move the rbf in this directory
and change the path of SMSRBF on the mgl file
but after you need to update manually
Ahh.. not that convenient. I will simply name the MGL to something different.. Thanks!
But I wonder: why does boot.rom work with custom BIOS but not with the original japan BIOS?
I mean, what's different with the japan BIOS? Is there a way to convert it to a working format?
To have boot.rom will require some update on the core to support it.
For the moment mgl is the way to go
boot.rom works in general. I mean: I can copy Alexx Kidd to boot.rom and it does work.
It's the japan BIOS that does not
Ok maybe the size file is different ?
I think boot.rom was not supported on this core.
It is, believe me. Take any Master System game, rename it to boot.rom, and you will see that the core auto-launches it... except for the japan BIOS 😄
I see so boot.rom is used to run directly any games but not SMS bioses ?
Well, it's used to run bioses, too. Custom bioses do run as boot.rom
Thanks to everyone that has been recently working on this core , you are the MVPs
This build implements mappers for the following games:
- 4 PAK All Action (Australia) (Unl)
- F-1 Spirit - The way to Formula-1
- Knightmare II: The Maze of Galious
- Nemesis
- Nemesis II
- Penguin Adventure

4 PAK All Action and two Nemesis (KR) work !
For Nemesis 1, the bios needs to be disable on the bios to work.
which BIOS?
[BIOS] Sega Master System (Japan) (v2.1).sms
With Nemesis 2 it works with his bios
It is the only on the list failing with japanese bios check.
Auto works all cases for Mapper.
it has a weird header, but it may be something else
does this channel need fancy pins?
In this one Japanese and Korean BIOS will now load Nemesis and the other new games:
4 PAK All Action (Australia) (Unl)
F-1 Spirit - The way to Formula-1
Knightmare II: The Maze of Galious
Nemesis
Nemesis II
Penguin Adventure
@smoky dock I found The Castle on SG Mode boots loop now. It has also graphical issues (like previously). (for information on My SG Mode mgl I set disable for bios)
On SC3000 mode it doesn't boot loop for information.
The Castle is the big end boss now 🙂
Regarding games on 4 PAK All Action, the standalone version of "Wonder Kid (Korea) (En) (Unl).sms" doesn't boot (maybe a mapper to add). It is not a regression.
This one?
SMS 5e7b18c8 24E29B513CCE7B89 Wonder Kid [Proto] [SMS-GG]/FLAGS=SMSGG_MODE,PROTO/COUNTRY=US/COMMENT=Prototype version of the game, based on 'Adventure Kid' available in '4 Pak All Action'/EMU_MAPPER=41
#define MAPPER_MSX_Generic16_8000 (41) // Register at 0x8000 with 16KB granularity. Same as CodeMasters except initial mapping is 0 for all slots.
Yes it existed on Gamegear set and Master System Set but don't know if both used the same mapper and same hash. Both don't run on the core
The CRC16 check will make it easier to add those single game mappers.
This build implements the mapper for Wonder Kid [Proto] [SMS-GG]
They are incremental, this last one also has The Castle and everything before it.
The Castle (SG Mode) and Wonder Kid work great 🙂
Wow, I think I will have to move over from the Coleco core to the SMS one again for the SG-1000 games
Skooter and Kconger ^^
aka Double Dragon 🐉
Skooger
GameGear2P core
Supported games: https://segaretro.org/Gear-to-Gear_Cable
You'll need to create a directory in games called GameGear2P.
The Castle (Taiwan) didn’t work in the latest build. In the 04/25 build it got to the title screen but kept looping. I tried it with SC-3000 mode on and off.
Does The Castle (Taiwan) use a different mapper than The Castle (Japan)?
Trying to implement it. Got 4 new games to work: FA Tetris, Flashback, Rally-X, Road Fighter. But broke Bomberman. The other mapper 11 games do not load, including The Castle Taiwan which now doesn't show the logo.
It needs more investigation. May be not the same mapper or may be related to something else.
lmao you are on a tear!
@vivid ledge will you be submitting these to the mister dev level repo?
oh wow, that’s a surprisingly big list!
Doyle will be pleased
That's the plan, those two need some cleanup and option removal.
I'm sure this supports the link cable.
Great game, there is a translation if you need it.
It isn't listed on the Gear to Gear games though. 🤔
Separator line on the GameGear2P looks great, thank you for adding that!
No rush but if you could add that to the AtariLynx2P core then that would make that one perfect.
Well it's still the Lynx so....
Forced black border for all games and auto-region detection (which changes the TV System too) is something that i really miss. Is it possible to add?
I know many of the Master System games that were EU exclusive were still NTSC but there's a few I'm not sure on. Like Ninja Gaiden. Should we be playing that at 50hz or 60hz?
Native NTSC games in NTSC of course. But the Master System has tons of exclusive PAL games too.
Yeah but is Ninja Gaiden NTSC? I haven't been able to confirm. I know Power Strike II is PAL.
I've played it at both speeds and both seemed right.
Oh ok cool
Thanks. I like it and I think last time I played through on PAL. Just wanted to be sure I was using the right speed.
It would be cool to have the core auto detect.
I believe that, ideally, the host would calculate a CRC32 for the ROM and send it to the core.
Or maybe even check a CSV file for mappers and region to adjust automatically. Therefore we wouldn't have to touch the core to support a new ROM.
Kind of how N64 works?
I never checked how it works
Just figured out it's trickier to auto detect mappers, it is easier to have a database.
based on what most emulators do
A huge amount of SMS games are the same region for one ROM, so automatically deciding region might not be great
Best option is to call 1-198-6-MARK-SMS you will get a region recommendation while lines are still open. 
Region Recommendation: PAL, 100% of the time
Hey all theres nothing... special about this vid, im testing to see what my cell phone video looks like up here heh. Anyone know what game this is from? lol
My recommendation is NTSC 95% of the time
I think there was about 10 maybe less that exhibit glitches when run in NTSC. Jungle Book and Chase HQ etc.
I did have a list
Interestingly Chase HQ on Game Gear which is the same game runs at 60Hz with no track glitching
New Master System games supported:
- FA Tetris (Korea) (Unl)
- Flashpoint (Korea) (Unl)
New SG-1000 games supported:
- Rally-X (Taiwan) (Chinese Logo) (Unl)
- Rally-X (Taiwan) (English Logo) (Unl)
- Road Fighter (Taiwan) (Chinese Logo) (Unl)
- Road Fighter (Taiwan) (English Logo) (Unl)
Oh nice, are you checking the SG-1000 games that are marked as not working on the old testing sheet?
Not yet. I was checking why The Castle (Taiwan) had a regression from title screen loop to no boot (@vivid rampart found it). Therefore I implemented the mapper 11, which fixed those games.
There are 3 other games that I may have fixed, but my daughter is watching the TV now and I can't test 🙂
I'll get to the spreadsheet, I think most issues are mapper related.
This shouldn't be a problem, when you can set a region detection order. Just like in the MD core.
oooh shit thank you for this one
Back to the Future III only works if you set the TV system to PAL in the settings.
is it possible to have 1 screen appear on one display and another screen appear on the other? 🤔
1 player is on the analog output and the other is on HDMI
So you can't see each other screen
Maybe, all my Misters are dual-ram and I don't have a CRT so it probably won't come from me.
New games supported:
- Castle, The (Taiwan) (Unl)
- Magical Kid Wiz (Taiwan) (Unl)
007 James Bond (Japan) (Othello Multivision) is working too. It is the same VDP mode as Super Boy, so it got fixed as well.
I was updating the spreadsheet but I realize this is still unstable core. Should we wait for a stable version to update it?
Probably best not update entry until the merge is accepted, or there is a numbered build at least, but no harm in commenting in comments column if you want to use it to keep track of your progress
Or nag sorgelig to simply release as stable.
@vivid ledge Testing a bit Gamegear2P,
There is missing sprites on the bottom right for OutRun in selecting screen
I wonder if it is there on purpose, something related to the link cable ?
Looks like two pixels
I think the line is shifted on the left but maybe the normal behaviour in link cable case
Hard to tell
Man I’m excited to see all the sms work going on. Proper SG-1000 and SC-3000 support rules
Right now the SMS core only supports NTSC and PAL-N, not PAL-M (Brazil). Since the Master System was huge here with lots of exclusives, I’m wondering if adding PAL-M could help compatibility in some games (like Back to the Future III) or improve colors in certain titles.
Back to The Future 3 for SMS was made by Probe in the UK which would be PAL-I
The games are only NTSC or PAL.
The PAL-M from Tec Toy Master System is in the RF and A/V outputs. Internally it is the same as NTSC.
Yesterday I went through the SG-1000 spreadsheet and I found out most games marked as "Unplayable" or "Issues" are now working.
The remaining are alternative versions of supported games in which the CRC must be added, and a mapper to be implemented "Mapper 15"
Since there will always be some translation, pallet hack, or any other ROM alternative that breaks CRC identification, I think it would be easier to have all mappers in an OSD option. CRC detection will still work for known games, but the mapper option will override any detection for these edge cases.
Any cons?
Probably very handy, there are always odd mapper cases. I suppose automatic detection would still be the go to, but nice redundancy
Could just use a database 
A database requires changes in the HPS side
Yes, but if it’s better than having to manually select mappers, isn’t that a better solution?
I mean, I don’t know how many mappers there are, but if it means toggling through ~15 options, that seems a pain
I am alright with manually selecting the mappers.
Last core using a database (MSX2) has been in development for 5 years because of the complications of that approach.
The N64 core does it, and I hacked one together for the Saturn core in the past - it’s not a huge amount of work 
The force Mapper option is for unkown ROMs only, and to easily find the mapper to include them.
I'll keep using the CRC option anyway, even if still hardcoded.
But I don’t particularly care - I’m just pitching an idea so that things “just work” rather than having an end user needing to know which mapper to use
For now, 23 ROMs will be detected by CRC
All hardcoded
I'm reducing the mess in system.vhd by moving the CRC lists to another .vhd file
Adding a new game will require adding it to this list and recompiling.
Hence why I suggested a separate file 😉
But it’s probably not that likely to need changing
I thought you were suggesting a .csv file or something like that.
Well I was, but something that main read and toggled confstr bits as necessary
Exactly the same principle as what you’re doing right now, but not in the core itself
It’s not a perfect solution, but a few cores have used it by now
But honestly I don’t have any strong feelings. I was just trying to save future work by needing to recompile. It’s not major though
That was my ideal solution, but I didn't want to mess with the Menu.
Why would you need to mess with the menu?
I mean, the HPS side
Ah, gotcha
I never edited anything there.
I’ve only edited there 😅
I don't think I even have the tools to compile it
Don’t let me derail what you’re doing 🙂
But it would be a solution for ROMs that require specific options besides mapper (PAL, no BIOS, Japan region, etc.)
Yeah, you could basically set everything if you needed to
I'll keep things simple for now. Only 3 mappers are being detected by CRC anyway.
I'll make things complicated. SEGA Pico when ? 
ShaneLynch is working on it
Just in case you weren’t aware 🙂
How are the games going to be packaged
Pass 🙂
Another option is to use different file extensions for different mappers. Some other cores with limited mappers do that.
I remember that on the old Atari 2600 core, but I never really liked it. Renaming a file until finding the correct mapper is way more trouble than changing a menu option.
nonstandard file extensions are usually a bad option from a ux perspective
And the idea is that all official ROMs will work on "Auto". The mapper option would be for translations, hacks, etc.
why not all things?
use heuristics like 2600
we've learned the hard way that external metadata is shit
There are heuristics for most mappers. But I couldn't find anything for three specific mappers yet.
they don't have any registers?
Maybe, I was looking for headers or other patterns.
two of the missing ones are those that have extra RAM
and the other is 48KB with no mapper
Thinking of automatically working, there's not really a way to force SMS or GG at the moment is there?
Like the distinct different GG release of Castle of Illusion is a ".SMS" file by no-intro standards, but you'd want it to run in GG mode, despite the file extension.
No way to do that on the core is there?
Not that I know of. I had to rename Wonder Kid prototype to work in GG mode. It is the same ROM for both SMS and GG.
Castle of Illusion has some differences, but the GG version still uses SMS mode
Rastan GG runs with the SMS extension, but is silent if you try to use FM sound since it was removed from the GG version.
does the sc3000 portion include tape loading functionality? There have been some recently done type-ins from old magazines, would be cool to be able to run em
Those GG/SMS differences would be nice if you could force the system was my thought.
I guess in particular, the difference would be far greater if the GG SMS display output mixing pixel RGB values was implemented in HDMI. In a way, that seems to be what some games (like Castle of Illusion) did to improve text visibility seemingly, accounting for the way SMS mode is handled in particular by the GG screen.
For sure it would need to be an opt in option as people love those clean pixels, but it would be neat to replicate how the at least some of those SMS on GG games were designed
The few SMS games that were sold on GG carts run in SMS mode on the Game Gear anyway
So the resolution output is the same as an SMS
In my experience SMS mode on the GG screen was awful because of lost detail on the GG's lower resolution screen
That's why I always think of Castle of Illusion as a great example, as they went to the effort of changing the text and bits. So, that change only makes any sense at all if viewed in different circumstances, like the GG original LCD
Yeah, they changed palette values too.
But ultimately a hack that changes the viewport resolution would make it better
What about a message on load that says: “you know guys, this system is kind of a mess to deal with”?
I'm trying a full heuristics approach
So far I managed to break almost all of the mappers 😄
Tested all the SG-1000 games I have on the latest unstable and the only one that doesn't work correctly (garbled graphics) is Chack'n Pop.
And Othello doesn't load...
Othello is the same mapper as The Castle. It will work in the next version.
Oh wow, always wanted to check out The Castle, thanks for your hard work!
It’s a really cool game—definitely worth checking out.
I think the version built into the Othello Multivision has a different mapper, but that one requires buttons built in to the Othello Multivision.
The Castle also has a sequel on MSX, Castle Excellent. There's an FC/NES version too, but that one adds choppy scrolling. The NES one (renamed to Castlequest, not to be confused with the FC game by the same name) also has 50 lives for some reason.
It is loading, but it plays by itself
The standalone version is playable
Only Nemesis and Wonder Kid Proto are still failing auto detection now.
From the current mappers
SMS Basic 1.0 from JasonA
https://misterfpga.org/viewtopic.php?t=10362
This build fix Codemasters regression and add heuristics to detect these mappers:
- Castle (32KB ROM heuristic based on mirroring)
- Dahjee Type A (preamble detection)
- Nemesis/Korean 1 and 2 (page-0 / last-page blank test)
- Zemina 16KB (header byte detection)
Skooteristics
Thanks so much for all the SMS work. My most used core! I'd be loving testing if not for the newborn 😆
@vivid ledge Have you tried adding support the SEGA Mark III link cable for F-16 Fighting Falcon?
Apparently the cable might not have been released but the code is still in the game to support it.
I have not looked into this.
i know this all too well right now lol
Yeah, you can build one
But does the SMS core have I/O to support it
Limitations, but I dunno, maybe enough? IIRC there was an effort for 3D glasses support. I never did have time to dive deeper into understanding that or trying to get a bespoke SNAC to even try....
This is an attempt to get sorgelig to agree with the merge. He doesn't want the OSD option at all, but it was already there when I arrived.
Saint Skooter
keep this up and they’ll make a national holiday in your honor in Brazil
What’s the purpose of the OSD option?
select the mapper if the automatic detection fails
for translations, hacks, new dumps, bugs, etc.
the option is there in the current stable build, it is called "Disable mapper", but it actually forces de Sega mapper
On Master System "Wonder Kid (Korea) (En) (Unl)", Auto it is just black screen
If I set Zemina and load again the game it is black screen
if I change to auto it starts
I don't have this ROM.
I didn't know a final version of Wonder Kid standalone existed
That would be a good use for the Mapper option. This probably uses the Wonderkid mapper.
It was being used only by the prototype of Wonder Kid
Bugfix: Wonder Kid would not load when BIOS is in use
By the way: Wonder Kid (Korea) (En) (Unl) and Wonder Kid [Proto] are the same ROM.
So it was already supported, but there was a bug loading it when BIOS was enabled.
Thank you ❗
From the looks off it, Wonder Kid is based off the NES Adventure Island II?
When I try to run some games like The Castle, Super Boy I and II using a BIOS such as Hang-On & Safari Hunt, the games won’t load and instead return to the BIOS game selection screen. Is this expected behavior?
Depends on the BIOS. The Japanese one should run everything.
The Hang On & Safari Run checks for SEGA signatures not present in most unlicensed ROMs.
I just tested it using the Space Harrier BIOS, and Super Boy and The Castle (Taiwan) worked. The Castle (Japan) did not.
I will check it. Thanks.
No problem! I’m the one who should be thanking you for all the work you’ve been doing on our beloved Master System core.
Thank you!!
This build implements savestates.
Notes:
- BIOS built-in games will save to DRAM only; saving to the SD would require changes in the Linux side. Workaround: use an empty ROM.
- Saves from this build may not work in future builds.
Save States are working fine here, tested some homebrew games too. 😎
Strange bug on my side, the Game Gear & Master System screen are rotated.
I will check with the scaler and the screens at home.
Can confirm too. Loaded up about 10 SMS and GG games and all of them are rotated 90 degrees to the right for some odd reason
Sonic 1 can't be loaded immediately on GG too, I need to launch another game before with the core.
EDIT ; I'm testing something.
I remembered something stupid like that one time on N64 and PSX cores testing phase.
Thanks for testing. I will check these bugs.
This rotation issue is using analog output or HDMI?
HDMI on mine.
I have a Morph 4K, so I'm not using the scaler. I may have broken something on the way.
I'm checking if this is an issue with the older config files.
Nope, I remove all my config files for the core (GG and SMS), no change.
So, it's something that is broken on the core.
(This time, I'm sure.)
Sonic 1 still broken too?
Give me a minute.
Still broken too.
Blue light screen after loading.
The ROM file is okay, SHA1 and CRC32 values are correct.
For example, I need to launch "Sonic the Hedgehog - Triple Trouble" and Sonic 1 once again, it will work after that.
The rotation thing I think I found it, I'll compile it and bring a new version in ~20 minutes
This may be related to something with the BIOS option.
When I launch the core with a MGL file (SEGA Game Gear.mgl), with BIOS as Disable, it refuses to work.
If I cycle through Internal, Ext. File and once again Disable, the game works just after that.
Thanks for the info. This will help me track the regression.
Thanks, that's very helpful.
I think Sonic 1 is being misdetected as Zemina mapper
I'll exclude Zemina mapper from the GG path.
It also happens with the SMS Sonic 1, and only on the first load, that's weird...
But I'll have to harden the Zemina detection anyway
This build fixes the rotation bug from the last build.
Sonic 1 detection still needs more work. It needs a forced Sega mapper for now.
Rotation was an easy fix. I was trying to fix Sonic together to avoid so many builds. I don't want Robby to run out of pins. 🙂
But Sonic detection is being tricky. I'll try a refactor next week.
do these games really not have any kind of header?
how has this been overlooked for so long?
I suppose it's possible nobody has ever attempted to play SMS
Some (Most?) Zemina/MSX games starts with 41:42. These were working for a long time. The others didn't load, some of them in the github issues for a long time too.
Yes, most (all?) of them are MSX ports. They were released in Korea, unofficially.
is this another system like atari that has no built in headers so you can only determine mappers through heuristics?
In most cases, yes.
ah so they are unlicensed stuff on an unpopular system, no wonder nobody noticed
They noticed it, they were in the issues for a while.
people make issues for anything, people make issues for weird nes games all the time, but none of the people who play games notice
there's a lot of games out there that aren't really playable
There are nice games among the Zemina stuff.
I think I got most of them working detecting writes to specific regions
and a few exceptions have to be detected by CRC
well the sms cart header has a checksum in it
and a product code
why can't you use those?
do they? let me check this
if they do, it is encoded somehow
I know Sega stuff has the TMR
but unofficial games and even some official earlier japanese games probably won't have that
2 bytes only, that could be anything in the unofficial games, I could check for collisions, but I don't think this is reliable to identify ROMs uniquely.
The CRC16 of the last 8KB block which I'm using is safer.
Anyway, the heuristics are supposed to be working fine. Sonic 1 is the only game breaking it so far, but I don't think it is writing to the Zemina registers, it must be something else.
I think ideally we should support all the mappers, even those multigames cartridges, but sorg already said it is pointless, counter-productive and makes core more complicated.
The ROM header or disc ID is a defined area of a video game cartridge ROM or CD-ROM used to identify software. Sega mandated that software include a header, both so the hardware understood what it was running, and for cataloguing purposes.
Sega's ROM headers were designed to be human readable, so details of compatible software can be understood ...
Many unlicensed games, particularly ports of SG-1000 or MSX software, do not include headers, as Asian consoles typically made no header checks. However, many post-2007 games released by Tectoy, which were built-in exclusives in later Brazilian Master System and Mega Drive models, continue to have headers despite never being released on physical media.
you could use the lack of a header as an indicator, in fact
maybe that's realistic on sms, but on NES we deliberately do not because including useless mappers excludes more useful other things, resources being finite on an fpga and all
That's a good idea. If a SEGA or Codemasters header is present, all Zemina and other unlicensed stuff detectors can remain disable. That will fix Sonic 1 and maybe other games.
de-facto whatever is in the place of, say, the rom's serial is probably unique anyway
Yeah, that's true. The remaining mappers should be low priority.
I ran a script through my collection to extract the product code. A bunch of unlicensed games have "00000" there.
And there are unlicensed games which use the Zemina mapper that have a valid Sega header.
The product code region is often set in homebrew too. Admittedly to all 9s or other such things, but so long as you can get around it. 99% of the time just using the default sega mapper at least
I removed the Zemina heuristics and Sonic is no longer misdetected. It was only 3 games using Zemina heuristics anyway. Now they are detected by CRC.
I could use the Sonic product code (7A51B) to select Sega mapper for it. But I think it is better to leave the exceptions for exceptions (unlicensed games) than to a original game with the most used mapper. It is likely that there were other games being misdetected as Zemina.
Will some games that use the Zemina mapper stop working?
They will be detected with another method.
I noticed something weird yesterday. With the internal BIOS enabled Speedball (PAL only game) runs with half of the game speed (or slower). Without BIOS it runs at full speed.
The 3 games that currently use heuristics will be detected by CRC. If there are others I can add their CRC too. Most Zemina games are already identified by their first 8 bytes (4142).
Does it happen in the stable build? The internal BIOS have some known issues.
Yes, happens there too.
Loading an external "[BIOS] Sega Master System (Europe) (v2.0).sms" is fine though.
I have a mistery here: Olympic Gold, both USA/Japan/Brazil and Europe versions give "Software Error" using western BIOS.
Only the Brazil only version works.
I thought it was a bug in BIOS implementation, but I just got the same behavior from Mega Sg
Strange, works fine for me using
[BIOS] Sega Master System (USA, Europe) (v1.3).sms
[BIOS] Sega Master System (Europe) (v2.0).sms
Same issue with Mega Everdrive Pro BIOS
Regarding the Olympic Gold mystery. I've made a script to check the headers. both USA/Japan/Brazil and Europe versions have a header but their checksum is 0x0000.
Only the Brazil version is correct.
So I wonder if these dumps are actually correct and from the cartridges that were distributed. I don't think they are. Otherwise they wouldn't run in any American/European SMS...
The one called prototype, on the other hand, has the correct checksum.
Mystery solved: I was using the ROMs from @Master System - Master EverDrive 2022-05-04.zip
No-Intro has only two versions of Olympic Gold, Brazil and Europe. Both with correct checksum.
I won't trust these everdrive packs anymore.
yah they’re garbo
There are other mistakes, "Felipe em Acao (B)" is listed as a Brazilian licensed hack, but it is unofficial. It was never released by Tec Toy.
They are cool for bringing interesting hacks, translations, tools that are not in No-Intro scope, but not reliable for the origin of the releases.
Yes, Omar Cornut (Bock) and Maxim have redumped most of the cartridges with some others over the years.
And the dumps were integrated into No-Intro.
The Everdrive packs are generally out-of-date and based on GoodSMS (which was faulty at least or even called a fraud on some 'verified' dumps).
I like that people here can actually explain why something sucks. I just go “IT BAD, NEXT”
I'm trying to understand why there is a button called "Arcade 3" in SMS.
the SMS core is used for Sega System E, some MRA's is present on Release directory
Presumably for the arcade games that use the core
Yeah, I got that the Coin button is for System E
but Arcade 3 is a weird name, maybe it is START and it was renamed to avoid confusion
Any reason to have these buttons mapped in SMS mode?
maybe some homebrew
it is this commit
those two games are Sega System E and may required a third buton
I get it, buy are these buttons (Coin, Arcade 3) ever used in any SMS game?
I see no reason to have them in "Define SMS buttons"
System E games have their own names for buttons, and skip the unused ones, according to the MRA files.
You may still need to map them from the SMS core for them to work if you load an arcade game via MRA
Controller mapping is sometimes esoteric (see: N64)
Yeah, ok, but there are other two buttons that are currently hidden
buttons 10 and 11
They are added on the commit for Sega System E but don't know the use case.
@soft urchin may have the information
As an aside, are there any SMS based arcade games we are missing that could potentially be run on the core?
The naming should be clear ``` "J1,Fire 1,Fire 2,Pause,Coin,Arcade 3,Soft Reset;",
also we have question regarding buttons 10 and 11.
We figured out for Arcade 3 button.
I don't see buttons 10 and 11 where I am looking.
The mapper should skip buttons named '-'. in the SMS core name the arcade only buttons '-' and then in the arcade MRAs name them whatever
These ones:
https://github.com/MiSTer-devel/SMS_MiSTer/blob/5c07fe8bf4cae1009e42b335bfd782ec611aa880/SMS.sv#L894-L895
.j1_start(swap ? joy_1[11] : joy_0[11]),
.j1_coin(swap ? joy_1[10] : joy_0[10]),
I'm using button 12 for SaveStats for now:
"J1,Fire 1,Fire 2,Pause,Coin,Arcade 3,Soft Reset,-,-,SaveState;",
While it wasn't done officially (AFAIK, it's possible it was done in Brazil since they had systems packaged with 6 button controllers), some games were hacked to support the extra buttons of the Genesis controller and they work on real hardware (SMS and Genesis).
https://github.com/MiSTer-devel/SMS_MiSTer/blob/master/releases/Astro Flash (Japan).mra#L26 10 and 11 are defined in the mras. Maybe they are duplicates of 6 and 7. mras were new when I did this
<buttons names="Fire/Button1,Transform/Button2,-,-,-,-,Coin,Start,Pause" default="A,B,R,Start,Select" count="1"/>
Or maybe I was simplifying things because inputs are handled differently on arcade hardware. Feel free to rewrite to better match newer standards.
This was the first core to support both a console and arcade in the same core (neo geo worked differently).
It also may have been an attempt to make coin and start consistent across arcade cores.
That actually seems to ring a bell somewhere for me.
I'll leave it the way it is and add savestates in button 12, skipping buttons 10 and 11 on mapping. It is safer, less chance of breaking something.
I mapped a button on the controller as save state, and when I pressed the button to test it, this message appeared on the screen. I didn’t understand how it works. Do I need to use a button combination to make a save state and load state?
Yes,
SaveState + Left or Right to select a Slot
SaveState + Pause + Down to save
SaveState + Pause + Up to load
I copied the hint message from the SNES core. I don't like it, but I couldn't think of anything better with so few characters.
The combo is also not my creation, it is in mister documentation: https://mister-devel.github.io/MkDocs_MiSTer/basics/hotkey/#cores-that-support-savestates
The new unstable nightly fixed Gear2Gear support? Isn't that the Link Cable functionality? Is there a method to use the core to play the multiplayer games somehow?
I tested a few of the Genesis controller hacks via the SMS core. They work with an actual Genesis controller via SNAC.
I think there was a small visual bug on the 2p gamegear core
But it was working
I wasn't even aware we had a 2P core 😀
System E pause is currently broken in stable core, right?
i wasn’t aware
but also
adding save states to the core is a very pleasant surprise
tested the feature on Alex Kidd, swapping states, restoring and loading works fine!
so happy to see save states added! I should be able to test a bit next week
#games-and-patches message