I have an EMS 64 GB Smart Card USB, and while almost all Gameboy & Gameboy Color games work in it, there are a few that do not. The list is here:
Super Mario Land 2 (see BF)
Megaman V (blank screen)
Who Framed Roger Rabbit (garbled copyright screen, resets)
Gargoyle's Quest (see BF)
Donkey Kong Land 3 (blank screen)
Game & Watch Gallery (wrong music, graphical garbage, resetting)
Asteroids & Missile Command (mostly blank screen, random lines)
Kung Fu Master
Pyrmaids of Ra
RoboCop v. the Terminator (see BF)
SeaQuest DSV (see BF)
Spiderman and the X-Men: Arcade's Revenge (see BF)
Gauntlet II (garbled initial screen)
Pokemon Red/Blue (garbled "Ed" tile in name select screen)
I can only think of three reasons why these games would not work:
1. Improper Bankswitch Emulation in the cart
2. Flash is too slow
3. Cart's setup conflicts with Game code
The Bung Fixes solve the Super Mario Land 2 problem (garbled map screen) and makes Gargoyle's Quest, (blank screen), SeaQuest (garbled screen) Spider-Man & X-Men (ditto) & RoboCop v. Terminator (ditto). It improves Who Framed Roger Rabbit (first copyright screen visible, will go no further) but not Pyramids or Kung Fu Master. However, the Fixes only change one string starting with EA 00 (other than the global checksum). What does this do and how can I improve and fix the other ROMs?
kyuusaku wrote:
1.
That would make sense. I would suggest that the Card is emulating an MCB5, which can cause some difficulty for older games. If an MCB1-3 game writes to somewhere in the 3000-3FFF range to switch banks, it may likely end up with something very different that what it expects. How does one figure out which bytes are used for bankswitching?
You'd have to put breakpoints on MBC writes, determine what write breaks what, then fix it.
Or if the Game uses a value greater than what the MBC originally would have expected, then it may change to a random bank.
I can confirm that it is the MBC that is causing the trouble here. In every case, if you switch the 0x147 from an MBC1/2/3 type to an MCB5 type and play them in an emulator like bgb, you will encounter the exact same problems with each ROM as on the Gameboy.
Now on MBC5, there are three instances where the problem can occur:
1. Game writes to 3000-3FFF to perform a bankswitch
2. Game writes a 00 value to perform a bankswitch, seeking to select bank 1 on an MBC1/2/3, but selects bank 0 on an MBC5.
3. Game writes a value greater than 1F (MBC1), F (MBC2), 7F (MBC3) to switch a bank on MBC5, the upper bits selecting some random bank.
In many cases, it seems like number #2 is occuring. The Bung Fixes are supposed to address #1, and if they cannot do so alone, then one must adjust for #2.
Zelda Oracles uses mirrored banks, so I doubt it's number 3.
If it's the bank switching numbering you should be able to do a minor ASM hack to fix the number on the fly. You just need to find the mapper writes and patch them so if the write is going to be zero to write 1 instead. Shouldn't be hard at all.
This is where I need help. A typical bankswitch command is sometimes as simple as
Code:
ld (2100), a
where register a contains the number of the bank to which the program wants to access. In these cases, a contains 00 and the MBC1/2/3 understands that to switch to bank 1 while the MCB5 will switch to bank 0.
My trouble is trying to figure out where previously in the code the program set register a to 00 and how to tell it to write a 01 without breaking anything else. Also, I would need to figure out all instances where this would occur.
Great Hierophant wrote:
My trouble is trying to figure out where previously in the code the program set register a to 00 and how to tell it to write a 01 without breaking anything else.
Instead of worrying about what happened before, it would be much easier to replace the actual write by a call to a subroutine, which you'll place wherever you can. In this routine you can modify the value as desired and then write it. Just save and restore whatever flags or registers you mess with and you should be OK.
Quote:
Also, I would need to figure out all instances where this would occur.
I don't know much about the GB scene, but there's an emulator with good debugging capabilities you can just trap all writes to the registers in question so you know where they happen. You can also search the ROM for the 2 bytes that represent the address of the register and check if each instance of it is actually a bankswitch command, and replace by the call to the subroutine.
This is exactly what you want to do. I'm not particularly good with Z80 type ASM since I have rarely been involved with it but you should be able to replace the actual write opcode to the register with a JSR type command to some free space in the Fixed ROM bank. All you need here is to check the contents of the value to be written for being 0 which should probably be easily determined by a CMP or perhaps just a BNE type command so that you can load the value with 1 if it was 0 and do nothing if it was not 0 and then do the write you replaced with the JSR followed by a RTS.
Again I'm not experienced with Z80 type ASM so I can't really be specific. But it really should't be that hard to do. Not unless the fixed bank is jam packed and you have no free rom space.
I don't know much Z80 either, but from what I've read "ld (2100), a" can easily be replaced by "call XXXX" (XXXX is the location you found to place your subroutine), because both instructions occupy the same amount of bytes (3).
Then, if all you need is turn 0's into 1's, the routine can be something like this (note that I never coded Z80 before, so I don't know if this is the best way to do it or if it works at all):
Code:
push af ;save the flags and a
cp 0 ;compare a to 0
jr nz, skip ;skip if not equal
inc a ;correct the value
skip:
ld (2100), a ;switch the bank
pop af ;restore the flags and a
ret ;return
Pretty much correct, except people would usually use a one byte flag update instruction (like OR A or AND A) instead of CP 0.
tokumaru wrote:
I don't know much Z80 either, but from what I've read "ld (2100), a" can easily be replaced by "call XXXX" (XXXX is the location you found to place your subroutine), because both instructions occupy the same amount of bytes (3).
Then, if all you need is turn 0's into 1's, the routine can be something like this (note that I never coded Z80 before, so I don't know if this is the best way to do it or if it works at all):
Code:
push af ;save the flags and a
cp 0 ;compare a to 0
jr nz, skip ;skip if not equal
inc a ;correct the value
skip:
ld (2100), a ;switch the bank
pop af ;restore the flags and a
ret ;return
This code will fix the problems in:
Megaman V
Game & Watch Gallery
Pokemon Red/Blue
Kung Fu Master
Pyrmaids of Ra
Asteroids & Missile Command
So are you asking a question or telling us you did that and it fixed those? I'm not sure what you are saying exactly.
MottZilla wrote:
So are you asking a question or telling us you did that and it fixed those? I'm not sure what you are saying exactly.
I fixed them using the code. I am still puzzled about DKL3 and Gauntlet II, I have no idea what they are doing that would break the emulation, and they seem to be a bit timing sensitive. Who Framed Roger Rabbit is also working to the extent I was able to bypass the initial "bad" bankswitch writes.
For the sake of being productive do you have IPS patches or anything organized for the games you "fixed" for the USB SC 64M? I'm curious as I have been considering getting one myself.
I bought a GB USB Smart Card 64M and am having trouble with some games like you were. Well really only one game I've tried so far which consistantly crashes. The game is Battletoads in Ragnarok World. I'm investigating it.
Anyway, as in my last post, if you can share any fixes you've made that would be helpful. Particularly if you managed to fix Mega Man V.
Update: I made a fix for Battletoads in Ragnarok's World that seems to work well. If anyone is interested in it I can send it to them.
Here are all my patches to date:
http://www.mediafire.com/file/mkmywmnzdnh/GBUSB Smart Card IPS Patches.zip
I would appreciate any fixes, and help with the two games I haven't been able to fix (DKLIII & Gauntlet).
About DK Land 3, did you try the japanese Color version to see if that works? I'll take a look at both games when I get the chance. Thanks for the fixes, I was wanting to play Mega Man V.
MottZilla wrote:
About DK Land 3, did you try the japanese Color version to see if that works?
The Japanese Color version does not work, just gives a blank screen.
I have Donkey Kong Land 3, both versions, figured out I believe. I'm going to test them and then if it works I'll post a link to an IPS or tell you the hex offset and changes.
Both DKL3 and the japanese color version have copy protection of sorts. Basically there is a loop that writes to registers used in flash cart mappers to screw up the settings and crash the game. To prevent this you just remove the actual write to register.
In Donkey Kong Land 3 (U) its at $F5F2. In the japanese color version it's at $F5FB. The original sequence of code is: 02031D20FAAFEA0000C9. You want to change it to: 00031D20FAAFEA0000C9. The game should run now.
Oh yes and don't forget to fix the checksum.
I fixed Gauntlet II. I'll upload an IPS patch for it.
*link dead*
Mirror: h..
p://www.megaupload.com/?d=EIVAYSUW
Contains IPS Patches to Fix:
Battletoads in Ragnarok's World (U)
Donkey Kong GB - Dinky Kong & Dixie Kong (J) [C][!]
Donkey Kong Land III (U) [S][!]
Gauntlet II (U)
Let me know if you find more games that don't work.
MottZilla wrote:
Let me know if you find more games that don't work.
I have found two more:
Bubble Bobble II - Resets to Flash menu just before beginning the first level.
Castlevania II : Belmont's Revenge - Crashes in the 1st Level of Dracula's Castle, just past the second door. Use Heart, Orb, Candle, Empty at the password screen to get to the beginning of the level. Konami Collection (Colorized) version doesn't work either.
Legend of Zelda : Link's Awakening - Crashes when trying to save , does not save. Link's Awakening DX works fine.
I'll have to check them out when I get the chance.
I fixed Castlevania II. The IPS patch is in my archive of fixes now. I only did the original GB version so far, didn't look at the GBC version yet. I'll look at the other games before the color version I think.
MottZilla wrote:
I fixed Castlevania II. The IPS patch is in my archive of fixes now. I only did the original GB version so far, didn't look at the GBC version yet. I'll look at the other games before the color version I think.
The fix for the color version should also work. I have never had any problems with Game Boy Color games on this card, unless they are ports of a Gameboy game.
Well a few of the games I fixed like Battletoads and CV2 crash because the flashcard foolishly lacks register protection it seems. Between something like $6000-$8000, atleast in the $7000 range if a write occurs it will crash the game on the flash card. Both these games appear to write to this region by accident/bad code. Another game, I think it was DK Land 3, purposely writes a range of registers in this area in an attempt it seems to crash probably Bung flash cartridges. I can't imagine why they didn't give the "master registers" a protection control so that once a game is launched the game can't effectively kill itself.
MottZilla wrote:
I can't imagine why they didn't give the "master registers" a protection control so that once a game is launched the game can't effectively kill itself.
That would have killed the feature that many of these flash cards had, at least in the GBA era, to patch a game to reset to the menu upon a specific key combination.
Well we are talking about a GB/GBC card, not GBA.
I guess my post was unclear. I should have added the following: "I am not aware of whether this feature existed on the GBC carts or was new to the GBA carts."
I see what you mean. Personally I never found such features useful. And with this GB/GBC flash cartridge, trashing the master registers seems to be uncommon but does happen. Thankfully the BGB emulator and the debugger can usually spot the source of these writes so you can make a fix.
This device was apparently marketed towards the 8-bit portable music crowd; game compatibility was not among the highest concerns. In order to assure that every game worked with the device, you have to play through them all it would seem.
The most compatible flash carts are those that are custom made from a donor cart and replace a game ROM with some kind of rewritable memory.
Apparently there seems to be more issues with carts writing, whether intentionally or not, in areas of the memory map that will crash the flash cart than in a mismatched MBC emulation.
Are your IPS patches still available anywhere, Hierophant? The Mediafire link appears to be dead. Thanks in advance and best wishes.
I was notified my fixes were offline, I didn't realize it. I uploaded them to a mirror and they also include some or all of GH's that were available.
Awesome!
Thank you so much, MottZilla.
Hi,
I've patched Link's Awakening so that it no longer crashes when saving on an MBC5 (i.e. on these USB carts). Untested on a real GB, but it fixes the crash on emulators, anyway.
DOWNLOAD
Apply to a Link's Awakening 1.0 [!] ROM.
Technical details, for the curious:
The game maintains a "current bank" variable in RAM at $DBAF. At $07C0 is a procedure that writes this variable to $2100, switching the bank. Normally when switching to the first bank, LA is always a good little game and writes $01. However, during the reset procedure that the save routine calls, RAM is zeroed out - including $DBAF, the current bank variable. One of the programmer's thought they were being clever, I'm sure, by not setting it to $01 before switching banks afterwards, relying on the zeroing out and the behaviour of the MBC1. This of course causes a crash when running on an MBC5, which actually switches bank 0 in.
This patch replaces the write in the bank switch procedure with a call to a new procedure at $29A1. This procedure verifies that the bank to be written isn't 0 and adjusts it accordingly if it is. The code is basically the same as that suggested earlier in this thread by tokumaru/Dwedit, although I don't bother pushing/popping A (because the routine at $07C0 does this anyway - 2 bytes saved!). The area at $29A1 appeared to be unused space - hopefully it wasn't anything important.
I realize this probably isn't all that helpful for most people, since the DX version apparently works fine. Mostly a curiosity/practice thing.
It's always good to have another fix available.
MottZilla wrote:
I was notified my fixes were offline, I didn't realize it. I uploaded them to a mirror and they also include some or all of GH's that were available.
I lost all my fixes, could someone upload mine and MottZilla's?
adam_smasher wrote:
Hi,
I've patched Link's Awakening so that it no longer crashes when saving on an MBC5 (i.e. on these USB carts). Untested on a real GB, but it fixes the crash on emulators, anyway.
DOWNLOADApply to a Link's Awakening 1.0 [!] ROM.
Technical details, for the curious:
The game maintains a "current bank" variable in RAM at $DBAF. At $07C0 is a procedure that writes this variable to $2100, switching the bank. Normally when switching to the first bank, LA is always a good little game and writes $01. However, during the reset procedure that the save routine calls, RAM is zeroed out - including $DBAF, the current bank variable. One of the programmer's thought they were being clever, I'm sure, by not setting it to $01 before switching banks afterwards, relying on the zeroing out and the behaviour of the MBC1. This of course causes a crash when running on an MBC5, which actually switches bank 0 in.
This patch replaces the write in the bank switch procedure with a call to a new procedure at $29A1. This procedure verifies that the bank to be written isn't 0 and adjusts it accordingly if it is. The code is basically the same as that suggested earlier in this thread by tokumaru/Dwedit, although I don't bother pushing/popping A (because the routine at $07C0 does this anyway - 2 bytes saved!). The area at $29A1 appeared to be unused space - hopefully it wasn't anything important.
I realize this probably isn't all that helpful for most people, since the DX version apparently works fine. Mostly a curiosity/practice thing.
Awesome, I always wanted to play straight Link's Awakening again on a real DMG.
They are here. h..
p://www.megaupload.com/?d=2FV7QTGY
Both of ours though I don't know that they are all there.
I tested on real GB and I can confirm it works fine. Thanks a lot, adam_smasher for your good job!
Would you be able to do the same for Mario Land 2? Map is garbled, you know. In that case, what are the technical details of the reason why it happens?
Regards,
Josep M.
adam_smasher wrote:
Hi,
I've patched Link's Awakening so that it no longer crashes when saving on an MBC5 (i.e. on these USB carts). Untested on a real GB, but it fixes the crash on emulators, anyway.
DOWNLOADApply to a Link's Awakening 1.0 [!] ROM.
Technical details, for the curious:
The game maintains a "current bank" variable in RAM at $DBAF. At $07C0 is a procedure that writes this variable to $2100, switching the bank. Normally when switching to the first bank, LA is always a good little game and writes $01. However, during the reset procedure that the save routine calls, RAM is zeroed out - including $DBAF, the current bank variable. One of the programmer's thought they were being clever, I'm sure, by not setting it to $01 before switching banks afterwards, relying on the zeroing out and the behaviour of the MBC1. This of course causes a crash when running on an MBC5, which actually switches bank 0 in.
This patch replaces the write in the bank switch procedure with a call to a new procedure at $29A1. This procedure verifies that the bank to be written isn't 0 and adjusts it accordingly if it is. The code is basically the same as that suggested earlier in this thread by tokumaru/Dwedit, although I don't bother pushing/popping A (because the routine at $07C0 does this anyway - 2 bytes saved!). The area at $29A1 appeared to be unused space - hopefully it wasn't anything important.
I realize this probably isn't all that helpful for most people, since the DX version apparently works fine. Mostly a curiosity/practice thing.
According to the first post in this thread, the "Bung Fix" solves the garbled map.
Great Hierophant wrote:
The Bung Fixes solve the Super Mario Land 2 problem (garbled map screen)
Great Hierophant wrote:
...there are three instances where the problem can occur:
1. Game writes to 3000-3FFF to perform a bankswitch
[...]
The Bung Fixes are supposed to address #1
Presuming GH is correct (and I see no reason to believe he isn't), there's the problem. Mario Land 2 apparently writes to $3000-$3FFF to bankswitch (curiously, only when fetching the map screen graphics?), which, according to
this document, on a Bung cart will not switch the bank at all, and on an MBC5, like in the EMS carts, will use the lo-bit of the write as the hi-bit of the bank number.
Thanks for your reply, adam_smasher. I did read the 1st post where you mention "Bung Fixes" but I didn't understand if "fixes" is a verb or not. At first I understood it as a name and I thought there were some bung fixes available somewhere. I search bung gameboy fixes and I didn't find anything. So now with your new post I understand that you meant that Bung fixes (verb) this problem with their carts sold. Unfortunately I don't have any of those (only the GB Smart Card).
Best regards,
Josep M.
The "Bung Fix" is a previously made patch for the game, designed to fix the garbled map bug when running the game on Bung carts. It should fix it on the EMS ones, as well. Not sure if you can find the patch alone, but GoodGB lists the ROM as "Super Mario Land 2 - 6 Golden Coins (V1.0) (UE) [BF]".
In the GoodGBx romsets, variants will have a (BF) tag in the file name which denotes they have been "Bung Fixed". You could try using those.
Thanks for your suggestion. I tested on real hardware using GB USB Smart Card 64M and it worked fine. So for everyone who dumped their original Super Mario Land 2 game and wants to play a backup of it without the garbled and scrambled map, here's the IPS patch for you to add to your collection:
Super Mario Land 2 Fixed Map Patch
P.S.: Have a look at the readme.txt there... I hope you agree
About the Link's Awakening fix, I tested more with it and I'm sorry to tell you that it fails to save when starting the 2nd dungeon. You reach there after 15 minutes of playing or so. Before that it saves perfectly (GB turned off and save is restored fine), but when you free Bow-Wow (a living chained ball like those that appear in Mario games) it keeps following you wherever you walk and if you save you get a white screen where you can only see Link character outlined. If you quit the game and load the save game, it starts correctly at the same point but all the screen is still white, so you can't see the surroundings. When the GB is turned off and on, that save game position is lost and you get to the point where you saved correctly last time (before freeing Bow-Wow).
Adam_smasher, can you guess why is this happening? Maybe in your fix you changed correctly some value that appears again later in the code.
Thanks a lot if you can look into this.
Ack! Yes, it's possible my patch has overwritten something important or another. Or it's possible that there are more bad bankswitches embedded in the code. I'll take a look ASAP and try to fix this.
If you could clarify though - you say you get a white screen after saving. Do you mean by dying, then Saving & Continuing? As far as I can recall, that's the only way to save outside of Saving & Quitting, right?
Both ways of saving gives the white screen.
Can't reproduce on an emulator, sorry. Some possibilities:
1. You're doing something else to trigger this bug and ascribing it to the wrong condition (i.e. saving Bow-wow isn't the trigger, something else is)
2. The ROM didn't copy onto the flash cart correctly
3. The game is doing something weird that's tripping up the flash cart unrelated to the MBC5 bankswitching.
4. ???
At any rate, not sure what I can do to help at this point. Even if I bother trying to reproduce on the cart, that won't really help me debug at all.
Anyone else have any ideas? I'm out.
Does the game write to registers at a strange address? I recall fixing a game which sometimes would write to an address that does nothing on a normal cartridge but on the SmartCard it was writing to master bank registers.
I wish I could be more specific but I don't recall what address it was writing to that caused the problem.
Edit: Well in an earlier post of mine I said in the $6000 to $8000 range. So try running in an emulator with a break on write to that range. If the game is writing to that range I guess its messing up the Master Registers.
Another possibility, in Gauntlet I believe it bank switches like discrete mappers on NES with bus conflicts. I recall modifying this to always write at say $4000 rather than $4006 or whatever the number fixed the game to run on the SmartCard. So you could check to see if it is trying to bankswitch on non-standard addresses.
Hm, after a bit of investigation I'm pretty sure the game only ever writes to $2100 to switch banks. And I've checked every bank write the game does during its save procedure, and at no point does it write a bad value (00, 20, etc.)
Thanks for your help Mott, but TBH, at this point I don't think there's a problem with my patch. My guess is that your ROM, praedo, was either corrupt to begin with or didn't transfer properly onto your cart. I'll give it a shot on mine tomorrow and see if the problem really is there on real HW.
I said 15 minutes but maybe yo have to play up to 30 minutes. It starts to happen when that chained ball is following you everywhere.
You mean you have to play to the point that you rescue Bow Wow (I think that is his name) for the problem to begin occurring?
Alright, no idea if this is causing your problem, but it seems possible.
In what is, I think, the map loading routine, it makes bad bankswitches when loading certain maps (in ROM at $2DED). I should have caught this before.
Mea culpa. No idea why this usually doesn't screw things up, but...
Anyway, given that you seem to be having trouble with map loading, I'd imagine that this is the source of the issue. I still haven't been able to trigger this glitch, but give this new patch a shot and see if it helps. Sorry for doubting you =P
DOWNLOAD
That worked
Thanks a lot!
Using the last patch, I found another bankswitch problem in Link's Awakening. I played for many hours and it's difficult to explain when it happens but I can say it's exactly after this text script:
Hoot! I see you
have read the
relief... While
it does say the
island is but a
dream of the
Wind Fish, no
one is really
sure... Just as
you cannot know
if a chest holds
treasure until
you open it, so
you cannot tell
if this is a
dream until you
awaken... The
only one who
knows for sure
is the Wind
Fish... Trust
your feelings...
Someday you will
know for sure...
If I save and quit after this, this time I get a scrambled save select screen. If I turn off and on again, the game wasn't saved.
Hi,
I've been out of town for a bit, and then it took a while to get as far into the game as you.
Unfortunately - again - I can't reproduce this. Sigh. And I've taken care to make sure that what eluded me last time wouldn't again, so...
You're sure the crash happens immediately after the owl's speech?
He said a problem happens if he saves and quits at this point, not that it crashes at that point.
Exactly, it happens from that point onwards. Before that point I can save, turn off and it works fine when resuming. After Link reads this text
"TO THE FINDER... THE ISLE OF KOHOLINT, IS BUT AN ILLUSION... HUMAN, MONSTER, SEA, SKY... A SCENE ON THE LID OF A SLEEPER'S EYE... AWAKE THE DREAMER, AND KOHOLINT WILL VANISH MUCH LIKE A BUBBLE ON A NEEDLE... CAST-AWAY, YOU SHOULD KNOW THE TRUTH!"
written on a stone and then goes outside of Southern Shrine, the owl appears and from that point, wherever I go, the save screen gets scrambled if I choose "save and quit" and in fact nothing is saved. If I turn off and on, the save isn't lost and I appear again outside the Southern Shrine where I saved last time. I go inside, I read that stone, I go outside, the owl appears and again the game isn't saved.
Yeah, dybbi what to tell you. I just played through from the beginning up to that point looking for problems, and not a single one. I can save and reload my save just fine afterward.
Maybe he should download the save from his cartridge and post it online for you to test with it?
It's worth a shot. Hit me.
Hello,
I've been some months without looking this forum and I completely forgot to send the savefile. I finished Zelda Awakening by using the same savefile on the DX version and everything worked fine. Then I started playing Oracle of Seasons and then I continued with Oracle of Ages. Now I write again here because the game gets suddently locked (frozen screen) during the ending scenes, just before the credits. Luckily I could import the battery file in VisualBoy emulator and continue watching the ending scene and get the Heroe Secret.
If you're interested, as a challenge, I'm sending you that Zelda Awakening savefile and this Oracle of Ages savefile, so that you can try to investigate and learn how to fix these issues.
http://www.megaupload.com/?d=JBHYZ9C0
Note: both savefiles are for the EUR version and the bugs appear only with the GB SMART CART
Thanks for your contribution!
Regards,
Josep M.
Which of the games freeze during the ending? All 3 or just the Oracles games?
Only one of the Oracle series: just the Ages. You can check by loading my ages.sav with the SMART CART, going up the stairs, solve the 7 rooms puzzle and trigger the ending scene.
Does someone managed to fix "Gargoyle Quest", please?
Some other games that don't work :
- Mario's Picross (UE) [S][!].gb (blank screen after the first credit page if I remember right)
- Nettou Samurai Spirits - Zankurou Musouken (Japan) (SGB Enhanced) (blank screen)
Hey, praedo, glad you got some use out of that LA patch.
I'm afraid I'm crazy busy these days (working full-time has that effect), so there's no way I could tackle the other Zelda games. I've never much cared for the Oracle games anyway, heh
I also don't have a GBC, only a Pocket, so there's no way I could test on hardware at all.
Dear adam_smasher,
Thanks for your efforts despite your busy work. About testing it on real hardware, I can do it for you to confirm patches work. If you use my savefile for Oracle of Ages, you load it, you walk ahead and the final scene starts. Soon after it freezes. I could play the entire game without any problem (but I couldn't see the ending). I guess it's some kind of protection maybe. I had to see the ending with an emulator. By the way, Oracle series are great!
Josep M.
About Link's Awakening previous patch, it's still unresolved and I guess you could try to debug if there's some bank switching again at that point. The savegame is included in the same megaupload post.
Can someone make a little "tutorial" about how to try to fix a game, please?
I would like to try to fix "Gargoyle Quest", if it's possible.
Did you try "Gargoyle's Quest - Ghosts'n Goblins (UE) [BF]" yet? It might work with that.
No, because of this message, which I suppose is right :
Great Hierophant wrote:
The Bung Fixes (...) makes Gargoyle's Quest, (blank screen) (...)
(First message of the thread).
Here is a fix to try in the new distribution of patches.
h..
p://www.megaupload.com/?d=2FV7QTGY
it should work but I have not tested it.
The game now start and work, yay
I tested the first level, defeated the boss and it's working fine.
The game over/continue screen is also working fine.
I plan to complete the game, so if I find a crash or something, I'll let you know ^^
Do you mind looking at the other game I mentioned as "non-working" ? (the problem was the same, so maybe the fix will be more or less the same?)
The game is "Nettou Samurai Spirits - Zankurou Musouken (Japan) (SGB Enhanced)" (blank screen)
By th way, I double-checked and, in fact, "Mario Picross" is working. It's just the "How to play" mode that make the game crash. "Easy Picross" and "Picross" modes works fine.
I don't really care about them, but there are also those three games from the first message that remains "non-fixed" :
- RoboCop v. the Terminator
- SeaQuest DSV
- Spiderman and the X-Men: Arcade's Revenge
Did someone try the fix of the other games on them? (just curiosity).
I'll take a quick look at some.
Update: Made patches for all of them. h..
p://www.megaupload.com/?d=2FV7QTGY
Didn't fully test them but I think they should all work now. If you find any others let me know.
Thanks, I'll test them.
I played a bit more to Gargoyle's Quest and it still work like a charm for the moment
Robocop, Seaquest and Spiderman works fine.
Samurai Spirits still don't work (blank screen).
can someone post that LA patch again? the link is down
Hey!
Could someone try to fix Mega Man Xtreme 2? It freezes when you push up or down in the options menu.
Thanks
I'll see about fixing it. Here is a fix. IPS file follows, paste into hex editor.
Code:
5041544348000028000BF53E71BC200226B0F177C900014E0002AC8E0EB1770006EF3E082E2EEF454F46
I have recently updated my small personal website to host the SmartCard Fixes. Both GH's and my own fixes are available.
MottZilla's Projects
hi,
just want to say that we can't download your files on
http://thegaminguniverse.org/ninjagaiden4/mottzilla/
its a simple error in the url. Just add sc_mzfix.zip or sc_ghfix.zip to the site address
PS: Mottzilla maybe you're interested in another challenge - the title screen in Chessmaster, The (UE) (V1.1) [!] is messed up.
b8392334 wrote:
hi,
just want to say that we can't download your files on
http://thegaminguniverse.org/ninjagaiden4/mottzilla/
Thanks. It was a webpage editor error. Fixed.
Scanner, are the other versions fine?
yep other are fine. Didnt bother to contact you directly because it isnt a game breaker. Just thought it would be a good idea to mention it
Was there ever a fix for Oracle of Ages? (And if so, would it apply to all versions?)
I didn't know it was broken. I don't think anyone posted a fix. I may fix it sometime in the future as I may want to play through the game myself. But if you can give any details on when it crashes or how that would help.
pradeo mentioned Oracle of Ages as broken on page 5 of this thread. I haven't yet played it myself.
tepples wrote:
MottZilla wrote:
I can't imagine why they didn't give the "master registers" a protection control so that once a game is launched the game can't effectively kill itself.
That would have killed the feature that many of these flash cards had, at least in the GBA era, to patch a game to reset to the menu upon a specific key combination.
I'm looking at the code MottZilla posted, and it what it seems to do is write some value into a 256 byte area. Which value and which area, I don't know since I don't have the DKL3 ROM, and that part of the code isn't included in the post.
However, that's a fairly simplistic strategy which probably only targets a specific brand of flash cartridge. I believe the EMS cartridges, (both 32M and 64M) and others as well, are using a more intricate sequence, that you won't be able to enter "by accident".
EMS carts in particular, don't offer a "lockout mode" as far as I'm aware, but do offer good MBC1-3 emulation, if I remember what I saw last time I looked at this, correctly. However, this needs to e set up. Trying writing multiple ROMs to the cartridge, so the program flashes the menu ROM which will hopefully do this.
A "return to menu" function would be fully possible on an EMS cart or another cart with multi ROM functionality, given that the ROMs are patched before they're flashed to the cartridge. I've done a proof of concept of this myself, but I don't know any examples of this in the wild.
I need to look at these things again!
Hi
First of all thanks for the patches. They are the reason why i registered on this site. It is great to see that people are still hacking/developing things on gameboy.
I found a new buggy game (i assume it is something to do with emulating mappers). The game is "Pokémon Card GB2: Here Comes Team GR!". It was released only in japanese. Lately a fully working english translation patch is out. Unfortunately neither the vanilla rom or the patched rom works on EMS 64 MB usb cart. You can see the intro select your gender etc. But at the map scene where team rocket steals the carts from various places the screen flashes and stays white with a buzzing sound. After the reset the game sees the save but crashes at the same place regardless. Patched or non-patched it crashes at the exact place (3rd place on the map where team rocket steals carts)
Is there a spesific way that i understand this problem is because of the mappers? I have tried various roms and the ones which are goodgba and confirmed but always the same result.
thanks
The game probably purposefully (or maybe not) writes to the Master Bank registers and causes the game to crash. It may be fixable.
Clarify when it crashes for me, does the game crash after the intro sequence where a blimp does some beam thing on 3 or 4 points on a map screen? Because after that I detected a write that may crash the GB SmartCard. Looks fixable.
MottZilla wrote:
The game probably purposefully (or maybe not) writes to the Master Bank registers and causes the game to crash. It may be fixable.
Clarify when it crashes for me, does the game crash after the intro sequence where a blimp does some beam thing on 3 or 4 points on a map screen? Because after that I detected a write that may crash the GB SmartCard. Looks fixable.
yes that is exactly the place where it crashes, the 3rd place on the map where that thing beams the places. thanks for the concern.
It looks like it may be on purpose. Try this IPS patch. I don't know if just patching it out to remove it will work. It may require a more complex fix. But it might work with just this. I attached an IPS file. I think the GBC Donkey Kong Land 3 similarly has just an opcode to purposefully try to crash these kinds of carts that once removed made everything work fine. I can't recall though.
MottZilla wrote:
It looks like it may be on purpose. Try this IPS patch. I don't know if just patching it out to remove it will work. It may require a more complex fix. But it might work with just this. I attached an IPS file. I think the GBC Donkey Kong Land 3 similarly has just an opcode to purposefully try to crash these kinds of carts that once removed made everything work fine. I can't recall though.
Thanks for the patch. it works (but partially unfortunately). The game didn't crash at the 3 rd place on the map like before. A guy begins to talk says he is from team rocket etc. After a few line of text, the game crashes again just like before with a white screen and buzzing sound. so i guess the game makes multiple checks, i hope it is just through the beginning not through the whole game.
Well like I said, I just removed the writes that seemed to always trash the MBR. It's possible the writes *sometimes* trash the MBR and other times actually write somewhere meaningful to prevent just patching out the write. The next step would be to patch the program to verify that the write is going somewhere other than the MBR area and allow the write if it won't trash the MBR. Some of my other fixes work like this.
Basically in this game register DE determines an address to be written to which often targets the MBR (Master Bank Registers) area for the SmartCard and writing there will trash the correct settings and cause the program to crash. So what needs to happen is before writing to the address specified by DE, it should be compared to see if it is in the MBR area and if so, ignore the write. If it is not in the MBR area then let the write occur.
Doing that should fix the game unless another point in the game is writing to the MBR area. When I get a chance I'll see about writing a patch for it unless someone else does it first.
thanks for the explanatory post. As i am not able to code, i will have to wait for it. I am in no hurry. Thanks in advance.
Try this one out. I didn't test it much but it seems to work better.
thanks for the patch. i played the game for about half an hour (a few duels) and no problem so far. i will post back if i find an issue in the later stages of the game.
I'm glad it's working so far. Hopefully it holds up. If it does, if you can complete the game, I'll add it to my set of fixes.
Some new fixes to be available soon. They are so far:
Bubble Bobble Part 2
Kaeruno Tameni (Save Bank Fix, for using with new MultiSRAM Menu)
Super Mario Land 2 - 6 Golden Coins (UE) (V1.2)
Legend of Zelda, The - Link's Awakening (U) (V1.0,1.1,1.2)
Mega Man Xtreme (U) (Save Bank Fix)
Mega Man Xtreme 2 (U) (Fix + Save Bank Fix)
Star Wars (U)
Star Wars - The Empire Strikes Back (U)
Star Wars - Super Return of the Jedi (U)
Bonk's Adventure (U)
Bonk's Revenge (U)
The LoZ Fix I didn't realize had been done previously, but mine I think is different. I'll be looking around at other games to fix so now's the time if you've noticed a game that doesn't work, mention it!
I'm currently in the process of creating my own MBC5 clone in a PLD, and this thread has me wondering, is it conceivably possible to properly handle these issues in the PLD synthesis? From what I understand, the MBC5 was *supposed* to be backwards compatible with the MBC1/2/3(minus RTC), but there are obviously differences or these issues would not occur. So, if I were to want to handle these differences in the PLD, what cases should I be aware of where an MBC5 would not properly handle code designed for an earlier MBC? There are these from earlier in the thread:
Great Hierophant wrote:
1. Game writes to 3000-3FFF to perform a bankswitch
2. Game writes a 00 value to perform a bankswitch, seeking to select bank 1 on an MBC1/2/3, but selects bank 0 on an MBC5.
3. Game writes a value greater than 1F (MBC1), F (MBC2), 7F (MBC3) to switch a bank on MBC5, the upper bits selecting some random bank.
If these are the only discrepancies, then I have some idea of how to handle them, but does anybody know of any others that I should be aware of? I would like to be able to handle this problem in my MBC clone, rather than relying on patches, if at all possible.
Mortal Kombat i and ii doesn't work. (the 2-in-1 package)
I feel guilty for just giving you a link rather than a Real Answer, but I've found
http://gbdev.gg8.se/wiki/articles/Memor ... ontrollers really useful.
qwertymodo wrote:
I'm currently in the process of creating my own MBC5 clone in a PLD, and this thread has me wondering, is it conceivably possible to properly handle these issues in the PLD synthesis? From what I understand, the MBC5 was *supposed* to be backwards compatible with the MBC1/2/3(minus RTC), but there are obviously differences or these issues would not occur. So, if I were to want to handle these differences in the PLD, what cases should I be aware of where an MBC5 would not properly handle code designed for an earlier MBC? There are these from earlier in the thread:
Great Hierophant wrote:
1. Game writes to 3000-3FFF to perform a bankswitch
2. Game writes a 00 value to perform a bankswitch, seeking to select bank 1 on an MBC1/2/3, but selects bank 0 on an MBC5.
3. Game writes a value greater than 1F (MBC1), F (MBC2), 7F (MBC3) to switch a bank on MBC5, the upper bits selecting some random bank.
If these are the only discrepancies, then I have some idea of how to handle them, but does anybody know of any others that I should be aware of? I would like to be able to handle this problem in my MBC clone, rather than relying on patches, if at all possible.
You have a handle on them. 1 and 2 are the issues usually seen. I've not really heard of or seen an example of 3. If you plan for multi-game storage functionality you'll just need a Master Bank Register like the SmartCard. If you don't then ROM mirroring can help with the game trying to select a bank beyond what exists. Just like properly padding up an eprom.
The SRAM Menu Patch isn't out yet but I updated my webpage with some of the mentioned fixes.
reprep wrote:
Mortal Kombat i and ii doesn't work. (the 2-in-1 package)
That cartridge is a special multi-cart that won't ever work on flash carts. While it says it is MBC1 it actually contains either additional banking hardware or it is wired in some way that is non standard to achieve multi-cart functionality. You'll just have to use the single game releases.
MottZilla wrote:
You have a handle on them. 1 and 2 are the issues usually seen. I've not really heard of or seen an example of 3. If you plan for multi-game storage functionality you'll just need a Master Bank Register like the SmartCard. If you don't then ROM mirroring can help with the game trying to select a bank beyond what exists. Just like properly padding up an eprom.
Are all of these present on MBC 1, 2, and 3 games (when run on an MBC5), or are there differences between the 3? In other words, can I lump MBC1/2/3 together and treat them identically, so I only have to check "is this MBC5 or is it MBC < 5" (seeing as I have no intention of supporting the MMM01 or HuC_ mappers
). I most likely won't bother with multi-game, but that really depends how I feel down the road when I have something actually working.
So, just to be sure I'm on the right track, would handling these 3 conditions in the MBC synthesis fix all or nearly all of the games being patched here, or are there other issues going on that you are fixing with these patches?
Also, a tangential question: The MBC5 seems to support 64Mbit ROM and 1Mbit RAM, judging from the address line count on all of the pinouts I've seen floating around the internet. Are there any games that actually use these sizes, or would it be a waste to go with those sizes if I wasn't planning to add multi-cart support?
Densha de Go! 2 uses 64 Mbit Rom. that is the only game which uses such a size afaik. i have no idea about games using 1 mbit SRAM. LDSJ is able to use such ram though if i am not wrong.
reprep wrote:
Densha de Go! 2 uses 64 Mbit Rom. that is the only game which uses such a size afaik. i have no idea about games using 1 mbit SRAM. LDSJ is able to use such ram though if i am not wrong.
Cool, LSDJ alone would be enough reason to support the larger RAM. As far as larger ROM, the 32Mbit and 64MBit ROMs I'm planning to use share the same footprint (with the high address line of the 64Mbit being NC on the 32), so I suppose no reason not to at least support the possibility, even if I end up mostly using 32. Thanks.
lidnariq wrote:
I feel guilty for just giving you a link rather than a Real Answer, but I've found
http://gbdev.gg8.se/wiki/articles/Memor ... ontrollers really useful.
Don't feel guilty, that's a lot of good info and I hadn't seen that page before. And I'm sure that everyone here is glad that you just posted that link rather than trying to write all of that info here in this thread
That's right, only one game ever used 64mbit, so that 9th bit is usually totally useless.
MBC1,2,3 do have differences but I think they are reasonably compatible. Usually the incompatibility is between others and MBC5. You could look at the mapper capability to try to spot any incompatibility issues. I think though that any MBC1, 2, or 3 game would run on a MBC3 with RTC.
So you probably just need MBC3 and MBC5 modes. But there could be issues I'm not aware of.
The MultiSRAM menu patch is available as well as some new fixes and some save fixes on my
website.
More patches will follow, mention any games that you have trouble with.
Hi. My name is Vladimir. I am from Russia.
I and many of my friends are fans gb.
First I would like to thank the user-MottZilla and others users who support this device and release patches for games.
MottZilla your version of the program with the saved Windows Flasher Program with MottZilla's Menu very necessary. With its help it is possible to play several games simultaneously and have fun the use of GB. It was necessary. Thank you!
I found a few more games with problems.
1) Donkey Kong Land 2. The game bug at the first level of the water when trying to use the fish. Most interesting is that when you use the program (Windows Flasher Program with MottZilla's Menu) the game not bug, but lost the ability to save.
2) Mole Mania. The game throws out (just as in Battletoads in Ragnarok's World) in the battle with 3 boss levels.
I'm glad you like the MultiSRAM Menu and that it is useful to you.
I will check Donkey Kong Land 2 and Mole Mania to see if they can be fixed.
MottZilla, please tell me whether it is possible to implement the ability to change the name of the Roms in your program to correctly display their menu of GB?
I'm not sure what you mean. You can change the title of a GB ROM by changing it at $134 in the ROM file before adding it to the cartridge.
If you mean something else, please give more detail about the problem.
Wow, had no idea this thread was still going on. I just registered to say thank you, MottZilla and crew. This particular cart seems to have fairly low support from its manufacturer, and so it's awesome to see people reverse engineering and patching stuff up to work nicely with it.
I did have a question, though. I tend to use both 32M banks, with bank one dedicated to LSDJ and bank two dedicated to games and my less used audio stuff. It would be awesome to use the firmware patch to have multiple saves. I'm just wondering, in addition to how it works on a basic level, whether or not I would be able to use the patch successfully with a setup like that. I'd also like to know whether or not the firmware can be flashed back to normal, or how that works. My guess is that flashing it at all with the EMS software would set it back to its original state, is this correct at all?
Thanks again, y'all are doing some *awesome* stuff, here.
-Bornyesterday
To detail how saving works further I can say this. If one Bank/Page does not use the Menu, that page must also not use SRAM. If it does, it will be overwritten when the Page with the Menu is used if you play a game using SRAM. Also if you were playing a game that used SRAM on page two, then you quit. Until the menu runs again, your save data resides in a common area that will be overwritten by the program in page one if that program uses SRAM. Then when the menu in page two runs again when it backs up the data for your game, it will be wrong.
So in short, it is not recommended to not have the menu on both pages unless one of the pages contains no games that use SRAM data at all. LSDJ seems to use 32kb of SRAM, and I'm sure it's not too big of a ROM so you should be able to use it with the Menu and share SRAM with everything else. If you *just* have LSDJ you want one the one page, you could just put it on there twice so that the menu will be used, or populate that page with LSDJ and one other game.
The menu or as you called it firmware, is just a piece of software stored on the FlashROM which is always executed on power up. If you use my patched patcher program, you get the new menu. If you want the old menu, just use the older/original flasher and it's back to the way it was before. So no worrys if you ever want to go back to the old menu, but there shouldn't be any reason to do that.
I'm always glad to hear from someone that is getting use out of the patches or the menu. I've heard from some people and I agree with the thought that my MultiSRAM menu is a serious benefit to the SmartCard because the old limitation of only 1 game that saves at a time was terrible. Being able to have up to 11 saves at once is so much better.
Wonderful, thanks a ton for the clear explanation. I was wondering why LSDJ would go bonkers every time I played Zelda. :p Though, I did notice that I was able to load songs from SRAM when the working memory was corrupted. I did indeed have multiple games on bank two, but I'll go ahead and throw Carillon or something on to bank one so that everything works as intended. I'm looking forward to playing around with the new menu system, and patching a few games, as soon as I can get to a computer that doesn't have wacked-out drivers.
Thanks again, to everybody, but especially to you, MottZilla. I have a feeling I'll be getting a lot of mileage out of these modifications and will certainly recommend the menu flash to anybody I find who uses the EMS.
-Bornyesterday
MottZilla wrote:
Also if you were playing a game that used SRAM on page two, then you quit. Until the menu runs again, your save data resides in a common area that will be overwritten by the program in page one if that program uses SRAM. Then when the menu in page two runs again when it backs up the data for your game, it will be wrong.
If you use menus on both page 1 and page 2, is the menu on page 1 aware of the menu on page 2 and vice versa so as to avoid problems?
If not, would it be possible to make them aware?
If you have the menu on both pages, they see the same set of save data which is kept track of by Game Title. So it all exists together perfectly. You can have games that save on BOTH pages if they both have the Menu in use. The menu is automatically in use if you have more than 1 game on a page. You could fill up one page with Non Color GB games and the other with Color GB games. As long as you have free memory, games from either page can save. If you lack free memory to backup a save then the menu will tell you and you can delete data to free space, turn off the system and back on and it will try to backup that last save again.
Hi, where can i download the fixes for
Super Mario Land 2
Megaman x
Megaman x2?
Thank you!
Apologies for resurrecting this thread again, but I've been using your menu with LSDJ and several other sound utilities on page one, and games on page two. I've noticed that when I make a save for LSDJ and then play and save any of the games on page two (haven't checked yet to see if this happens with just page one files) the LSDJ save is deleted, and replaced with glitchy data, just as if the save manager menu wasn't being used. Is this a result of LSDJ's save file? I had heard somewhere that it was a different type and perhaps size of file than was usually employed by the GB developers back in the day.
It's perfectly fine to post in this topic, it's still the same topic afterall.
Judging by the LSDJ Demo ROM you should know that you probably should not use LSDJ on your cartridge if you need to save in *any* other game. Why? Because LSDJ according to the demo ROM uses the entire 1 megabit/128kbytes of SRAM in the cartridge. Meaning there is nothing left for aynthing else. If you use LSDJ you'll run the risk of overwriting all your stored saves and potentially the reserved section the menu uses to know what is supposed to be stored in memory.
This is no surprise, any game that uses more than 32kbytes of SRAM can't share the save ram chip with anything else. The reason it doesn't instantly destroy all your other data is because LSDJ probably only uses as much save ram as it needs to for what song pattern data exists. So until you fill up your memory in LSDJ, the multi ram menu may think everything is OK. But in reality as the LSDJ memory usage exceeds the 32 kbyte mark it will begin corrupting your stored game data. Also LSDJ can never be backed up by the menu. It's again, just a matter of save size. LSDJ and some japanese game use the whole amount of sram and are incompatible.
hello MottZilla.
I wanted to clarify about the fix gb roms (Donkey Kong Land 2, Mole Mania). I am very much waitin for this.
if you fixed them where I can download them?
I don't believe I was aware of any problem with Donkey Kong Land 2 until now. It may be fixable but it could be difficult. I have not looked at Mole Mania yet.
Update: So I looked at Mole Mania, it can be fixed, I'll get to it when I have the chance. Donkey Kong Land 2, it can be fixed but unfortunately there is no free ROM space in the fixed bank. The best solution I can think of is to find some free part of SRAM to load some patch code into and patch the game to load that code. It might work out, I'll see about doing it when I have the chance. I assume the problem is again related to writing 00 to the bank register which on MBC5 actually selects bank 00 instead of 01.
Once again I thank you MottZilla!
Here is a quick fix for Mole Mania. It was done quickly and was not tested extensively. Try it out, tell me if it works for you. It fixes the problem related to MBC5 and older MBCs having different behavior on writing 00 to the bank register. If the problem is related to something else I'm not sure. Please describe what the problem was if possible.
Also if you can describe whats wrong with DK Land 2 as well. Specifically, does the game crash or glitch, and if so where does it happen?
Update: I had the time so I tested both DK Land 2 and Mole Mania. They both ran find, without any fixes. If they are crashing on you please specify when and where exactly. I haven't seen any problems with them so far. Also are you playing on Super Gameboy or not?
MottZilla, heartily thank you, for your work!!!
I will test Mole Mania:)
I play the game boy original. A little later I will describe the problem (DKL2) in detail!
Yeah, MottZilla, thanks also for the clear, concise explanation of the save issue I was having. I kind of had a feeling that the issue was something like that. I am in awe of your knowledge of reverse-engineering and re-engineering, or really whatever it is you are doing. Keep it up!
Hi, MottZilla
For more details about the Donkey Kong Land 2
1) First, I found that the game is not saved. When you save begins the visuals artifacts. The screen shows the saving that you did not do. Shows two records of the three slots instead of a single of your.
2)Second, The game bug at the first level of the water when trying to use the swordfish for attack a enemies. As soon as you attack a the enemies begins the visuals artifacts. Сhanges structure-level, you can go through the the walls and floor, immediately appear enemies of the other levels, and after a while the game crashes. I passed several times and always the same. When using the program (Windows Flasher Program with MottZilla's Menu) the visuals artifacts appear smaller but the game the same crashes.
How many levels into the game do I have to go to save or get to the water level? I will check it out if I can. Is the Mole Mania game fixed with my patch? I never saw where it would crash or have problems without the patch.
In order to saves, necessary to pass 3 levels. Water level is 4.
At the moment I not tested fix for Mole Mania.
i Need to reach the third level boss. I will test and accomplish your goal
DKL2 might be messing up some registers at startup causing the save problems. It may be alot of places that it trashes so it may be a difficult fix. I'll take a look later today on real the actual cartridge.
Update: Well I didn't have time to look at it yet, but I haven't forgotten about it.
Sincerely thank you MottZilla!
I tried DKL2 and I see the glitches in the first water level. The game never crashed on me, but the level became so glitched that I could not complete it and eventually got stuck. I will investigate what is going on exactly.
update: What appears to be happening is when you turn left or right while swimming in the water (or if you switch characters) it writes to the $5Axx range by use of a res nn,(hl) opcode. I think what ends up happening is it messes up the SmartCard's register, depending on where the game is stored on your card I guess glitches or a complete crash can happen. Again the bad thing with this game is that it has the fixed ROM bank packed to the max. This makes adding a patch harder.
First I would like to thank Mottzilla, The Great Heirophant, and others for your hard work making these patches, and the new menu for the ems cartridge. This is in regards to the Pokemon Red and Blue patches by The Great Heirophant; I applied the patches to Pokemon - Red Version [UE] [S]! (MD5 3d45c1ee9abd5738df46d2bdda8b57d) and Pokemon - Blue Version [UE] [S]! (MD5 50927e843568814f7ed45ec4f944bd8b) rom dumps yet the save file functionality seems to be broken still, at least using Mottzilla's multi-save menu for the EMS smartcard. I go to start the game, yet if there are any other save files on the cart, or if I reboot, it complains of "The file data is corrupted". I was not sure if this was an issue with the patch by The Great Heirophant, or an issue with the menu. Yellow does the same thing but it does not have a patch so I did not expect it to work. Any info would be greatly appreciated.
Pokemon Blue (and likely Red and Yellow) appear to write both $4000 and $6000 when selecting a RAM bank. The problem might be that it's affecting the SmartCard register. There really is no reason for either game to write $6000. So it may just need those patched out, I don't know for sure. I didn't check GH's patched version. If I get a chance maybe I'll be able to take a look at the games.
I did some snooping just to see the nature of the fix. The fix is a basic MBC5 emulation bug fix it looks like, found patched throughout the rom.
Code:
ld (ff00+B8), a
ld (2000), a - replaced with call 00DC
$00CD - $00E7
Code:
push af
cp a, 00
jp nz, 00E3
inc a
ld (2000), a
pop af
ret
I don't think it would impact the save functionality, but it is a valid fix! I'm thinking you're right about the registers becoming overwritten. Originally I thought it could be pokemon trying to read other sram data, but its just speculation.
Edit: Later after some first attempts at hacking I may have some progress. I noticed that in your Megaman Xtreme [U] savefix you put the new cart checksum for the first edit, turned 6
ld (4000), a into nop operations, one I couldnt verify in the debugger but in a hex editor. I tried turning the operations
ld (4000), a to nop sleds for Pokemon Blue, and on the cart and in emulator it doesn't seem to write the save file anymore, cant continue the save and just says new game on every load, though it appears in the save management menu on the cart. I am going to tweak more since I feel this is the right path. Maybe a problem with faulty bank switching again?
If you're handy with a debugger, use GH's fix, but patch the ld (6000),a to NOP,NOP,NOP. This might fix it. The games writes to this address but they have no reason to. However $4000 is actually the RAM Bank register, Pokemon *must* be able to write this because it uses 32kb of RAM, which is 4 banks. Let me know if after patching out all the writes to $6000 and using GH's fix/patch if it works.
Try as I might I cannot find any ld (6000), a operations in the pokemon blue rom, unless its not explicit or loaded into static memory when I'm running it? I'm using BGB if that means anything. Also trying things in regards to the ram bank enable (ld (0000), a) instruction in the $2509 - $250D area. I pulled the save off my card and it complains of "The file data is destroyed" in the emulator, but there is also a Great Greed save on the sram image as I was testing multisave on the cart.
Try to look again. Trap writes to $6000. It happens as soon as you press start on the title screen. At execution address $609E:
ld a,0a
ld (0000),a
ld a,01
ld (6000),a
ld (4000),a
The ld (6000),a should be removed. It is *possible* GH's fix already removed this write. However it is also possible the menu might possibly have a bug in the 32K save loading or saving, but it shouldn't. You could try testing another game that has a 32K save size, I think Wario Land 2 or maybe 3 does.
Ah, I see. The reason I could not find it was it was already patched by TGH. Warioland 2 does use a 32kb save file and it seems to be working fine, I was able to continue without trouble. I suppose Pokemon must have a certain save mechanism discrepancy with the card or information thats being overwritten by the EMS card.
I'm not sure, it's possible Pokemon trashes the SmartCard's registers or does something else strange. One possibility is if it expects SRAM Disable to work and then writes to that area it will trash SRAM where as on a real cart SRAM disable actually works. I don't think it works on the SC. I guess you could try checking if the SRAM area is ever written to while SRAM is supposed to be disabled.
One way to do this would be to patch the normal ROM so any writes of 00 to $0000-$1FFF are NOPed. By doing this, it won't disable SRAM so once it is enabled for the first time it stays enabled. Then just play the game and see if the save file gets corrupted like on the SmartCard. If it does, then it may be related to SRAM disable, or the lack of it more accurately. But it could be other things.
I went through and nop'd out
ld (0000), a operations preceded by
xor, a and left ones preceded by
ld a,0A which should be the disabling and enabling writes. The rom still worked fine in the emulator but failed ("File data is corrupted") on the card. I was monitoring the SRAM enable and disable cycle and noticed that when the title screen is up with the scrolling pokemon the SRAM is complete garbage. Each pokemon image seems to be loaded into SRAM? I think this effectively kills your save. I guess making sure that the SRAM is not written to would be the way to fix this.
Edit: Just did a test on the sprite SRAM loading on the card and it worked! turned the
ld a,0A at $2507 into a
nop and
xor a operation and in the emulator the sprites were "broken" (just black squares), but on the card they worked! This shows that the SRAM is being written for each image I think. The data appears in the SRAM in the emulator at $36E3 (
ldi (hl),a the entire call at $36E0) and hl has a value of $A188 (
ld hl,A188 at $251A).
Did some reading, and writing a value to $6000-$7FFF deals with ROM/RAM Mode Select and that functionality (ld (6000), a) is removed in the patch around at $60A5 where I am getting this abnormality.
Quote:
This 1bit Register selects whether the two bits of the above register should be used as upper two bits of the ROM Bank, or as RAM Bank Number.
00h = ROM Banking Mode (up to 8KByte RAM, 2MByte ROM) (default)
01h = RAM Banking Mode (up to 32KByte RAM, 512KByte ROM)
Which determines the functionality of $4000-$5FFF
Quote:
This 2bit register can be used to select a RAM Bank in range from 00-03h, or to specify the upper two bits (Bit 5-6) of the ROM Bank number, depending on the current ROM/RAM Mode. (See above.)
Default its in ROM Banking mode, which it shows in the unpatched rom it needs to be in RAM Banking mode ($60A3 is ld a,01). Does the smartcard compensate for this, or is it a superfluous feature?Ignore that, it should be unnecessary on MBC3 carts I guess. Just shows how much I know.
2/1/2012: Well I tried the default smart card menu and I am able to load the save! No corruption, but it only handles one at a time. I am still looking to see if I can patch the rom to fix this but it looks like it is the menu this time, but a new abnormality I see is some errors rendering character tiles with the default menu. This is not much of an issue compared to the other one, and I don't experience it with your menu. $5AF2-$5B04 is the save file verification calls and routines. Verified if you look up "MainMenu:"
https://bitbucket.org/iimarckus/pokered ... ?at=master in this disassembled version.
Greatmetal wrote:
I went through and nop'd out ld (0000), a operations preceded by xor, a and left ones preceded by ld a,0A which should be the disabling and enabling writes. The rom still worked fine in the emulator but failed ("File data is corrupted") on the card. I was monitoring the SRAM enable and disable cycle and noticed that when the title screen is up with the scrolling pokemon the SRAM is complete garbage. Each pokemon image seems to be loaded into SRAM? I think this effectively kills your save. I guess making sure that the SRAM is not written to would be the way to fix this.
Let me explain what's happening. Writing to 0A to $0000 will unprotect SRAM so you can read or write to it. Writing 00 will turn on the protection again. Why this matters is because the CPU will crash on power down and spray the value 00 39 over the whole memory map. If the SRAM is unprotected at this time, it (the currently open bank) would get overwritten.
Well it is interesting to know that it works on the default menu. I'm not sure why it would but not on my new menu unless there is an issue with saving or loading of 32K sram games. Does the game ever write to $6000-$7FFF? Though if it worked on the original menu I'd guess it wouldn't have. All I can suggest is try other 32K save games. I think the Pokemon Card GB2 game is one. Wario Land 2 or 3 is as well. If they have saving/loading problems too, then we could be sure it is an issue with 32K saves.
So I made one 8kb save, "Great Greed". Made sure it worked, which it did. Then I added Warioland 2, completed a stage. saved, and tried loading the save, which it worked. Then I added Pokemon Card GB 2, made a save with my Warioland 2 and Great Greed saves, tried reloading it and it worked as well. Then I went back and made sure Warioland 2 and Great Greed loaded still, and they did. So I had 2 32kb and 1 8kb save without issues. Still could be Pokemon writing to a bad area, but the menu obviously has an effect on this.
While the menu may be at fault somewhere, did you have the *exact* same games on the cart with both menus? And were the save positions the same as well? It is very strange that other games, particularly 32kb saves, don't seem to have the same issue.
Sorry for the delay in posting, it happens regardless of the slot space it is in. I have read one other post on a pokemon rom hacking forum that this cart does like to corrupt pokemon saves. It was an older post so the problem is probably regards to pokemon and the ems cart and not your menu. Thanks for checking into the issue.
It's not a fix exactly but im working on a pokemon gold patch that turns makes the game clock run in sync with the playtime clock, the only thing wrong is the math but I'll post here when it's completed. If anyone is interested in the source
here it is. If you go to those offsets in bgb and copy paste those sections in it'll switch it (this does not remove the mom DST scripting, which i have removed but is not in that code. Its not translatable to machine language as its a custom scripting language, but even if you set the day and DST it shouldnt be an issue.) The time is off by 12 hours since 24 doesnt go into 60 evenly but it gets the job done. When I get a fix for the math done I'll post a fix with the mom scripts removed IF anyone is interested.
If you know how to use RGBDS
here is a version that compiles in it by stag019, but its commented to get an idea of what the code does.
Has any progress been made on rectifying the issue with Pokemon saves? I too had the new menu corrupt a save file, though the default menu worked previously. I used the patch provided for the Pokemon Red rom.
Let me know if there is any testing I can do to facilitate a possible fix.
I have not tested the issue with Pokemon yet. I will try to get to testing it soon.
Hi MottZilla. Recently tested Mole Mania,Checked twice.
Quote:
2) Mole Mania. The game throws out (just as in Battletoads in Ragnarok's World) in the battle with 3 boss levels.
This problem has not disappeared
Can you upload a save file that would get me as close as possible to where the problem happens? If you can, it's far more likely I can fix it.
Hi everyone this is my first post and I hope you excuse me but it is a request for something, hopefully not too much though. The problem that praedo noticed with Zelda's Links Awakening was reproduced with my hardware as well.
The problem was completely reproduced (numerous times, numerous flashing of games, numerous frustrating playthroughs!!!) on/with the following:
GBA SP ags 101
GB USB 64M
Legend of Zelda, The - Link's Awakening (U) (V1.2) [!] with Mottzillas *currently* posted (faulty! (but thanks anyway!)
) Zelda fix....
I actually thought there was a problem with the card until I read praedo's post on Zelda Links Awakening and it totally matched my problem. Thankfully it is just the patch.....cannot tell you how relieved I am, thought I was going to have to try and get a drag n derp....mucho $$$! (but I will buy one later)
adam_smasher wrote:
Alright, no idea if this is causing your problem, but it seems possible.
In what is, I think, the map loading routine, it makes bad bankswitches when loading certain maps (in ROM at $2DED). I should have caught this before.
Mea culpa. No idea why this usually doesn't screw things up, but...
Anyway, given that you seem to be having trouble with map loading, I'd imagine that this is the source of the issue. I still haven't been able to trigger this glitch, but give this new patch a shot and see if it helps. Sorry for doubting you =P
DOWNLOADCan anyone please reupload this latest fix from adam_smasher for Zelda Links Awakening ? The download link seems to have expired for "zeldambc5fix_new.zip"
Also let me take this time to say Thank you, I am loving all your work, adam smasher and Mottzilla.
Also Thanks to Mottzillas excellent work on GB USB 1.03 I am able to use the GB USB 64M as intended! You basically made this cart usable for me as I probably wouldn't have used it much without your input on 1.03!!! I get some kind of message saying it doesn't have the drivers cuz my drivers have a different name, but it works fine. I'm using Windows 8 64bit btw.
Feel free to ask me anything about Zelda Links Awakening (mono version) as I plan to play through the entire game, if I can get the fix. I like to back up my game to the pc every now and then, and when I got bow wow on the chain, the game started not saving properly. I got the white screen, save game gone thing. Exactly like Praedo. When I "read sram", and opened sav in emulator, my save game would be back at 1st dungeon....it was as if the save wasn't catching or something. Like it never existed...back at 1st dungeon instead of second. Very frustrating til I read this thread!!
Anyway, that's my first post over and done with, sorry if it's a bit jumbled, i just wanted to be thorough and make sure everything was said that was important. I will be visiting this thread from time to time because I am so addicted to the older (best) consoles. Namely NES, SNES and of course, the beloved gameboy.
Dave
Little note to say, my problem with Zelda:
As I said before, I played...
Legend of Zelda, The - Link's Awakening (U) (V1.2) [!]
...but maybe I should have said that it was the only game on bank 1 (the first bank) with 17 gameboy games (.gb) games in bank 2.
If I had more than 1 game in bank 1, then frustratingly colors would then be added to what is supposed to be Monochrome Zelda. Since I wanted to play in Monochrome, I wanted no colors, so that it would be most accurate to the original. Therefore I only had one game in bank 1. BUT I consciously did not ever play the games in bank 2, or allow the cart to boot into bank 2. As I have read that games must use the menu on both banks for the SRAM to be reliable/usable.
I was very careful of this, because I knew it would cause a problem. So I always gave it time for the cart to stay settled in bank 1.
However having read through all of this thread now, the save problems with the Mono version seem unresolved anyway?
.... ...
I know I can play DX and I have been, and I got past bow wow and it saved with no problems. But I prefer to play the original Monochrome version, as I don't like the colors or simplified hints that DX has.
Has anyone tried Legend of Zelda, The - Link's Awakening (U) (V1.2) [!] on a drag n derp? Would it have the same issues as GB 64?
P.S I would still be grateful for the "zeldambc5fix_new.zip" fix even if it just gets me a little further on, for the sake of proving this problem I will play on if I receive it.
We just want a GB cart that works don't we? hehe.
Dave
Hi, I just bought a GB USB smart card 64m. I love it, just wish I could save my Pokemon blue game.
Found this thread and was just curious if any more progress has been made since the last post about it. I'm guessing all avenues have been exhausted?
Mottzilla's custom menu has made the cart that much better but I'm noticing right now it says V 1.0 when I power on my GB. I thought I read there is a V 1.3 out there. Is that true and can anyone point me to where I can find it? Is the Pokemon saved fixed with V 1.3 by chance?
I gotta catch 'em all, help!
Save for Molemania
-----
just checked the save to GB, it is not. For some reason it is Reset. I will go again(
Try this fix. I don't have his fix, but if I recall my fix just addressed an issue that would happen when you hit A+B+Select+Start to save/reset. This new fix I just did addresses the issue he mentioned with map loading. Maybe it'll fix it.
I'll look at Mole Mania when I get the chance today hopefully.
Pokemon Blue may work on the original/stock menu. I haven't had time to look at Pokemon Red/Blue to figure out why it isn't working.
Hi everyone, i see that there are some Fix patch for the GB and GBC roms, I download and use all of them, but i have some problem with 3 games actually, one of them is Revelation - The Demon Slayer for GBC this give me a Black Screen, and the other two are FF Lengends I and II, don't save, well FFL2 if i select continue on the Title Screen the Game start from the Story Line to the Select Hero Screen, but if i press "B" to come back to the title screen and select Continue again, the save file is there, anyone have try Revelation Game or have a fix for it? Thk and sorry for my english.
Zeichi wrote:
Hi everyone, i see that there are some Fix patch for the GB and GBC roms, I download and use all of them, but i have some problem with 3 games actually, one of them is Revelation - The Demon Slayer for GBC this give me a Black Screen, and the other two are FF Lengends I and II, don't save, well FFL2 if i select continue on the Title Screen the Game start from the Story Line to the Select Hero Screen, but if i press "B" to come back to the title screen and select Continue again, the save file is there, anyone have try Revelation Game or have a fix for it? Thk and sorry for my english.
Did you try this version yet? "Revelations - The Demon Slayer (U) [C][BF]"? It might work. If it does not, let me know. I'm not sure about FF Legends.
MottZilla wrote:
Zeichi wrote:
Hi everyone, i see that there are some Fix patch for the GB and GBC roms, I download and use all of them, but i have some problem with 3 games actually, one of them is Revelation - The Demon Slayer for GBC this give me a Black Screen, and the other two are FF Lengends I and II, don't save, well FFL2 if i select continue on the Title Screen the Game start from the Story Line to the Select Hero Screen, but if i press "B" to come back to the title screen and select Continue again, the save file is there, anyone have try Revelation Game or have a fix for it? Thk and sorry for my english.
Did you try this version yet? "Revelations - The Demon Slayer (U) [C][BF]"? It might work. If it does not, let me know. I'm not sure about FF Legends.
I try "Revelations - The Demon Slayer (U) [C][BF]" but i got the Black Screen too
thks
I think I found the problem. Try applying this patch. It should work.
If it doesn't work on the regular version, try using the patch on the BF version. But try the regular version first.
I use the IPS PATCH on both roms, but don't work, maybe the rom have some type of proteccion or somthing like that
Actually that's what the IPS patch was supposed to remove. If i get a chance I will try it on my SmartCard tomorrow.
Hi MottZilla, did you get a chance to look at the saving issue with Pokemon Red/Blue?
For what it's worth, I can open the save in a save editor on the PC and have it load again on the GB, but the names and moves are garbled. Seems something is overwriting that section of data in the save and corrupting it.
I have not had the time yet. If there is corruption and it only happens using my menu and not the stock menu that would narrow the cause down. But another possibility is not all SmartCard's are the same. If possible, give exact details and try both stock menu and my menu. Tell me which fix patch you are using.
The corruption does not happen with the stock menu.
I am using the patch by Great Hierophant on your site.
It is reproducible by saving the game and restarting the GBC. When starting the game again, it will act as if nothing had ever been saved to the cart.
The save can be transferred from the cart and opened in pikasav and most of the data appears to be correct aside from things like Pokemon names, moves, PP values.
If it would help I could try to save a game with the stock menu, and save it again with your menu, so that you can compare them on a lower level and see which areas of memory were affected.
That would be fantastic if you could figure out exactly where the corruption happens. But since you narrowed it down to the menu, I'll maybe peek around my code again and see if there might be a bug.
One possibility is that during either saving or loading, 32K saves somehow don't entirely load. This could be tested by playing Pokemon and making a new game. Turn it off and back on and it'll backup the save. Then turn it off again and copy the save file to your computer. Banks 0-3 should contain the un-altered Pokemon save. Later banks, 4 and on, will have Pokemon backed up in there somewhere. If you have no saves other than Pokemon, then you should see the first 32kb and second 32kb as identical. If they are not then it's an issue in saving. If they are identical, then perhaps it is an issue in loading.
For example you play Pokemon, save your game and then restart the console and play some other game. Then you come back to Pokemon and maybe the last 8kb bank is corrupted. It's just a guess. If I get some time, I'll look into it! But 8KB save games should all work fine from what feedback I've gotten.
I'm almost positive the corruption happens during saving, as the save is visibly corrupted when analyzed with pikasav. If I re-save the file with pikasav, and re-upload it to your menu, the save will then load, but the corruption will be in the places I've mentioned (and which I observed in pikasav).
So evidently the loading procedure appears to work fine, but something is being corrupted during the save.
I will do what you said and see if I can narrow it down to which banks appear to be getting corrupted.
EDIT: Well I made a fresh save (with just pokemon red on the cart) and uploaded it to my computer. I opened the 128KB save file up in a hex editor and compared the first 32KB and second 32KB. They are identical. So it appears the unaltered save in banks 0-3 and the backup (in banks 4-7?) are the same. Not sure where to go from here, but let me know if there is anything else I can do to help.
To be absolutely sure. You started a new game after clearing all SRAM files out. Then you play Pokemon and created a save. After this, you turned off the system and turned it back on allowing the save file to be backed up. Then you turned it off and uploaded the save file to the PC. Correct? And the first 32kb and second 32kb both contain a correct Pokemon save file?
I checked just briefly and I'm not sure why either saving or loading would be incorrect but not the other. They largely use the same code. One of these days I'll have the time to poke at it myself. Have you tried any other games which use 32 kilobyte save files and had similar problems?
Yes everything you said is correct except that the first and second 32KB blocks contain correct save files. The 32KB sections are identical, but both are corrupted.
I will check to see if the same issue arises in other games with 32KB save files within the next few days (I'm out of town right now). Let me know if there are any specific titles you would like to see tested.
Oh if the saves are corrupt, here is another way to test what is going on then. Play Pokemon and create a save game. Save your game and turn off the system. Immediately dump the SRAM to your PC (don't even run the menu to backup the save) and see if it is corrupted. Then after you've done that, run the menu and dump the SRAM again and compare. It will be telling if the SRAM is corrupted before running the menu to backup data or after.
Ah okay, I will do that as soon as I get a chance (probably Friday night).
Alright did some testing. I cleared the SRAM, loaded Pokemon Red, saved a game, and immediately turned it off and uploaded the SRAM to my PC. Then I turned the GBC on, let the menu back the save up, and uploaded the SRAM again to my PC.
I compared the first 32KB of each SRAM in a hex editor, and the file compare function confirmed the blocks were identical.
Furthermore, I compared the first 32KB and the second 32KB block of the second SRAM file, and they were NOT identical this time.
The first 32KB blocks of each SRAM appear to be functional saves; the second 32KB block from the second SRAM file was corrupted starting at the 12288 byte, and gave "The file data is destroyed!" message in an emulator.
I must have done something incorrectly in my earlier post (perhaps I mixed up a file at some point). It does appear now that the menu backup is being corrupted. I will do the process again to ensure the menu backup of the save is, in fact, being corrupted.
EDIT: Yep I was able to reproduce the exact situation on Pokemon Blue this time. Cleared the SRAM, saved a game, and uploaded immediately to PC. Then booted the menu to let it backup, and saved the second SRAM to PC. The first 32KB blocks of each SRAM are, again, valid save files, but the second 32KB block (the menu backup) is corrupted starting at the exact same offset as the Pokemon Red save (byte 12288). I should mention that I'm referring to the 12288 byte of the second block, so it is actually the 45056 byte of the 128KB SRAM, and halfway through the 6th bank. Hope this helps.
If your numbers are corrupt and I'm reading them correctly, basically only the first 8KB of the save is being backed up correctly and after that it's garbage. I'll know where to focus now.
I'll still have to try this out myself and see exactly what is going on. It's somewhat complicated because my main PC can't run the flasher program, I have to use a different PC than the one I work on.
Is there any way to load more than one GBC game onto a single page without them glitching up, or is multirom only for GB stuff?
(Thanks for the fixes by the way!)
You should be able to have more than 1 GBC game on a page "without them glitching up". Just be sure that the check box for COLOR is checked. You may only have all Monochrome GB games or all GBC games on a PAGE. So you could have all regular GB on Page 1 and all Color GB on Page 2, or any combo you want.
Update: By testing on an emulator, what appears to be happening is it copies Bank 0 and Bank 1 to storage ok. But after that, Bank 2 and 3, contain the same thing as Bank 1. I'll look around further.
Solved: There was a simple typo that caused a bug. I'll upload a fix soon.
Update: The fix is uploaded. Please test it out with Pokemon and let me know how it works. The updated version is available at the same location at before.
Yep, works perfectly now! Appreciate the fix, the menu breathes new life into this card. Thanks again.
Something I always found odd about the flasher program is that each page is supposed to have 32Mbit but it refuses to let you use all the space on the page. For example, if you try to load three 8Mbit games onto the ready to burn list of one page and try to add a fourth 8Mbit game, the loader will refuse to let you. If 32Mbit is truly available, then it should let you add the fourth game. The same thing will happen if you begin with one 16Mbit and 8Mbit game and try to add another 8Mbit game. The issue is not confined to large games, even if you load many small mono games at least 256Kbit will be unavailable to you.
Its like they dangle this last section of the page at you, and its really annoying for Game Boy color games, few (good ones) run less than 8Mbit. Does the card use some space at the end of the page, or is this just another example of slapdash coding?
By the way, I welcome anybody to try to improve on my Who Framed Roger Rabbit fix, because it leaves some garbage on the password screen if I recall correctly. I had trouble finding space to put the code needed to get it to work.
Great Hierophant wrote:
Does the card use some space at the end of the page
Fairly likely. When you load multiple games onto a single flash card, it appears to the Game Boy as a
multicart. Multicarts are known to use some of the space for the menu, and I don't think most are smart enough to find some unused part of a game. (For example,
my NES multicart engine reserves the last 256 kbit of the cart for the menu.)
What you can do is see if some of your Game Boy Color ROMs can be trimmed. Unlike NES games, games for Game Boy and Game Boy Color are more likely to have the
first bank be the fixed bank, meaning it's possible to cut blank 256 kbit (32768 byte) banks from the end of the ROM image and have them still work. (Game Boy Advance works similarly, but usually with 1 Mbit banks.)
The SmartCard uses the first 32kb of FlashROM to store the menu program. This is why you can't have multiple games that add up to 32 megabits on a page. But as tepples suggested, it is quite possible you could trim a larger ROM that has empty space at the end. I have not personally tested it. I suspect it would probably work.
MottZilla wrote:
The SmartCard uses the first 32kb of FlashROM to store the menu program. This is why you can't have multiple games that add up to 32 megabits on a page. But as tepples suggested, it is quite possible you could trim a larger ROM that has empty space at the end. I have not personally tested it. I suspect it would probably work.
Sure you could, if you made sure the ROMs are aligned to their respective size. For example, 64 kB ROMs on 64 kB boundaries, 128 kB ROMs on 128 kB boundaries and so on. The problem then becomes that the biggest ROM sizes must be put at the end of the memory. Say you have two 1 MB ROMs. (That's one megabyte; corresponds to 8 Mb, eight megabit.) They would have to be put at the top of the memory, whereas the menu ROM still has to be at the bottom of the memory. Both the patcher and the menu has to be aware of this condition. The patcher needs to place the ROMs in the right way, and the menu must know to scan the whole ROM area for ROMs. If done right, and given appropriately sized ROMs, the full memory (apart from the lower 32 kB used by the menu) could be fileld with ROMs.
I don't know if either of the conditions are true for MottZilla's menu. He has injected his ROM into the official EMS software, and I don't know whether the EMS software places the ROMs correctly. I also don't know if his menu scans the full ROM area. enu
Great Hierophant wrote:
its really annoying for Game Boy color games, few (good ones) run less than 8Mbit.
nitro2k01 wrote:
given appropriately sized ROMs, the full memory (apart from the lower 32 kB used by the menu) could be fileld with ROMs.
Great Hierophant's problem, as I understand it, is a lack of "appropriately sized ROMs".
Ah yes, sorry. Well, it would still be possible if there was just a free memory area anywhere where the menu code could be put. But that certainly requires both a custom patcher and changes in the menu code. (Not just maybe as in the example above.)
My menu scans pretty much everywhere looking for games. So that shouldn't be a problem.
Hello all! I've just bought EMS 64 GB Smart Card and already found two issues:
1) Metroid II. When I come to the first statue to pick up bombs, there is no door already, the statue is empty and there is no rocket upgrade item under the floor. just as i was here before, but i wasn't, and i have no bombs to continue the game.
2) Metal Gear. In STAGE 3, when i meet Chris, the game freezes.
Is there way tosolve this problems, may be there are some patches for this games?
Sorry for my english, and thanks for help.
In Metroid II, did you try erasing all the game files and starting a new one?
MottZilla wrote:
In Metroid II, did you try erasing all the game files and starting a new one?
It did the trick, i've took boombs, thank you! why this happened? And what about MGS?
Second thing, under linux i have only
git://lacklustre.net/ems-flasher . There is no multi-load, no "GBC" option. I want to add this functionality, and also improve my C skills. And may be build Qt GUI for this... But i don't know even how to write multiple files to the card, where i can read about it? Thank you!
The COLOR option sets a particular bit in the ROM that is the same as all ROMs that determines if the Gameboy should run in Color mode or Monochrome Compatibility mode. It also has to fix the header checksum too. For multiple roms you need to copy file data so that the menu ROM is first, followed by all the games you wish to have on the cartridge, up to exactly 4 megabytes.
In the Flasher exe program, goto $1320BC and copy exactly $8000 bytes. This is the menu ROM. Once you have that making a multi-rom is as simply as copying GB roms to the end. The flasher for Windows will flash them in a particular order usually. It either arranges them in order of biggest to smallest or smallest to biggest. I'm not sure it even matters though. For adding Color support, you just need to change the Color flag in the menu and header checksum. Byte $143 is the color flag.
for more info:
http://www.enliten.force9.co.uk/gameboy/carthead.htmGood luck.
Why do certain games refuse to load onto the Smart Card at all?
Examples:
Heroes of Might and Magic II
Toki Tori
The GB_USB loader freezes whenever attempting to add either of these games to the writing queue. These are two of the best games on the system, but totally unplayable for unknown reasons.
zarkone wrote:
2) Metal Gear. In STAGE 3, when i meet Chris, the game freezes.
Did erasing the data fix Metal Gear for you? Has anyone else made it past stage 3?
I'll have to check them out when I get the chance.
MottZilla wrote:
I'll have to check them out when I get the chance.
Awesome! Thanks Mott.
Just finished more tests on Gameboy Color games. Only testing decent games to keep list low since there's only one MottZilla. Although I'm finished, if I find another problematic Color game in the future I'll report it here. I'll test Mono games later.
Updated list of games refusing to load into writing queue:
Alice In Wonderland
Bionic Commando - Elite Forces
Daikatana
Deja Vu I & II
Heroes of Might and Magic II
Survival Kids
Toki Tori
Funny thing -- Survival Kids 2 loads, but not Survival Kids 1.
edit:
Bugged games list no longer needed.
With bugged games, using the drop down menu freezes GB_USB.exe However, when using drag and drop, I've received Access Violation and Privileged Instruction errors.
Could it be a header problem?
Berserk wrote:
With bugged games, using the drop down menu freezes GB_USB.exe However, when using drag and drop, I've received Access Violation and Privileged Instruction errors.
Could it be a header problem?
I haven't been able to check it out yet, but it's possible when it reads data from the ROM you are trying to load that something happens due to the data read causing it to bug out/freeze/crash.
MottZilla wrote:
I haven't been able to check it out yet, but it's possible when it reads data from the ROM you are trying to load that something happens due to the data read causing it to bug out/freeze/crash.
What concerns me is that the bug effects a quarter of the games tested. If individual fixes are needed, the amount of work would be a bit much for a single person. Of course, that's only if they can be fixed at all.
I'm out travelling and currently don't have access to my EMS 64M cartridge, so I can't confirm the following myself. (I can open the application and even drag and drop files onto the window, but without plugging in the cartridge, the interface is otherwise all greyed out.)
But, Mottzilla's modified exe is based on the 1.0.3 version of the EMS software, whereas the latest version is at least 1.0.4. Maybe the problem is fixed in the 1.0.4 version.
You can find this version here:
http://www.hkems.com/files/GB_USB.rarCould someone please check if the problem exists in the 1.0.4 version as well?
Another option might be to manually prepare a big ROM file and try to write that instead of letting the EMS software do that.
Code:
Windows:
copy /b menu.gb + rom1.gb + rom2.gb + rom3.gb output.gb
UNIX-ish:
cat menu.gb rom1.gb rom2.gb rom3.gb > output.gb
However, when doing this manully, care must be taken to align the ROMs correctly. A 64
kiB ROM must lie on a 64 kiB boundary, a 128 kiB ROM must lie on a 128 kiB boundary, and so on. For example, if the menu is 32 kiB, and the rom1.gb above is 64 kiB, it will start 32 kiB into the ROM, which will make it fail.
Problem confirmed in 1.0.4.
I don't fully understand the menu to rom size boundries you describe, so I haven't tried that yet.
I was curious to find out if I'm having an isolated issue. I decided to test an untouched rom and it worked. I compared the crc to the rom that didn't work -- and they were the SAME. Huh?
Maybe I unearthed a strange bug or something, but so far all the roms I've tested now work after zipping them up and writing over the original.
Weird.
So problem solved... I think. I really appreciated the help. Thanks guys.
MottZilla wrote:
The SmartCard uses the first 32kb of FlashROM to store the menu program. This is why you can't have multiple games that add up to 32 megabits on a page. But as tepples suggested, it is quite possible you could trim a larger ROM that has empty space at the end. I have not personally tested it. I suspect it would probably work.
I managed to trim 'Wendy - Every Witch Way', which has exactly 32k of unused space at the end and have been putzing around trying to fill up an entire 32Mb page.
The flasher doesn't recognize the trimmed space, so I couldn't just add in the extra game. When I tried combining the roms outside the flasher (ordered from smallest to largest), the flasher only acknowledged the first rom in the combined set, which may be due to the flasher assuming it was a single game, and when it sees only a single game it doesn't add the rom menu. So, while I did manage to fill the entire 32Mb page, I was only able to play 1 game.
To do it manually in Windows, your combined file may need the menu header edited. Using the Linux flasher this may not be needed.
Hi!
May I just add some games that are not working on the smart card:
Final Fantasy Legend 1 <- does not save.
Metal Masters <- does not run.
Great work here.
I need to sharp my assembly skills so that I can help here
Mmh...Final Fantasy Legend 1 seems to save OK if I have this only ROM loaded in the page.
Mottzilla,
It seems your website for the flasher is down. Any way of downloading the flasher and instructions for the EMS Smart Card?
Thanks!
All righty, so I was able to install the drivers successfully and whatnot, but when I turn on my GB, the following appears:
"Error! Out of memory
Use SRAM Manager to
free memory.
[]M..." and some other weird symbols.
Not sure what I did wrong. I followed the device manager installations to the tee, and wrote the games with the flasher.
What do?
hello
I tried downloading the patch ips
http://thegaminguniverse.org/ninjagaide ... _mzfix.zip but I can not, I get error
anyone have the file?
thanks
romevi wrote:
All righty, so I was able to install the drivers successfully and whatnot, but when I turn on my GB, the following appears:
"Error! Out of memory
Use SRAM Manager to
free memory.
[]M..." and some other weird symbols.
Not sure what I did wrong. I followed the device manager installations to the tee, and wrote the games with the flasher.
What do?
simply remove from the cartridge the recorded games
when you turn on the gameboy and see the menu, press the select
will leave another menu, tap the button (a) and after (start) till clear the entire list
I solve it so
romevi wrote:
All righty, so I was able to install the drivers successfully and whatnot, but when I turn on my GB, the following appears:
"Error! Out of memory
Use SRAM Manager to
free memory.
[]M..." and some other weird symbols.
Not sure what I did wrong. I followed the device manager installations to the tee, and wrote the games with the flasher.
What do?
As richi stated, you can just goto the save manager and erase all the garbage files. Alternatively you can use the flasher to "write sram" with a blank 128kb save file. As in all zeroed bytes. Unfortunately I never got around to adding any sort of handling of initialization that was automatic. So manual erasing the garbage or writing a blank sram is needed.
Apparently I'm an idiot and hit the panic button far too soon. I didn't try pressing any buttons before I panicked. I did afterward, and removed the garbled SRAM files to make it clean.
Thanks for your patience!
I have found the fix I was looking for
I was looking for super mario land 2
's why pedia the pack
thanks
I've finally been able to fidget with the card. So far, I like it!
However, when I went to plug it in again to add more games, I found I had to restart my computer again in Test Mode in order for the flasher to recognize the device. I'm running Windows 7 64-bit.
It this a common flaw?
(Sorry. Still new to this whole thing.)
do not know, because I use xp
But if you and hearing problems in w7
To see so someone can give you more imformacion
Sorry, I use Windows XP for flashing it too.
Windows has a security policy that all drivers have to be certified and digitally signed. Getting a driver certified costs money, however, and EMS obviously didn't feel like going to that trouble. I'm planning to write a guide on how to get the EMS driver working on both Window 7 and 8. Stay tuned.
MottZilla wrote:
You should be able to have more than 1 GBC game on a page "without them glitching up". Just be sure that the check box for COLOR is checked. You may only have all Monochrome GB games or all GBC games on a PAGE. So you could have all regular GB on Page 1 and all Color GB on Page 2, or any combo you want.
Update: By testing on an emulator, what appears to be happening is it copies Bank 0 and Bank 1 to storage ok. But after that, Bank 2 and 3, contain the same thing as Bank 1. I'll look around further.
Solved: There was a simple typo that caused a bug. I'll upload a fix soon.
Update: The fix is uploaded. Please test it out with Pokemon and let me know how it works. The updated version is available at the same location at before.
Sorry, where's that same location as before? The only one I've found is Great Hierophant's patch on your website from 2010. Also, was this issue exclusive to Red/Blue or would it also exist in Yellow, Gold/Silver/Crystal?
Here it is. Goto the SmartCard section.
MottZilla wrote:
Here it is. Goto the SmartCard section.
Oh so the one in Great Hierophant's batch is the updated version then? I just saw a 2010 timestamp when i unzipped the file and assumed it was the original attempt.
I'm pretty sure the update I was talking about was the Menu Flasher update. The previous version of my Multi-SRAM menu had a bug causing it not to properly backup 32 kilobyte (4 bank) save game data. This was causing Pokemon to always end up with corrupted SRAM data.
The bug was the result of a typo in the source code. I fixed it and version 1.0a should work with 32kb save size games like Pokemon now. I believe me statement was about asking anyone to give Pokemon a try on the current menu and see if it retained their save data OK with other games as well.
That makes a lot of sense now. Sorry I'm an idiot haha
Okay now I'm running into a new quirk. After writing to the SRAM from GB USB, my games still have the option to continue even after clearing the banks in the memory manager. Ive only tested on Pokemon but some data must not be getting cleared out. Is formatting the SRAM possible/practical?
Also, giving myself another oportunity to sound dumb, could 32kb games share a universal RAM space? E.G. Having the block that stores the save be independent for each game but sharing the 3 blocks of reserved RAM amongst them. Or if all 4 blocks truly do have save data, just ignore me again.
If Pokemon was the last game you played when you deleted the save data with the manager, the same data still exists in banks 0-3, so if you load Pokemon again that data will be there and is still valid. You cannot delete banks 0-3. However by playing another game that uses SRAM it would change things enough to corrupt whatever is there if that's what you want to do.
I'm not sure what you mean by 32kb games share "universal" ram space. I think what you may be confused about is in the save manager, a game that is 32kb save will have the following 3 blocks after the block with the game title marked as used. These are indeed used and should not be deleted unless you plan to delete all of the blocks for that game.
The way it is designed is to maximize usefulness/storage space. The cartridge only has 128kbytes of SRAM. The first 32kbytes are used for the game that is being played. The remaining is divided into 8kb blocks with 1 reserved for the menu leaving 88kbytes or 11 "blocks" for game save data. The only thing that could "possibly" be done would be to attempt to implement compression for the save data. But that would introduce the possibility of problems when you run out of space. For example, maybe you have enough space and only have 16 bytes of storage left. You play your game and the save data changes just enough that now the compressed version won't fit in the available space. Now you can't backup the data and would have to delete something to free up enough room. It could be done though, but it's beyond what I want to do. The way the menu works out now, it's very useful with being able to have up to 11 different games save data, or a mix of 8k and 32k save games. It works, it's easy to use, and pretty simple in function.
Any Fixes for Lufia The legend returns? When I load it on the 64mb smart, it loads a black screen or it flickers the power led and shuts down....Cant figure it out im new to the scene so any pointers will help
how do I use the rom patch on the rom
Download Lunar IPS *google* and the patch file load the IPS file first * Apply IPS patch* then select the patch then select the game apply it and bam fixed
Dreifub wrote:
Any Fixes for Lufia The legend returns? When I load it on the 64mb smart, it loads a black screen or it flickers the power led and shuts down....Cant figure it out im new to the scene so any pointers will help
Do any other games have similar issues?
I tested the game on an emulator/debugger and didn't notice any obvious cause for it not to work. If I get a chance I'll try it on my SmartCard.
Actually having problems all around now......Patched zelda worked fine for awhile loaded a different game on and now zelda wont work either after i leave the house and change screens it either black screens or locks up the gameboy......Maybe a defective card??? Only have had it for 2 days
First try another Gameboy system. Or try with the AC adapter plugged in if you are using batteries currently.
I do have another system same problem.....but no Ac cable
*Edit*
Ok So I had to re-install windows....so re-installed my driver set....formatted my cart rewrote the rom's *no patch applied to zelda just to test* and it works now for the most part have not tried ages , season and Lufia still black screens on start up I don't understand it :/
Hey, I found another game that Could Possibly use patching.. 'Mission Impossible' For the GBC just freezes on loading, I've tried it both alone, and with another game so it would show the Multicart Menu.. I'm no expert on anything patch-related...Is there any chance of getting it patched to work? Thanks.
Try this and tell me if it works.
Thanks! Loads up fine now, Trying all the features to make sure they work ^_^!
Edit: Everything works fine ^_^ Thank you
If you find other games that don't work, be sure to mention them.
Hey!
I still get the error previously mentioned in this thread while playing Links Awakening. I've been able to save until I rescue the bowwow.
After that, if I save and then load I see link on a white screen. If restart and load, I'm back at the last save before rescuing the bowwow (which now is at the entrance to the cave where I rescue it).
I've tried both the fix uploaded to this thread and the one on your page.
Any ideas on how to fix this?
Thanks!
If I get enough time, I will try to investigate the problem. If you have a save file just before the point where you recsue him and the problem occurs, uploading it will speed up investigating the problem. It would save me having to play up to that point in the game.
MottZilla wrote:
If I get enough time, I will try to investigate the problem. If you have a save file just before the point where you recsue him and the problem occurs, uploading it will speed up investigating the problem. It would save me having to play up to that point in the game.
I do, i will upload the file in ~1 hour when i get home
Here's the savefile:
http://ge.tt/7y9cgVh1/v/0Thanks!
You might need to be more specific. Which exact rom version are you using? When exactly are you saving after rescuing Bow Wow? I tried briefly to replicate you steps but did not get the same result.
I've been using several versions of the rom. Maybe you can link to the one you're using (and the fix) in a pm and i'll see if that works? The odd thing is that the menu says it needs to be patched even though i have patched it.
The problem comes right after saving the bowwow (beat the moblins, rescue it, leave the dungeon, try to save
I'll try again when I can. The menu mentioning that the game may need patching is because there are multiple fixes. So if you aren't using the fix it's looking for, it'll mention it. It was an idea I added to my menu to help warn people that might not know a particular game requires a fix.
Anyway, I'll try to test this out again when I have the chance.
Worth noting is that "link on a white background" is the loading screen, not a loaded game
Out of curiosity's sake, has anyone come up with a way to extract the saves from specific games when there are multiple on the cartridge, even if it can't be done live on the cartridge (as in transferring the entire save to a computer, extracting/injecting into the file, and then putting it back on the cartridge)?
Also, I think I remember reading that the menu is saved in the SRAM. Does that mean that if you only have one game save on the cartridge and you read the SRAM, it will only be the game save, or will it have menu data in there as well?
Lastly, is it not possible to fill up a full 32mb page? When I try to install 32mb exactly worth of roms, I'm told that there is not enough storage space.
Sorry, I'm still new to this.
The menu has to be stored in the same space as ROMs. You cannot put 32Mbits of game roms on a page unless it is one 32Mbit game which also means you'll have no SRAM management as you have no menu.
You can extract a single save if you want. I thought someone made a tool but you can do it manually if need be with a hex editor. SRAM is 128KB in size and can be saved from the flashing program.
Once you save the 128KB image you just need to know which 8KB block to extract. The first 4 blocks are temporary storage. All the following blocks excluding the very last one are game storage blocks. The very last block contains menu save data which does hold a list of game titles if you need help figuring out which block is the game save you are looking for.
Ah that makes sense, thanks!
Do you know of any quick guides to read on doing something similar? I've barely played with hex editors in the past.
ROMHacking.net might have some information on hex editors. If I ever get around to it, I'll put together a tool for save extracting and perhaps insertion too. But I sure thought someone metnioned having already made one for it.
Hello, seems like thegaminguniverse site is down for a fev days. Anyone have SmartCard 64 fixes By MottZilla (sc_mzfix.zip)? Thanks
Here you go. Both GH's and my own fixes.
Thank you very much, MottZilla!
MottZilla wrote:
ROMHacking.net might have some information on hex editors. If I ever get around to it, I'll put together a tool for save extracting and perhaps insertion too. But I sure thought someone metnioned having already made one for it.
I'll look into it when I have some free time, thanks!
A tool would definitely be awesome.
First I'd like to thank for creating MottZilla manager saves for EMS. I need help to run a game unlicensed CGB, I think it's worth because the quality of play is remarkable.
The rom works perfectly on emulators for PC, but to play it on the EMS only shows a blank screen.
I have checked the values of the header and look correct including checksum. Note that the ROM includes the header data before position 100, which I think is unusual.
I know it's not common, but being an unlicensed game and very difficult to get, add a link to the ROM, extracted from Pirated Games Central Forums.
https://mega.co.nz/#!IBQXDK4I!PlC-7yIH46ROIl9eQqoCd8MNdP2S4ZOKBp4fLvr6W-g
The attached IPS should fix it for you. It purposely had code to crash the program if running on a flash cartridge. That game is funny as it uses music from Mega Man Xtreme 2 I believe.
Thank you very much, MottZilla! I've tried it and it works great. I understand that the protection used is attempting to write to read-only zone. Might you explain how I do the debug ROM, and using programs. I guess you run the ROM step by step until you see an attempt to write an unsupported area, write down the offset and edit the ROM modifying instruction for NOP (0x00). I would like to learn how, using this game as an example.
You need a write breakpoint set to a region of memory. You're looking for any writes to $6000-$7FFF basically. If any game writes to this area (there is no reason to) it will mess up the EMS cartridge. There are some other things that cause incompatibility too. Odd writes to the Program Bank register can cause issues. Donkey Kong Land 3 is another game that writes in the $6000-$7FFF range on purpose to mess with Flash cartridges.
It was brought to my attention that Mega Man Xtreme crashes on hard mode in Morph Moth's stage. This patch should fix that problem.
MottZilla wrote:
You need a write breakpoint set to a region of memory. You're looking for any writes to $6000-$7FFF basically. If any game writes to this area (there is no reason to) it will mess up the EMS cartridge. There are some other things that cause incompatibility too. Odd writes to the Program Bank register can cause issues. Donkey Kong Land 3 is another game that writes in the $6000-$7FFF range on purpose to mess with Flash cartridges.
Thanks, using the debugger of the BGB, I managed to see as trying to write at position $70003. I followed step has step program execution until I saw who was trying to write to that area. The process seems a bit tedious, although I understand that BGB should be allowed to add a breakpoint when attempting to write to a specific range. I'll try to get to know BGB.
Thank you very much again.
I'd hate to bump this topic after 6 months just to point out a game that needs to be fixed, but I'm a complete n00b at assembly, a search for "Pac man ems" turned up nothing (but this post), and I just want to point out that Pac-Man Special Color Edition's Pac-Attack game distorts then white screens when a piece should be spawned. I've tried several different copies of the rom and different menu versions with the same result, so it's surely Pac-Attack's code conflicting with the smart card. The Pac-Man game worked wonderfully though, but I have the b/w version of Pac-Man and Ms. Pac-Man flashed, which are each 1/4 the size of SCE, so I could use the bank I have designated to color roms for other games. A patch, or at least isolating the Pac-Attack game to run on a single bank, would be very much appreciated.
Here is a fix I just made. Try it and tell me if it works for you.
The patch works great, thank you so much MottZilla!
hi to all,
I'm a fresh new user of gb smart card & I'm searchin how to apply the patchs.
I'm sorry to asking you that but I can't find the right words to find the tutorial or something like that.
I appreciate your hard works guys.
thanks !
You can use any IPS patcher. I use Lunar IPS.
http://www.romhacking.net/utilities/240/
thanks a lot MottZilla ! You have made a lot of things for GB fans.
thanks again
MottZilla wrote:
It was brought to my attention that Mega Man Xtreme crashes on hard mode in Morph Moth's stage. This patch should fix that problem.
Hi, thanks for those patch you were made!
Mega Man xtreme 2 has a similar crash in the level select screen on the extreme mode, could it be fixed?
Maybe. It helps if you provide a save file where the point of the crash can be reached within a small amount of time. The longer it takes to get to the point of a crash, the less likely I'll have time to look into fixing it.
Hi, thanks for your reply! Sorry for the delay, here is the save file
To reach the crash:
In the MODE SELECT screen choose CONTINUE, then in the load scren choose "file 1" "extreme mode", in the level/boss select screen will crash
Thanks again
I'll try to look at it when I can.
Try this. I think it'll work now.
Also here is just a more up to date collection of my fixes.
First, I want to give a big thank you to MottZilla and Great Hierophant for all the great work they did for the community.
I have a question for MottZilla; I was wondering if your patch for
Pokemon Card GB2 - GR Dan Sanjou! was compatible with this
English patch.
I know that there is a good chance that this was asked a thousand time already and I am sorry if it was, but I didn't find any results after a quick search.
I tried running the IPS Patch Checker that was recently advertised on Romhacking.net's news feed and I got this result:
Quote:
D:\Pokemon Card GB2 - GR Dan Sanjou! (J) [C] (Fix).ips
3 Records Found
Errors: 1
The Records below are overwritten in part or whole by the 2nd patch.
1. 00014E:
[FE] [3D]
D:\PokemonTCG2-FullTrans.ips
652 Records Found
Errors: 1
The below records overwrite the above records in part or in whole.
1. 000148:
[07] [03] [00] [33] [00] [38] [F7] [66]
Do you think that it would cause any problem? Is there a preferred order to apply those patch?
Thanks for your time.
I'm not sure what the translation writes there, but the fix puts code there. If the translation is applied afterward, the fix won't work. If the translation is applied first, it might work. But there would probably be some issue somewhere because of what was overwritten. It's possible the fix can have it's code moved. If you post a link to the translation IPS patch, I'll try to look at it and see if it can be made compatible.
Thank you very much for taking the time to look at it!
Here's the translation patch:
MottZilla wrote:
Try this. I think it'll work now.
Now works like a charm!
Thank you!
Lufia-The Legend Returns, not working in my GB USB smart Card 64M.
there any fix for this game?. thank you very much.
Not sure if this will help someone make a patch, but I know for a fact that Lufia: The Legend Returns sets the
High 9th Bit of the MBC5 ROM Bank even though this technically points to non-existent ROM Banks. Only the low 8-bits of the ROM Bank number should be used in this game. This was an issue I encountered trying to emulate the game myself, so perhaps it's the cause of it not working with the EMS?
Lufia writes the high ROM bank bit directly all over the place. This might be what the EMS cart doesn't like, however the game also writes to this register area in other code, possibly by accident. I think Battletoads wrote to registers at weird addresses in the range which the EMS cartridge didn't like either so perhaps it is similar.
Update: Here is a fix to try. It prevents writes to the $3xxx range which are likely the cause of the game not working. Please report back with results.
MottZilla wrote:
Lufia writes the high ROM bank bit directly all over the place. This might be what the EMS cart doesn't like, however the game also writes to this register area in other code, possibly by accident. I think Battletoads wrote to registers at weird addresses in the range which the EMS cartridge didn't like either so perhaps it is similar.
Update: Here is a fix to try. It prevents writes to the $3xxx range which are likely the cause of the game not working. Please report back with results.
Perfect working great, thank you very much
hi, Revelations - The Demon Slayer.gbc does not work either
, I need your help for a fix. thank you very much!!
mottZilla, I saw a bit earlier in the thread a dude who was having issues with Link's Awakening; I've tried a couple different ROMs with your latest (1.2?) patch, and I'm getting stuck at the same place. It will not retain a save after I rescue the BowWow.
I think the end of the conversation was you saying you'd take another look sometime; I'm wondering if you ever did get a chance to, or if I'm doing something wrong.
Attached is a save file right at the entrance of the cave where you rescue it.
When I go in, fight the baddies, rescue the bowwow, walk out, and save+quit to title, I can then immediately load the save slot again and resume the game, at the cave entrance with the bowwow.
But if I power cycle, and then try to resume my game, I'm placed at the cave entrance, pre-bowwow. It only retains the save while it's running, not on power off.
roms I've tried (perhaps I'm just using the wrong ones):
onetwo
I'm not sure if that was ever fixed or not. I'll have to look into it when I get a chance.
I received an Everdrive GB last week, and since I have had a chance to play around with it and test some games, I feel that this thread is obsolete. The Everdrive GB does not need fixes. Instead of worrying about your game crashing because of some stray write to an MBC1 register or the memory map to foil old-style flash carts, you can enjoy the games as they were meant to be played (as well as a flash cart can).
Then it comes down to whether $92 plus shipping and tax (
source) is worth it. I'll start a new topic about the merits of the EverDrive GB.
I did buy a EMS 64 GB Smart Card USB, but the difficulty of setting it up and the hacks in this thread really put me off, so I ended up never using it. Shortly after the EDGB came out and I got one, and from the little use I made of it (real life is kinda tough right now) it felt like a perfectly good flash cart.
Hello,
I'm sorry to ask but I have a problem: Zelda Links Awakening DX is crashing (at rare conditions).
And I found another problem:
If you have multiple files on one bank and one on another if you save on the one w/o the menu, savegame will corrupt when leaving it and starting one from the bank with the multiple saves.
tokumaru wrote:
I did buy a EMS 64 GB Smart Card USB, but the difficulty of setting it up and the hacks in this thread really put me off, so I ended up never using it. Shortly after the EDGB came out and I got one, and from the little use I made of it (real life is kinda tough right now) it felt like a perfectly good flash cart.
Yes it is a hassle these days because after Windows XP it's more trouble to install the drivers needed to program it. The hacks to fix certain games are good and bad. The good thing is they can get a game working and playable just fine. The bad thing is there are games that no one has "fixed" or a fix might actually not be complete, or could break something else possibly. The whole problem stems from the fact that there is no protection of the Flash Card's registers, and secondly that there is no pre-MBC5 emulation mode. The second one isn't so bad but the first problem is serious and also something that could have very easily been fixed. The worse thing about it is that I've read things that seem to suggest an older design of the flash cart actually did have protection for the flash card's registers to prevent games from writing to them.
The EverDrive GB is quite a bit more expensive but definitely worth it. The Fixes and the replacement menu I made for the SmartCard I only made because at the time it was the best option available. With the EverDrive now available it is no longer worth the time. If anyone really wants to fix a game though this thread contains plenty of mentions about what problems come up and how to try to fix them.
I haven't bought a EDGB yet but I plan to in the future.
Muessigb wrote:
And I found another problem:
If you have multiple files on one bank and one on another if you save on the one w/o the menu, savegame will corrupt when leaving it and starting one from the bank with the multiple saves.
It is known and stated in the documentation that if you use the menu you need it on both banks. This is not a bug or problem, it is a limitation of the hardware.
Damn!
I just paid 60$ for that card.
Well, is it possible to write just the/a savegame manager to the beginning of the card and just jump right into the game?
Maybe it could be done in just a fraction of the old size? Without any graphics or input at all, just the bare loader.
All you need to do is add a small game with whatever larger game you put on the other side and the menu will be written. The software writes the menu if more than 1 game is in the list.
I have no plans to make any new changes to the menu. Sorry. There really isn't anything worth adding.
@Mottzilla - Nice work on the menu dude!
Did you make any inroads with the patching of the translated Pokemon Card GB2 game (i.e.Pokemon Card GB2 - GR Dan Sanjou!, patched with
http://www.romhacking.net/translations/1736/)
Since this seems to be the most recent and active thread on this cart I figured I'd post a few questions here.
The first is specifically about the USB 64M: Is there a way to 'Read SRAM' in a way that it doesn't pull the whole 128k file? I'm trying to backup saves from a Mega Memory card and they make it to the PC fine (even being able to be written back to the EMS card and still function) but they are unreadable by things like VBA. I've tried it both with single roms on the EMS cart as well as using the menu to try to clean up the SRAM.
The other is actually about the Mega Memory card, which might not be applicable. Out of the group of games I'm trying to back up, two so far are acting strange. They run when the Mega Memory card's switch is set to bypass mode, so they're contacting ok, but they won't let me backup the save files. The two games are Final Fantasy Adventure and Final Fantasy Legend (1). 2 and 3 worked just fine.
Any light shed on this will make me feel better about spending $70 on this kit that so far is only half working
Thanks in advance.
Edit: I found another GBC emulator, BGB that can open the 128k files and correct them, so that's a long-way-around solution for now. Still don't know why a few games with saves act strangely in the Mega Memory Card.
Edit 2: I discovered that the reason those two probably won't work is because they don't use a separate SRAM chip. Still wish I knew how to import the 64M's SRAM in blocks rather than as a full 128k lump.
If you are using my Multi SRAM menu, the SRAM is divided into 8 Kilobyte blocks. The first 4 blocks are used for whatever game is going to be run. The next 11 Blocks are the save file data in the order you see them listed in the Menu's SRAM Manager. The final block is the Menu System's save data block which stores data such as the title of each save game slot.
To extract a single save game that is backed up into the 11 blocks of permanent storage you need to calculate where in the 128KB file that data is located. Each block is 8 Kilobytes which in hex is $2000. So the first block is at $0000 and then add $2000 for each following block.
$0000 - Temporary Block
$2000 - Temporary Block
$4000 - Temporary Block
$6000 - Temporary Block
$8000 - 1st Save Block
$A000 - 2nd Save Block
$C000 - 3rd Save Block
$E000 - 4th Save Block
$10000 - 5th Save Block
$12000 - 6th Save Block
$14000 - 7th Save Block
$16000 - 8th Save Block
$18000 - 9th Save Block
$1A000 - 10th Save Block
$1C000 - 11th Save Block
$1E000 - Menu System Block
So if you want to extract a certain game's save data, you must take the 128KB file and open it in a hex editor. Use the above information to figure out where in that save file the game you want has its data. Copy that data into a new file and your emulator will accept it. For games that use 32KB of SRAM you will need to copy 4 blocks, as you will notice in the Menu SRAM Manager those games take 4 blocks.
Final Fantasy Adventure and Final Fantasy Legend use the MBC2 mapper which has built in SRAM. The Mega Memory Card probably wasn't designed for compatibility with this slightly different saving system. There may be nothing you can do there. The Mega Memory Card I think was designed with games like Pokemon in mind.
I tried to patch two ROM and has been impossible, both belong to the same company. Perhaps used some and especial protection system ?
CGB Maus, Die (Europe) (En,Fr,De,Es) -- the game does not start
CGB Spirou - La Panique Mecanique (Europe) (En,Fr,De,Es,Ne) -- the game crashes within minutes
Did you run it in a debugger to check for writes to the range that the game select register is mapped to? If I recall, writes between $6000-$7FFF will crash the game on a SmartCard generally. Some games do it purposely (a form of protection) and others I think do it just from bad or careless programming.
Yes, but I did not write in those positions. So I think they can use other protection.
Spirou shows "Bad emulation" on the screen at frozen.
Besides the $6000-$7FFF writing, another thing that the SmartCard doesn't like is writing to parts within the register's range. For example, it accepts $2000 just fine, but I remember certain games writing to for example $2134. It for some reason would crash. I think Gauntlet might have been one that acts as though it's a UNROM mapper and loads from and writes to a table to avoid bus conflicts. The SmartCard does not like this. So watch how it's writing the normal cartridge registers. If it's not plain standard, maybe that is the issue.
Hi, Mottzilla, i just register here to follow you, thank you for making the multi SmartCard 64M Menu.
I also found some questions may need you to help, three official games.
1. Pokemon Yellow
i've tried many versions(Jap, US, Chinese trans) work on smartcard, but the save games corrupt, is there a fix to solve the problem?
2. Dai-2-Ji Super Robot Taisen G
A famous SLG game on gb, i think it's sgb1 format, and i'm not sure to choose color or noncolor, this game failed to go into the first chapter battle, then crashed.
3. Snoopy Tennis
This game can go to menu, but can not play a match
I hope you have time to test these games, and able to teach me how to solve the problem, if you need the rom, get it from the attachment(don't know if it is legal here), if i need to do something just let me know, appreciate it.
thanks again for your hard work on smartcard flash card, i really love this. Have a nice day, sir
[Nope. NESdev.com is not a commercial ROM site. --MOD]
Have you already traced these games in a debugger with breakpoint set for $6000-$7FFF?
MottZilla wrote:
Have you already traced these games in a debugger with breakpoint set for $6000-$7FFF?
Sorry, i don't know how to debug games, is there a tutorial for that? I'll try it. Thank you
In the Gameboy emulator BGB, right click on the window to bring up the menu. Load your ROM. Then right click to bring up the menu again but this time choose Other > Debugger. In the new window goto Debug > Access Breakpoints.
In the box addr range, put 6000-7FFF. Click Add. Then goto Run and tell it to run the game. If it kicks back to the debugger, it means the game has written to the range 6000-7FFF. This will usually crash the game if running on the SmartCard.
Snoopy Tennis writes to a non-standard address, 3A1A which the SmartCard doesn't like. I tried changing the writes, which then crashes the game. It may be a form of protection.
Update: It does appear Snoopy Tennis writes to the non-standard address which for whatever reason SmartCard and likely other older flash cartridges don't like causing them to crash. You can't simply change these writes however because another part of the code is loading the data from the opcodes and using them. Changing it will cause a crash. It'll require more effort to fix than I have time to put into it. Maybe someone else will. Or maybe there is a crack out there already.
About Pokemon Yellow, I'm not sure why there is a saving problem but I think I've heard of trouble with Pokemon before. Again, I don't have the time to invest in fixing it.
Super Robot Wars writes $6000 on startup but other than that I didn't notice any issues. Patching out the write may get it working.
MottZilla wrote:
In the Gameboy emulator BGB, right click on the window to bring up the menu. Load your ROM. Then right click to bring up the menu again but this time choose Other > Debugger. In the new window goto Debug > Access Breakpoints.
In the box addr range, put 6000-7FFF. Click Add. Then goto Run and tell it to run the game. If it kicks back to the debugger, it means the game has written to the range 6000-7FFF. This will usually crash the game if running on the SmartCard.
Snoopy Tennis writes to a non-standard address, 3A1A which the SmartCard doesn't like. I tried changing the writes, which then crashes the game. It may be a form of protection.
Update: It does appear Snoopy Tennis writes to the non-standard address which for whatever reason SmartCard and likely other older flash cartridges don't like causing them to crash. You can't simply change these writes however because another part of the code is loading the data from the opcodes and using them. Changing it will cause a crash. It'll require more effort to fix than I have time to put into it. Maybe someone else will. Or maybe there is a crack out there already.
About Pokemon Yellow, I'm not sure why there is a saving problem but I think I've heard of trouble with Pokemon before. Again, I don't have the time to invest in fixing it.
Super Robot Wars writes $6000 on startup but other than that I didn't notice any issues. Patching out the write may get it working.
Thank you for the tutorial, I want to try super robot wars, can you teach me how to patch out the write? Maybe making a ips patch for this game. I just go to this step (show on attachment image), really hope I can make some other fix patches for smartcard
Attachment:
2015-05-13_041217.jpg [ 252.84 KiB | Viewed 5772 times ]
You need to right click on the line where it writes 6000 and choose to modify it with code. Replace with with 3 NOP operations. That would mean you type in the box exactly what is below:
NOP;NOP;NOP
That should replace the opcode with 3 NOPs and maybe the game will work now. It's easier if you have some experience with assembly programming for this family of CPU.
MottZilla wrote:
You need to right click on the line where it writes 6000 and choose to modify it with code. Replace with with 3 NOP operations. That would mean you type in the box exactly what is below:
NOP;NOP;NOP
That should replace the opcode with 3 NOPs and maybe the game will work now. It's easier if you have some experience with assembly programming for this family of CPU.
I modified the rom by your instruction, saved the rom, but this game still has problem when go to chapter 1, I guess there're some unknown issues cannot show on the bgb debugger, too bad.
Again, thank you for sharing the tutorial with me.
The game is in Japanese so I don't know what you mean by Chapter 1. I started a game and attacked a few enemy units without noticing any signs of a problem. I didn't play the full first scenario, but no bad writes were triggered. I don't have time to test it on the SmartCard myself. Sorry.
MottZilla wrote:
The game is in Japanese so I don't know what you mean by Chapter 1. I started a game and attacked a few enemy units without noticing any signs of a problem. I didn't play the full first scenario, but no bad writes were triggered. I don't have time to test it on the SmartCard myself. Sorry.
On smartcard this game crash when loading the first battle, but on bgb is able to play through.
Thank you, MottZilla.
Haven't done much testing on a GameBoy but the Pokémon fix makes it so that the GB Tower on Stadium will get a transfer pak error trying to load it.
Playing on a GameBoy seems to work regardless of the patch.
Without the patch, Stadium 2 sometimes gets saving errors in both GB Tower and the Lab and sometimes gets a transfer pak error.
using a Mega Memory Card in the transfer pak seems to reduce the errors in GB Tower but increase errors in the Lab
My guess is it's a MBC issue, perhaps I could solder on an MBC3 chip
http://www.tototek.com/store/index.php? ... 5ibgl18j62This is where I got my cart.
The Pokemon games are probably reading the SRAM of the cartridge which does not match the real game.
The Stadium games will likely check SRAM banks 0, 1, 2, and 3. On the SmartCard menu I made, these are the "working" banks. Your Pokemon save data is only located here temporarily. It is moved to higher banks the next time the menu is run. If the Pokemon game is the only game on the cartridge then it shouldn't be a big issue. If you have multiple games you need to be sure that the last game you played on a gameboy is the pokemon game before using it with Stadium. This would make sure your save data is in the lower banks.
But does the Stadium game save data back to the cartridge? If it does then for the menu system to work you need to olad your pokemon game on a gameboy so the menu copies the save into the working banks but then do *not* reboot the gameboy. This will leave a flag marked so that the menu the next time it is run will copy from the working banks to the save banks. That means that when Stadium modifys the save data it will get saved the next time you play it on a gameboy.
That's all I can really tell you because I don't know a whole lot about the Pokemon games and virtually nothing about the Stadium games.
MottZilla wrote:
But does the Stadium game save data back to the cartridge?
Yep. It also shows a message while it's accessing the save memory (since the emulation is practically frozen during this time, it looks like accessing the memory is quite slow).
So... No fix coming for Revelations: The Demon Slayer?
I've tried every combination of ROM and IPS I could find, but nothing happens; the game just goes to an empty screen after I boot it.
Try using the version that says [BF] with the IPS patch to fix it in my collection of fixes. If you are booting it without the menu then you'll need to fix the checksum if using the [BF] version instead of the normal version. I never tested the fix on a real cartridge so the fix may only fix one issue. I don't plan on investigating it further.
MottZilla wrote:
Try using the version that says [BF] with the IPS patch to fix it in my collection of fixes. If you are booting it without the menu then you'll need to fix the checksum if using the [BF] version instead of the normal version. I never tested the fix on a real cartridge so the fix may only fix one issue. I don't plan on investigating it further.
First of all, thanks for replying <3
So, I've tried it now, both with and without the menu, but the screen just stays blank when I boot the game. Is there anything I can do to try and fix it?
Another possible issue is the game writes to the Program Bank register at $2FFF which is valid, but the Smart Card doesn't like this. I would assume this is causing the crash.
So it's your lucky day I guess. I patched the ones that I saw and you can give this patch a try. Tell us if it works for you.
MottZilla wrote:
Another possible issue is the game writes to the Program Bank register at $2FFF which is valid, but the Smart Card doesn't like this. I would assume this is causing the crash.
So it's your lucky day I guess. I patched the ones that I saw and you can give this patch a try. Tell us if it works for you.
Once again, thanks for the attention! <3
So, I've download the patch and applied it with Lunar IPS, but it seems that nothing changed. I also tried running the game with and without the menu, but it made no difference. The only thing that's changed is that now it creates a saved data, it seems. Anything else we could try? :C
Can someone help me find the installer for this? All the links seem to be dead. Really want to be able to play Zelda! Any help much appreciated.
Regards
G
In case anyone else is looking for it I'll post it here. I think this is the final version I released.
Thanks Mottzilla, been testing it out at the weekend and it's spot on! Thanks for your hard work.
Do Pocket Monsters Red and Green JPN need patching for the Smart Card too?
I think the US versions needed it so the Japanese versions very likely need a patch too. You might not, but I would expect it to need it.
Hey there, Im hoping there is someone around that could help me out...
Iv'e been trying to get two GBC games running on my ElCheapo flashcard but one (Tamagotchi) crashes to a black screen on boot, and the other (Hamtaro Ham-Hams Unite!) crashes during gameplay (I can give more detailed instructions if someone can help me out)
I checked all around the forums and online but couldn't find any evidence that someone had already patched these games.
If anyone could lend a hand, I would greatly appreciate it!
Do you mean you are using the SmartCard 64M USB or something else?
I'm using the ElCheapo SD Flash Cart made by Bennvenn, and he recommended I come here to look for patches for these games, as you guys have patched a bunch before.
If you can get information on the cartridge's registers it would help to patch those games. But I'm only familiar with the SmartCard that this thread is all about. I imagine the problem is similar in nature where the game is writing an area that on the original cartridge would do nothing but on the flash cart's hardware overwrites its special registers. Certainly though he should have added a disable for the flash cart registers to prevent this unlike the SmartCard which seems to lack that. I'm pretty sure the EverDrive GB has a proper method to protect all flash cart registers from being modified after leaving the menu system.
I can see if I can get that information from him. Yeah that's fair, I am fairly certain his flash cart works in a similar manner as the smart card usb, as patches you guys have worked on have worked on the ElCheapo as well. Yeah I'm not 100% sure, he may have tried to but ran into an issue for some reason, as far as I'm aware the card is still technically a prototype.
Hello, I know this topic is a bit older but I still had to dig it up again. Now I also have a 32MB flash card. The fixes here also work fine. Nevertheless, I still have a small list which do not run without Fix yet.
Batman Forever
Bomberman
Days of Thunder
Ferrari GP
Fire Fighter
Gargoyles Quest
Bart Simpson's Escape from Camp Deadly
Solomons Club
Super Off Road
Wizards and Warriors
Worms
Tetris
Palamedes
If I have Pacman and Snoopy in the Multirom Menu at the same time, when I start Pacman Snoppy is always started.
It would be incredibly great if someone could help me repair it. I like to test very much.
Edit:
If I want to change from MBC1 to MBC5, how do I have to proceed or which value do I have to change?
download/file.php?mode=view&id=15756Nothing happens after the Nintendo logo is displayed.
With the help of a very experienced specialist, I finally learned how to make the games on the flash card work.
I would like to share my results with you in this article.
Batman Forever (USA, Europe) FIX.ips
Bomberman GB (USA, Europe) (SGB Enhanced) FIX.ips
Ferrari Grand Prix Challenge (USA, Europe) FIX.ips
Fire Fighter (Europe) FIX.ips
Gargoyle's Quest (USA, Europe) FIX.ips
Solomon's Club (Europe) FIX.ips
Super Off Road (USA, Europe) FIX.ips
Wizards & Warriors Chapter X - The Fortress of Fear (USA, Europe) FIX.ips
Worms (Europe) FIX.ipsDownload:
http://www.share-online.biz/dl/Q1KDFAUP07N
New Fix
Kid Icarus - Of Myths and Monsters (USA, Europe)
any chance of getting Final Fantasy Legend patched to initialize the save when started from Mottzilla's multirom menu?
neither Final Fantasy Legend, nor Final Fantasy Legend 2 seem to initialize the save when booted with this menu, however as stated in this topic, FFL2 will initialize the save if you select 'start a new game' and then back out to the title screen.
On my 64M cart I've been using a sketchy work around:
1) use Mottzilla's multimenu on side1 with a dummy rom to load the save
*I've been using Tennis with the header modified to the same cartridge type as FFL (06h-rom+mbc2+battery)
2) powering off/on to switch to side2
3) use the multimenu below (which doesn't manage saves) to play FFL
https://github.com/mikeryan/ems-flasher (menu.gb)
https://github.com/chastai/menugb (doesn't seem to exist anymore)
one thing I did notice while modifying headers was the Rom Entry Point for FFL & FFL2 was different than any other roms I had (don't know if this has anything to do with the issue)