MiSTer-devel / SMS_MiSTer

Sega Master System for MiSTer
45 stars 43 forks source link

Penguim Adventure (SMS) doesn't work #93

Closed bootsector closed 3 years ago

bootsector commented 3 years ago

MiSTer SMS core simply gets locked in the SEGA logo screen when loading this:

https://www.smspower.org/Games/PenguinAdventure-SMS

bootsector commented 3 years ago

@gyurco is this game supposed to work after your MSX mapper logic fix? I've tried it and it didn't seem to work.

gyurco commented 3 years ago

No, it's not related.

sorgelig commented 3 years ago

Is Korean-only game supposed to run on non-korean console?

gyurco commented 3 years ago

The game doesn't work because of its unimplemented mapper logic. Should work on any console type.

theflynn49 commented 3 years ago

Hello everyone. Long time no see.

What gyurco did will probably work, but some other games may start with F3C3 and will make a mess. A1A2 is nop:nop-like and is used as a marker for the korean mapper; but some games have not been patched in the field. So let me quote some old messages (2019/5/6) from the atari forum :: "- most SMSMSX games need the OSD parameter "no bios"

F-1 Spirit : adr $0000 is : F3 C3 E4 00 00 00 should be : 41 42 F3 C3 E4 00 Knightmare II : adr $0000 is : F3 C3 A5 00 00 00 s/b : 41 42 F3 C3 A5 00 Nemesis2 : adr $0000 is F3 C3 E9 00 00 00 s/b : 41 42 F3 C3 E9 00 Penguin Adv : adr $0000 is F3 C3 A6 00 00 00 s/b : 41 42 F3 C3 A6 00

These are dual compatible MSX/SMS games, and they are supposed to start with the two-bytes "AB" which are quite alike NOPs in z80. That's the way they (but who is "they" ?) choose to recognize these games, but in real life, not all of them had this modification. At the end, the choice could be to recognize all these dual-compatible games with a separate extension, or finish the job by modifying the roms.

I should add : only about 10 roms are involved by this SMS/MSX special korean mapper." To play safe, I would patch the game rom and revert #94, but it's just my 2-cents.

gyurco commented 3 years ago

I've added some measures against triggering the mapper accidentally. I've tested several games which starts with F3C3 (like Xenon2, Rambo3, several others) and seems to work. Of course if it causes problems, then another approach might needed.

bootsector commented 3 years ago

Just tested the game against commit d3e7c99099b661b943b3045d5819bd778f87bd43 and it works now. BIOS must be disabled in the OSD.

gyurco commented 3 years ago

The question is not if it works, but does it break something? Maybe further no-go for the MSX mapper can be the BIOS enabled state - use only if the BIOS is disabled (as you must do it anyway, because the games are not turning it off by themselves).

wwark commented 3 years ago

During my test I don't see any side effect with this change. Thanks !

theflynn49 commented 3 years ago

@gyurco For some reason the last core doesn't compile on my machine, but I ran this one liner on my collection : for F in *.sms; do HE=$(hexdump -n 2 "$F" |head -n 1 | grep "c3f3"); test "$HE" != "" && echo $F; done to get this list of games that may be affected and should be checked, if someone has the courage to do so =>

A/As Aventuras da TV Colosso (B).sms
A/Asterix and the Secret Mission (E) [!].sms
A/Ayrton Senna's Super Monaco GP II (E) [!].sms
B/Baku Baku Animals (B) [!].sms
B/Battlemaniacs (B) [!].sms
B/Bram Stoker's Dracula (E) [!].sms
B/Bram Stoker's Dracula (E) [T+Bra_TransCenter].sms
G/Ghouls 'n Ghosts (UE) [T+Bra_Guto].sms
G/Ghouls 'n Ghosts (UE) [T+Bra][p1][!].sms
G/GP Rider (U) [!].sms
J/James Bond 007 - The Duel (B) [b1].sms
J/James Bond 007 - The Duel (B) [!].sms
J/Jungle Book, The (UE) [b1].sms
J/Jungle Book, The (UE) [!].sms
J/Jungle Book, The (UE) [T+Bra_Emubrazil].sms
J/Jungle Book, The (UE) [T+Bra][p1][!].sms
L/Lemmings (E) [!].sms
L/Lemmings (Prototype) [!].sms
L/Lion King, The (E) [!].sms
M/Ms. Pac-man (E) [!].sms
P/Pit Fighter (B).sms
R/Rambo III (UE) [!].sms
R/Robocop versus The Terminator (UE) [!].sms
S/Shooting Gallery (UE) [!].sms
S/Smurfs Travel the World, The (E) (M4) [!].sms
T/Terminator, The (E) [!].sms
T/Three Dragon Story, The (K).sms
X/Xenon 2 (E) (Image Works) [!].sms
X/Xenon 2 (E) (Virgin) [b1].sms
X/Xenon 2 (E) (Virgin) [!].sms
X/X-Men - Mojo World (B) [!].sms
bootsector commented 3 years ago

I’ve tested with a couple of games and it seems to break some of them, such as: Bram Stoker’s Deacula, James Bond 007 The Duel and The Lion King. I didn’t go through all of the games in the list and also I’ve tested only to the point I’m able to move the character.

bootsector commented 3 years ago

Given this breaks compatibility of other games I vote for reverting this commit and just patching the games as suggested by @theflynn49

wwark commented 3 years ago

I didn't test those games. Yes it is better to revert but maybe a good solution can be found other software emulator like Meka can handle those mapper's. https://github.com/ocornut/meka/blob/f0461551e1507d26ebc0eaa69b9ee061c428b8c4/meka/srcs/mappers.h#L75

gyurco commented 3 years ago

I’ve tested with a couple of games and it seems to break some of them, such as: Bram Stoker’s Deacula, James Bond 007 The Duel and The Lion King. I didn’t go through all of the games in the list and also I’ve tested only to the point I’m able to move the character.

Yepp, they're writing to 0x0000 and 0x0001 for some reason (bug?). Then I'm not against reverting it.

bootsector commented 3 years ago

I will just patch the game now. Thanks for looking into this @gyurco