For GB, I use
WLA DX.
This looks like a lot, but it's very simple.
To use that, create an assembly code file, a text file with you ASM code.
.ROMDMG
.MEMORYMAP ;CPU memory map
DEFAULTSLOT 0
SLOTSIZE $4000
SLOT 0 $0000 ;fixed ROM bank
SLOT 1 $4000 ;swappable ROM bank
SLOT 2 $8000 ;actually, 8000-9FFF is VRAM and A000-BFFF is SRAM
SLOT 3 $C000 ;WRAM
.ENDME
.ROMBANKSIZE $4000
.ROMBANKS 8
.BACKGROUND "romname.gb" ;your ROM file name here, allowing you to overwrite the original
.bank 0 slot 0 ;insert code in ROM bank 0 (0000-3FFF), assuming this ROM bank maps to CPU slot 0 (defined above as PU address 0-3FFF)
.org SomeAddress ;will insert code at SomeAddress in the currently specified bank
;code goes here
You'll need to write your new code in some empty space. Then go to the original code and insert a jp/call command (as approriate to whether you end your code with a jp or ret command) to your new code.
Then to assemble, I create a BAT file.
wla-gb -o source.asm source.o
wlalink -r source.txt rom.gb
pause
Where source.asm is our source code we just created, source.o is some file our assembler will create,
source.txt is another text file we will create:
[objects]
source.o
(of course the file our assembler created)
and rom.gb is our ROM file we are hacking.
Also, once you're done saving the scores to SRAM, you probably want to disable SRAM again. That will avoid the "saves get erased when the power is turned off" problem, like NES games had.