Jump to content

Pokemon Crystal GS-BALL JPN Version


BattleMoj

Recommended Posts

  • 1 month later...

Is there such a code for other regions? I know there's a patch for usa crystal that makes the game auto-enable the game when it is created, so you receive the gsball after you exit the pokemon center, and i guess all it does is get this value (what the code you posted does) on the save game upon new save file creation.

Link to comment
Share on other sites

Thank you, I'll check what gets changed at the savefile for event enabling since I doubt the address is the same for spanish version (but I'll try anyway)

edit: the code works for spanish version too :)

EDIT: about a year later (march 24th 2017), but set byte 0x3E44 in the savegame to 0x0B to enable the event via savegame editing for any non jap savegame. Gonna look at jap savegames

EDIT 2: for japanese savegame, set byte 0xA083 to 0x0B

Link to comment
Share on other sites

  • 4 years later...

It have been brought to my attention that the gameshark code doesn't work on real hardware, which I find really strange. I do not own a gameshark, is there anyone around here witha  gameshark and hardware to transfer savegames to PC? If someoen is interested I can analize the savegame after the code is used and see what may be failing on real hardware,

Or if someoen knows why the code works on emulator but not on real hardware... I'm puzzled there. @ajxpk

Link to comment
Share on other sites

At this point I wouldn't recommend using GameShark Codes in Pokémon Crystal, because the game switches SRAM banks, the activation flag for the GS Ball event is at loc 0x0000 of bank 5 (loc 0xA000 in the SRAM file). Now the problem is you can't see which bank is currently in memory so when you just write 0x0B at memory loc 0xA000 it could end up in any bank and cause chaos. I removed the content of my old posts...

Edited by ajxpk
Link to comment
Share on other sites

  • 1 month later...

For those that find this topic later, there's a more sure-fire way of enabling the GS Ball event if editing the address in a memory editor doesn't work for you. (You'll need a hex editor like HxD for this.)

Firstly, backup your save file before you do this, just in case either I messed up my instructions or you mess up the process.

For Japanese language save files, open the Crystal save file, find offset A000 in the file, which unmodified should be 00, and replace it with 0B. Then scroll down to A083 and replace its 00 with 0B as well. Then, save the file and boot up Crystal. When you try to leave the Goldenrod Pokemon Communication Center, the attendant should give you the GS Ball.

For European language save files, perform the same steps as above, only instead of A000 and A083, it's 3E3C and 3E44. When you try to leave the Goldenrod Pokemon Center, you'll trigger the fully-translated GS Ball event, no matter what language game you're playing.

I apologize to those in this thread if this is retreading old ground, but I figured a more concise guide might help anyone who comes across this topic later.

Link to comment
Share on other sites

  • 3 months later...
On 22/3/2021 at 11:17, suloku said:

O si alguien sabe por qué el código funciona en el emulador pero no en el hardware real ... Estoy desconcertado. @ajxpk

Hi suloku

did you find the solution why this works in emulator and not in original cartridge?

Thanks!! 😄

Link to comment
Share on other sites

  • 1 month later...
On 8/29/2021 at 12:00 PM, DaseR said:

Hi suloku

did you find the solution why this works in emulator and not in original cartridge?

Thanks!! 😄

 

On 3/22/2021 at 11:32 AM, ajxpk said:

At this point I wouldn't recommend using GameShark Codes in Pokémon Crystal, because the game switches SRAM banks, the activation flag for the GS Ball event is at loc 0x0000 of bank 5 (loc 0xA000 in the SRAM file). Now the problem is you can't see which bank is currently in memory so when you just write 0x0B at memory loc 0xA000 it could end up in any bank and cause chaos. I removed the content of my old posts...

ajxpk already answered. Probably on emulator there's not as much bank swapping. If there was a way to know which SRAM bank is currently in use...I don't know if GBC gameshark can have button-enabled codes, but if that was the case a more compicated code could be made so that the value is only written when bank 5 is in use....

Not sure if this can be tested on emulator, I don't own any gameshark devices for GB/GBC/GBA

Link to comment
Share on other sites

SRAM bank switching works exactly the same way on emulator. As @BERRY Guru said... the only secure way to get to the exact location is inside the SRAM file.

Edit:
Sorry I always get confused reading information from different sources like Github or Glitch City Laboratories (R.I.P.) back in the days, it's better I read into the asm myself which I just did to refresh my memory.

It turns out that it actually doesn't matter in which SRAM bank it is. It's the so-called Extra RAM (0xA000~0xBFFF) which is not to be confused with the Work RAM bank section (0xD000~0xDFFF). It doesn't change the fact that codes should be used with caution though.

I also re-confirmed that the flag is at 0xA000 in memory.
Háčky posted the asm of the debut function that sets GS Ball Flag a few years ago...

SetGsBallFlag:
	ld a, $05 // GSBallFlag
	call $2FDA //open ram bank

	ld a, $0B // GSBALLFLAG
	ld [$A000], a //GSBallFlag

	call $2FEA //close ram bank
	ret

With that being said, I don't know where you got that other location from, I can't find anything about it...

Edited by ajxpk
Link to comment
Share on other sites

Then I wonder why this "seems" to work on emulator but not on real hardware :S

Not sure if this has any use here, but GB gameshark codetypes come in this format: 0ZYYXXXX

YY: value

XXXX: address

Z: apparently it's the bank? I can't find much documentation about this.

 

Also, I noticed pkhex doesn't support this kind of event flag. I'll check. BTW I recallviewng patch file from the VC versions being online, it would be interesting to see how they exactly they enable the event in the VC versions. I think it just hooks the endgame function and enables the flag...

Link to comment
Share on other sites

On 10/8/2021 at 11:43 AM, suloku said:

Then I wonder why this "seems" to work on emulator but not on real hardware :S

Well, depends on what you mean with it "seems" to work... at least it does not work in a secure way.
Btw. I wonder why people always think these games work different on emulator than they do on the real hardware. An emulator is in fact a virtual machine that (if done properly) imitates what a real machine would do.

SRAM bank switching is essential and has to work exactly like on the real hardware, otherwise the emulation will fail as soon as the game wants to switch banks and writes/reads values to/from incorrect locations. If there's really something here that works different my guess would rather be the cheat codes.
 

On 10/8/2021 at 11:43 AM, suloku said:

Not sure if this has any use here, but GB gameshark codetypes come in this format: 0ZYYXXXX

YY: value

XXXX: address

Z: apparently it's the bank? I can't find much documentation about this.

There's nothing documented about it other than that Z is always 01, I don't think this is for the bank considering that the GB gameshark format predates the CGB hardware...
 

On 10/8/2021 at 11:43 AM, suloku said:

I noticed pkhex doesn't support this kind of event flag. I'll check. BTW I recallviewng patch file from the VC versions being online, it would be interesting to see how they exactly they enable the event in the VC versions. I think it just hooks the endgame function and enables the flag...

I remember I haven't seen anything GS Ball related in the patch file, it should be in code.bin.

Edited by ajxpk
Link to comment
Share on other sites

  • 2 months later...

Dear friends @suloku @ajxpk

First of all sorry if this has already been answered, this topic is a bit confusing to me...

Extracting and using a .sav from my original cartridge game, I've modified with PkHex the fields I indicate in the attached image and injected it back into my original cartridge to get the GS Ball event and receive Celebi in my own GBColor (was succesfull)
My question is, have I done wrong? I would like to know if this change has somehow irreversibly modified my game (ROM) of the current cartridge? I've read you guys talking about something about the memory bank data and although I don't quite know what it is I am a little afraid that I have altered something as I've done all this on my original game, I wouldn't like to and would be willing to remove any changes including restarting the game...
Thank you very much for your help!

1746209643_crystalcelebievent.thumb.png.a7fc9282c7639588323514275cf9d0b9.png

 

Link to comment
Share on other sites

  • 2 weeks later...

@suloku Dear suloku, please your answer about this is very important to me, I would like to know if any data is maliciosly altered by altered by having activated these fields and having the GS Ball in physical cartridge in a GameBoy, and if it would be reversible by resetting the game, thanks a lot.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...