Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - SG-1000/SC-3000/Mark III/JP SMS ⇒ Export SMS ⇒ Game Gear Converter

Reply to topic Goto page 1, 2  Next
Author Message
  • Joined: 18 Jul 2017
  • Posts: 12
Reply with quote
SG-1000/SC-3000/Mark III/JP SMS ⇒ Export SMS ⇒ Game Gear Converter
Post Posted: Sat Dec 30, 2017 7:54 am
I have a few Mark III, SG-1000, My Card, and SMS games, but no console to play them on other than a Game Gear.

Inspired by this blog post, I decided to try and make my own adapter.

I have a Master Gear Converter 2 which I had used to play SMS games on my GG. I bought a JP SMS-compatible edge connector online, an MSX prototyping board (has the same pin configuration as Sega consoles in Japan up to the SMS), and found an old SMS (export) cartridge without a board.

I wired it up using the wiki diagrams, and in the end I have pretty much matched the description here, as modified thus.

I needed to close jumper J1 on the two GGs I tested this with. This disables the GG BIOS.

I filed a groove in the edge connector to mate with my donor cartridge, and filed a hole in the donor cartridge, so that I could have as strong of a mechanical bond as possible.

Sion's Papa said his SG-1000 games were inverted, and if you look closely at Zaxxon (SG-1000) on the blog post here, it shows an inverted title screen. This guy uses his own convention to describe the wiring he did making his Mark III to GG converter, but it matches that used by ApolloBoy.

I can play Mark III and My Card games (via the Card Catcher) without any problems. But my SG-1000 games are also inverted. Games like Zaxxon I can basically play with the funny colors, but simpler games like Bongo Congo look terrible and I can't see the playfield clearly. Is this just how the GG necessarily runs these old games, or can I modify the adapter and fix this?

FWIW, I noticed the palette chosen for displaying SG-1000 games varies depending on whether I last booted the system in GG mode or SMS mode.

For others considering a similar project, this page and this page may also be useful.

Finally, my wiring:


Mark III   |SMS
--------------------------------------
A1      |25
A2      |26
A3      |27
A4      |28
A5      |29
A6      |30
A7      |31
A8      |32
A9      |8
A10      |9
A11      |12
A12      |10
A13      |33
A14      |7
A15      |24
A16      |23
A17      |22
A18      |18
A19      |17
A20      |16
A21      |15
A22      |14
B1      |1, 35
B2      |1, 35
B3      |NC
B4      |5
B5      |4
B6      |2
B7      |46
B8      |NC
B9      |3
B10      |13
B11      |34
B12      |NC
B13      |NC
B14      |NC
B15      |NC
B16      |NC
B17      |NC
B18      |6
B19      |11
B20      |37
B21      |19, 20, 21
B22      |19, 20, 21


Could changing B9 to 39 and B10 to 3 make a difference? I'm not so interested in JP SMS games, and this looks like the only bit of wiring that really differs between SG-1000 and the JP SMS.
Converter (1).JPG (361.17 KB)
Converter Outside
Converter (1).JPG
Converter (2).JPG (348.07 KB)
Converter Inside
Converter (2).JPG

  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Sat Dec 30, 2017 8:07 am
The GG doesn't have the palette set up for SG games, previously people have mentioned getting all black but that might depend on the hardware and whether the BIOS is enabled. In theory you can make a bit of software to initialise it to the right colours but I'm not sure how that would survive a power cycle.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 08 Jul 2001
  • Posts: 7967
  • Location: Paris, France
Reply with quote
Post Posted: Sat Dec 30, 2017 10:35 am
Copying the data from https://pastebin.com/BDwLurrR for future reference (in case it gets deleted)

markIII to export SMS pinout


Jp  /  Export  | code Jp / Export
B1  /  1,35    | +5V
B2  /
B3
B4  /  5       | M8-B
B5  /  4       | Rd
B6  /  2       | Wr
B7
B8
B9  / 39       | Refresh
B10 / 13       | Mreq / CE
B11 / 34       | CONT
B12
B13
B14
B15
B16
B17
B18 /  6       | A14
B19 / 36,11    | A15 / A15,M0-7
B20 / 37       | M1
B21 / 19,20,21 | Gnd
B22 / 19,20,21 | Gnd

A1  / 25       | A0
A2  / 26       | A1
A3  / 27       | A2
A4  / 28       | A3
A5  / 29       | A4
A6  / 30       | A5
A7  / 31       | A6
A8  / 32       | A7
A9  /  8       | A8
A10 /  9       | A9
A11 / 12       | A10
A12 / 10       | A11
A13 / 33       | A12
A14 /  7       | A13
A15 / 24       | D0
A16 / 23       | D1
A17 / 22       | D2
A18 / 18       | D3
A19 / 17       | D4
A20 / 16       | D5
A21 / 15       | D6
A22 / 14       | D7
  View user's profile Send private message Visit poster's website
  • Joined: 18 Jul 2017
  • Posts: 12
Reply with quote
Post Posted: Sun Dec 31, 2017 6:01 am
Maxim wrote
The GG doesn't have the palette set up for SG games, previously people have mentioned getting all black but that might depend on the hardware and whether the BIOS is enabled. In theory you can make a bit of software to initialise it to the right colours but I'm not sure how that would survive a power cycle.


I was hoping it would display like on a regular Master System, but if this is how the GG necessarily displays SG titles then I suppose there is little that can be done.

I too got all black at first, but not for all games. That suggested that the BIOS was the issue, and disabling that did allow the games to run (albeit with odd colors).
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Sun Dec 31, 2017 8:31 am
If you can go Everdrive then you may be able to work around it, but it's rather more complicated (custom BIOS/bootloader in the adaptor) otherwise.
  View user's profile Send private message Visit poster's website
  • Joined: 05 Nov 2014
  • Posts: 167
  • Location: Auckland - NZ
Reply with quote
Post Posted: Sun Dec 31, 2017 9:14 am
Im working on a similar adapter.

http://www.smspower.org/forums/16879-MKIIIJPToSMSAdapter

Do the colour issues mentioned here only relate to a game gear? Might be able to incorperate a software fix for that with a bit of help.
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Sun Dec 31, 2017 11:52 am
Yes, it needs you to set the system palette to match the standard TMS9981 palette which you could do via a bootloader. Master System has a (bad) fixed palette, and Mega Drive doesn't support those video modes at all.
  View user's profile Send private message Visit poster's website
  • Joined: 18 Jul 2017
  • Posts: 12
Reply with quote
Post Posted: Wed Jan 03, 2018 1:32 pm
wasup wrote
Im working on a similar adapter.

http://www.smspower.org/forums/16879-MKIIIJPToSMSAdapter

Do the colour issues mentioned here only relate to a game gear? Might be able to incorperate a software fix for that with a bit of help.


That is a really nice looking adapter. Writing bootloader to fix the palette is beyond what I've done in the past, but I would love that feature.
  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Wed Jan 03, 2018 2:34 pm
it's just a few lines with devkitSMS - where can I get the correct RGB values?
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Wed Jan 03, 2018 8:00 pm
http://www.smspower.org/maxim/forumstuff/colours.html
  View user's profile Send private message Visit poster's website
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Thu Jan 04, 2018 12:20 pm
Last edited by sverx on Fri Mar 09, 2018 9:23 am; edited 1 time in total
Thank you Maxim!

#define TARGET_GG
#include "..\SMSlib\SMSlib.h"

unsigned int const TMScolors[16]={
RGBHTML(0x000000),RGBHTML(0x000000),RGBHTML(0x47b73b),RGBHTML(0x7CCF6F),
RGBHTML(0x5D4EFF),RGBHTML(0x8072FF),RGBHTML(0xB66247),RGBHTML(0x5DC8ED),
RGBHTML(0xD76B48),RGBHTML(0xFB8F6C),RGBHTML(0xC3CD41),RGBHTML(0xD3DA76),
RGBHTML(0x3E9F2F),RGBHTML(0xB664C7),RGBHTML(0xcccccc),RGBHTML(0xffffff)};

void main(void) {
  GG_loadBGPalette (TMScolors);
  GG_loadSpritePalette (TMScolors);
}


edit: (old attachment removed)
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Thu Jan 04, 2018 2:22 pm
The tricky part is making the bootloader hardware, whereby somehow the code runs and then replaces itself with the SG game. Typically you need to execute the code from RAM to achieve that, and then have some software signal to the hardware to swap the ROM.
  View user's profile Send private message Visit poster's website
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Thu Jan 04, 2018 3:01 pm
well, you can run most of the code from ROM, then just execute from RAM the (small) part you need to un-map the boot ROM and map the game ROM, as in my (w.i.p.?) dbLauncher (highlighted code is the code that gets copied and to RAM and executed from there)
  View user's profile Send private message Visit poster's website
  • Joined: 05 Nov 2014
  • Posts: 167
  • Location: Auckland - NZ
Reply with quote
Post Posted: Wed Jan 24, 2018 11:25 am
Maxim wrote
http://www.smspower.org/maxim/forumstuff/colours.html


I found a small error on this table..

It has TMS $0a = SMS $04, but should be SMS = $05.
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Thu Mar 08, 2018 7:34 pm
The table is repeated here: http://www.smspower.org/Development/Palette and I've fixed it there. Please ignore my old html file...

Edit: I thought the colours were a bit too similar so I sanity-checked it against a source similar to the one I used originally (probably about 18 years ago, gulp) which derives them from the datasheet voltages. The wiki page is updated, sverx will need to update his ROM... here's the hex codes:

Quote
000000
000000
21C842
5EDC78
5455ED
7D76FC
D4524D
42EBF5
FC5554
FF7978
D4C154
E6CE80
21B03B
C95BBA
CCCCCC
FFFFFF
  View user's profile Send private message Visit poster's website
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Fri Mar 09, 2018 9:22 am
ROM updated
TMScolors.rar (7.29 KB)
TMScolors (ROM and source)

  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Used these pin equivalence lists, handmade adapter works!
Post Posted: Tue May 01, 2018 8:04 pm
Last edited by bsittler on Mon May 14, 2018 12:02 am; edited 2 times in total
Thank you for sharing your information on pin equivalence between SG-1000/Mark III/etc. and the "export" SMS! Using this information, a 3D printed furrtek-designed cartridge shell, a repurposed MSX protoboard, and an edge connector from Tototek, I was able to solder together a prototype cartridge adapter and use it to load older SG-1000 and Mark III cartridges and (with the aid of a Card Catcher) My Cards on a modified Game Gear via Gear Master (SG-1000 titles have wrong colors), on a modified Nomad via PowerBase Mini (Mark III titles only), and mednafen on Mac via Retrode2 + PlugIn Master (everything works great, but it's a software emulator so maybe not as exciting as seeing Woody Pop with HPD-200 running on a modified Nomad was.)

Still very much hoping someone is able to produce a version of this (especially if it can initialize Game Gear palette for SG-1000 using a mini-BIOS) for sale - I would happily buy one and toss or tear apart my messy prototype for parts :)

More details and some pictures of the adapter towers over in the related thread: Development - MKIII/JP to SMS adapter
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
SG-1000 Zaxxon "working" with a palette hack
Post Posted: Sun May 13, 2018 11:17 am
sverx wrote
ROM updated


Thank you!

That's also a very useful starting point for patching SG-1000 games so that they worked when flashed onto Game Gear cartridges. However it doesn't do the lower-color-depth palette setup needed to run those same games on a Gear Master or any other cartridge or adapter that is wired for Master System mode.

I've been hacking on Zaxxon and so far this seems to be working well in both Game Gear mode and Master System mode with a single ROM (just change the cartridge wiring to switch modes.)

Palette setup function - this checks for in($00) == $C0 to figure out whether to set up the palette for Game Gear mode or for Master Gear Converter mode. Apologies for the ugly and duplicated code, this was written in a hex editor but really needs to move to ASM.


00007f60: db00 fec0 2870 182a 1100 c00e bff3 ed59  ....(p.*.......Y                                                                 
00007f70: ed51 fb06 100e beed a320 fcc9 1110 c00e  .Q....... ......                                                                 
00007f80: bff3 ed59 ed51 fb06 100e beed a320 fcc9  ...Y.Q....... ..                                                                 
00007f90: 219c 7fcd 687f 219c 7fc3 7c7f 0000 181d  !...h.!...|.....                                                                 
00007fa0: 353a 023d 172b 1a1f 0427 2a3f 1100 c00e  5:.=.+...'*?....                                                                 
00007fb0: bff3 ed59 ed51 fb06 200e beed a320 fcc9  ...Y.Q.. .... ..                                                                 
00007fc0: 1120 c00e bff3 ed59 ed51 fb06 200e beed  . .....Y.Q.. ...                                                                 
00007fd0: a320 fcc9 21e0 7fcd ac7f 21e0 7fc3 c07f  . ..!.....!.....                                                                 
00007fe0: 0000 0000 c204 d507 550e 770f 5d04 e40f  ........U.w.]...                                                                 
00007ff0: 5f05 7f07 cd05 ce08 b203 5c0b cc0c ff0f  _.........\.....                                                                 


The Game Gear native mode palette is from your code, but I couldn't find a Master System mode palette I'm completely happy with. At the moment I'm using this one:

00 00 18 1d 35 3a 02 3d 17 2b 1a 1f 04 27 2a 3f

To wire this palette into Zaxxon, I changed the relative jump displacement at 00000007 from $61 to $1A, overwrote five $00 bytes (I hope they weren't important!) at 00000023 with a call to the palette setup routine followed by a rest-of-the-way relative jump: cd 607f 1841

The only other change was to overwrite the very end of the ROM with the palette setup routine above. I'm sure someone who actually knows Z-80 asm could shorten it significantly, especially since it has two copies of everything, one for each mode, and it could also easily be converted to a single straight-line function to save some bytes.

edit: updated patch to add a ROM header with "export SMS" region and a valid checksum too. Consequently the code was relocated 16 bytes earlier than the version hex-dumped above. The SG-1000 Zaxxon dump I took and applied this patch to had length 32768 bytes and MD5 52bbf5336c190610a0fb1ab0bdaca455

edit 2: In case you're interested in fine-tuning the SMS palette, there's a jsfiddle I've been using to explore possible mappings: https://jsfiddle.net/xjz7dyen/3/

edit 3: The same patch seems to work for Doki Doki Penguin Land, an SG-1000 My Card. I have a separate patch for it here only because the added ROM headers differ. The SG-1000 Penguin Land dump I took and applied this patch to had length 32768 bytes and MD5 79f15598828e697e75c65130262d8d94

edit 4: A very similar patch seems to work for Bomb Jack, another SG-1000 My Card. The SG-1000 Bomb Jack dump I took and applied this patch to had length 32768 bytes and MD5 0bf5b6959fc1b58d8e37f9647f47a0b3
Screen Shot 2018-05-13 at 04.04.17.png (24.8 KB)
Palette comparison (top=GG, bottom=SMS)
Screen Shot 2018-05-13 at 04.04.17.png
Screen Shot 2018-05-13 at 16.30.42.png (99.89 KB)
Some of the other possible SMS palettes
Screen Shot 2018-05-13 at 16.30.42.png
Zaxxon (SG-1000) SG2GG.ips (205 B)
Patch to fix Zaxxon SG-1000 cartridge colors on Game Gear and add an export SMS ROM header
Penguin Land (SG-1000) SG2GG.ips (205 B)
Patch to fix Doki Doki Penguin Land SG-1000 My Card colors on Game Gear and add an export SMS ROM header
Bomb Jack (SG-1000) SG2GG.ips (212 B)
Patch to fix Bomb Jack SG-1000 My Card colors on Game Gear and add an export SMS ROM header

  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Mon May 14, 2018 8:09 am
different palette might work better/worse than other depending on the game they're applied to, so actually we might choose some 4 additional palette and bind them to one of the direction keys - what I mean is to make a 'bios' ROM that loads an alternate palette if you hold a direction on the pad when booting the console...

anyway I wouldn't use that palette where gray and white maps to the same color - my opinion, of course.
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Mon May 14, 2018 8:32 pm
Agreed! The ones with duplicate colors are automatically constructed and I wouldn't recommend them. At the moment I'm actually playing with a YPbPr-to-RGB formula from an MSX1 discussion (same VDP) and it's yielding promising results. I'll see whether I can get your direction-pad palette selection idea working with some manually tuned palette options
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Mon May 14, 2018 11:57 pm
sverx wrote
different palette might work better/worse than other depending on the game they're applied to, so actually we might choose some 4 additional palette and bind them to one of the direction keys - what I mean is to make a 'bios' ROM that loads an alternate palette if you hold a direction on the pad when booting the console...

anyway I wouldn't use that palette where gray and white maps to the same color - my opinion, of course.


New candidates, care to pick some favorites for up, down, left, right and default? All can be used in GG mode, only those with no __ entires can be used in SMS mode.


00,00,__,__,__,__,__,__,__,__,__,__,__,__,__,3f TMS 95% GG
00,00,__,__,__,__,__,__,__,__,__,__,__,__,__,3f f18a GG
00,00,__,__,__,__,__,__,17,__,__,__,__,__,__,3f MESS GG
00,00,__,__,__,__,__,__,__,__,__,__,__,__,__,3f TMS 47% GG
00,00,__,__,__,__,__,__,__,__,__,__,__,__,__,3f TMS 50% GG
00,00,__,__,__,__,__,__,__,__,__,__,__,__,__,3f TMS 50%/75% GG
00,00,__,__,__,__,__,__,__,__,__,__,__,__,__,3f TMS 54% GG
00,00,__,__,__,__,__,__,__,__,__,__,__,__,__,3f RGB GG
00,00,08,0c,10,30,01,3c,02,03,05,0f,04,33,15,3f SMS GG
00,00,08,18,30,35,02,3c,03,17,0a,1b,0c,32,2a,3f mod1
00,00,0c,__,__,__,__,3c,__,__,__,__,__,__,__,3f TMS 100% GG
00,00,0c,1c,34,35,03,3c,07,17,0a,1f,08,37,2a,3f tms100+
00,00,0c,1c,34,35,06,3c,07,17,0a,1f,08,37,2a,3f tms95+
00,00,0c,1d,35,3a,06,3d,07,1b,0a,1f,08,26,2a,3f tms5075+
00,00,0c,2d,35,3a,07,3d,17,2b,0f,2f,08,37,2a,3f f18a+
00,00,18,1d,25,35,16,3d,17,1b,1a,1f,08,26,2e,3f TMS 47% SMS_5
00,00,18,1d,30,35,16,3d,17,2b,1f,1b,08,27,2a,3f mod2
00,00,18,1d,35,3a,02,3d,17,2b,1a,1f,04,27,2a,3f mod3
00,00,18,1d,35,3a,16,3d,17,2b,1a,1f,08,26,2a,3f f18a~
00,00,18,1d,35,3a,16,3d,17,2b,1f,2f,08,26,2a,3f sg~
00,00,18,1d,35,3a,16,3d,17,2b,1f,2f,08,27,2a,3f sg+
00,00,19,1d,25,35,16,3d,17,2b,1a,2f,08,26,2a,3f tms47~
00,00,19,39,35,3a,16,3d,17,2b,1a,2f,08,26,2a,3f rgb~
00,00,19,39,35,3a,16,3d,17,2b,1f,2f,08,26,2a,3f rgb+
00,00,1c,2d,35,3a,16,3d,17,2b,1f,2f,08,26,2a,3f tms50+
00,00,1c,2d,35,3a,16,3d,17,2b,1f,2f,08,27,2a,3f mess+


More possibilities -- including many that were automatically generated, so some include colliding palette entries -- here: https://jsfiddle.net/xjz7dyen/22/
Screen Shot 2018-05-14 at 20.26.46.png (106.24 KB)
SMS mode palette candidates
Screen Shot 2018-05-14 at 20.26.46.png

  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Tue May 15, 2018 7:54 am
I'm afraid I'm not very good at this - you could create a PNG with each of the palette beside the original TMS and create a discussion thread where fellow forum users can comment, and then picking the most appreciated :)
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Tue May 15, 2018 7:58 am
Isn't part of the problem that the TV gamma, and GG screen general awfulness, make it hard to compare? You could try to match the colours to a real system but comparing on a computer screen can't be the same.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 08 Jul 2001
  • Posts: 7967
  • Location: Paris, France
Reply with quote
Post Posted: Tue May 15, 2018 8:25 am
I don't have much to say now, only that I am really glad this is happening and being researched.
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Tue May 15, 2018 9:43 am
Last edited by bsittler on Mon Jul 16, 2018 7:28 am; edited 3 times in total
sverx wrote
I'm afraid I'm not very good at this - you could create a PNG with each of the palette beside the original TMS and create a discussion thread where fellow forum users can comment, and then picking the most appreciated :)


That's an excellent idea! However I'm lazy, and instead I'm inclined to first just try a couple that seem reasonable to me and see whether people are happy with them :) - also, it's trivial to change the palette in a hex editor until it looks right for the game you're using. I would not be surprised to learn that different games were designed for different SG-1000 mode palettes, e.g. due to SMS vs. SG-1000 or due to different television standards

Maxim wrote
Isn't part of the problem that the TV gamma, and GG screen general awfulness, make it hard to compare? You could try to match the colours to a real system but comparing on a computer screen can't be the same.


Yes! I actually don't even have an unmodified original Game Gear (one of mine has a modern backlight behind the original screen, the other one has McWill's awesomeness), nor do I have a Majesco Game Gear of any sort. I also don't have a Master System or SG-1000 to compare to.

For now I've arbitrarily chosen exactly two palettes: "SMS" (for both GG mode and SMS mode) which exactly matches the Master System in SG-1000 mode's palette entries (and many emulators), and "TMS 50% GG" (for GG mode)/"tms50+" (for SMS mode) which is intended to match the original SG-1000 VDP output but I can't actually test that. I also don't have any sort of color-correcting reference for proper photographic measurement, nor do I have a video capture card (which would only help on the McWill Game Gear anyhow)

Bock wrote
I don't have much to say now, only that I am really glad this is happening and being researched.


Thanks! That means a lot especially coming from you whose much more impressive work has benefitted me so many times

The attached patches default to the "TMS 50%" palette, but they inject a less-than-a-second pause at start-up, and if you happen to be pressing up on the direction pad at the end of that pause they will instead use the "SMS" palette

edit: Attached some screenshots so you can see the palette differences in GG mode. SMS mode is similar but with worse color fidelity; I'm not sure I have an easy way to actually capture a screenshot of it, but it does look good on the modified Game Gears I have

Note that while GG mode has better color fidelity, SMS mode is preferred to actually play the games since I have not made any in-game changes (panning, level reduction, etc.) and so you may find the action occurring outside the visible window in GG mode. Zaxxon actually manages to be fairly playable despite this, Bomb Jack and Penguin Land not so much... (and if anyone has ideas for e.g. how to automatically pan to keep the player sprite onscreen in GG mode, that would be awesome!)
Screen Shot 2018-05-15 at 02.54.11.png (26.57 KB)
Bomb Jack in mednafen running in GG mode (SMS palette on the left, TMS 50% on the right)
Screen Shot 2018-05-15 at 02.54.11.png
Screen Shot 2018-05-15 at 02.55.37.png (19.75 KB)
Penguin Land in mednafen running in GG mode (SMS palette on the left, TMS 50% on the right)
Screen Shot 2018-05-15 at 02.55.37.png
Zaxxon (SG-1000) SG2GG.png (20.31 KB)
Zaxxon in mednafen running in GG mode (SMS palette on the right, TMS 50% on the left)
Zaxxon (SG-1000) SG2GG.png
Zaxxon (SG-1000) SG2GG.ips (537 B)
Up at start-up to use the SMS palette, down for CV palette
Bomb Jack (SG-1000) SG2GG.ips (537 B)
Up at start-up to use the SMS palette, down for CV palette
Penguin Land (SG-1000) SG2GG.ips (537 B)
Up at start-up to use the SMS palette, down for CV palette

  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Tue May 15, 2018 9:56 am
bsittler wrote
instead I'm inclined to first just try a couple that seem reasonable to me and see whether people are happy with them :)


whatever floats your boat is surely fine for me :)
  View user's profile Send private message Visit poster's website
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Tue May 15, 2018 11:49 am
bsittler wrote
if anyone has ideas for e.g. how to automatically pan to keep the player sprite onscreen in GG mode, that would be awesome!


I think it's impossibile. Beside that, I'm curious about why you're not seeing the whole screen - shouldn't the GG go in "SMS mode" (fullscreen)?
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Tue May 15, 2018 1:01 pm
You can set it to GG mode in hardware and you get a "zoomed" view. I'm not sure if the scroll registers work in this scenario - it's likely they do - and so you could inject a routine to set them based on some game state regarding the player sprite location. But I suspect games will not be very playable like this.
  View user's profile Send private message Visit poster's website
  • Joined: 05 Sep 2013
  • Posts: 2308
Reply with quote
Post Posted: Tue May 15, 2018 1:47 pm
Last edited by sverx on Tue May 29, 2018 11:19 am; edited 1 time in total
sure the scrolling works, the matter is that how can 'automatically' follow the player sprite?
The best you can do is possibly to reprogram some games so that when you copy the SAT (and making sure you do know which sprite is your player!) you also update the scroll registers accordingly... (also, don't forget they're write only...)
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Tue May 15, 2018 3:12 pm
sverx wrote
bsittler wrote
if anyone has ideas for e.g. how to automatically pan to keep the player sprite onscreen in GG mode, that would be awesome!


I think it's impossibile. Beside that, I'm curious about why you're not seeing the whole screen - shouldn't the GG go in "SMS mode" (fullscreen)?


The patches make the same game ROM work in both windowed (GG) and fullscreen (SMS) modes. This is possible because GG mode leaves a special fingerprint in some of the port-mapped registers. I did this because (a) games are sometimes playable windowed with centered viewport already (e.g. Zaxxon), (b) sometimes the only wiring available is for windowed mode, (c) on the original GG screen many pixels blur together with strange artifacts in SMS mode, and (d) because I'm optimistic that with scrolling hacks additional titles might work this way too.

Expanding on (b), some cartridges are only wired for one of those modes but not the other: for example, anything plugged through an unmodified Beeshu Gear Master is SMS only, and some GG flash cartridges hardwire GG mode, as do most regular GG game cartridges -- so using one of these as a donor PCB without modified traces will force GG mode. The only GG PCB hardwired to SMS mode I have (one of the Mickey Mouse series) is too nice a game for me to consider taking it apart and using as a PCB donor. Others, e.g. GG EverDrive, support both modes using special hardware inside the (GG) cartridge, and choose which to use based on file extension. AFAIK the mode is not changeable at runtime by regular GG or SMS software means, though, as it involves changed electrical connectivity between a couple of the GG cartridge pins that don't have equivalents on the SMS or SG-1000/.../MkIII pinout.

Maxim wrote
You can set it to GG mode in hardware and you get a "zoomed" view. I'm not sure if the scroll registers work in this scenario - it's likely they do - and so you could inject a routine to set them based on some game state regarding the player sprite location. But I suspect games will not be very playable like this.


I hope to find out soon whether this is actually possible. Another possibility might be manual adjustment using an vertical sync interrupt handler patched to intercept e.g. START+optional direction and use that to choose which part to center - START alone to re-center, the others for window positions flush with the appropriate edge(s) of the SMS screen.

sverx wrote
sure the scrolling works, the matter is that how can 'automatically' follow the player sprite?
The best you can do, eventually, is to reprogram some games so that when you copy the SAT (and making sure you do know which sprite is your player!) you also update the scroll registers accordingly... (also, don't forget they're write only...)


Right, I was assuming this would need to be a semi-sophisticated patch likely based on trial and error and/or disassembly of the specific game. My hope is that some of these games are old and simple enough to actually use a single sprite index exclusively for the player or other "focus" point, possibly making identification of the code to patch a bit simpler. Some emulators actually have an option like this already, e.g. smsadvance which is dealing with a screen without enough pixels in the vertical dimension. Needed VDP state being write-only complicates things significantly

edit: I tested some more using my closer-to-original Game Gear (the one with modern backlight but original LCD, no McWill screen) and I think that in SMS mode some games are a lot more playable using the higher-contrast "SMS" version of the SG-1000 palette rather than the "tms50+" palette, even though the colors of the "tms50+" one seem to be much closer to what the SG-1000 software I'm working with look "correct" with -- e.g. Bomb Jack and Zaxxon colors look closer to arcade RGB, and to emulator output for emulators actually claiming to emulate SG-1000 as opposed to SMS. Unfortunately the GG SMS display mode drops a lot of pixels so e.g. it's very hard to spot the "splash" when a Zaxxon test shot hits an approaching wall. For now I just start the game holding the up direction on the pad when using the non-McWill GG and booting the game in SMS mode, which makes things uglier but reduces the number of accidental wall collisions.
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
One more patch (Othello Multivision Q*Bert)
Post Posted: Wed Jun 06, 2018 7:19 am
Last edited by bsittler on Mon Jul 16, 2018 7:26 am; edited 3 times in total
A very similar patch worked on a Retrode dump of the Othello Multivision Q*Bert cartridge; the original dump was 8096 bytes and had the MD5 a768a8ae921126300e98f9d918a4a0c9 but the patch converts it to 32768 bytes to make room for the palette patcher (and a whole lot of zeros in between which the IPS format compresses very efficiently)

For this game the default palette (more like SG-1000 than like the SMS approximation) seems to work better on all systems than the SMS one. Q*Bert actually ends up being fairly usable even in "windowed" mode on the Game Gear
QBert (J) (MV) (SG2GG).png (18.39 KB)
Q*Bert in mednafen in Game Gear windowed mode showing both palettes
QBert (J) (MV) (SG2GG).png
Q-bert (Japan) (Othello Multivision) SG2GG.ips (545 B)
Press up during start-up for SMS palette, down for CV palette

  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Wed Jun 06, 2018 8:01 pm
You can extend to 16KB, or put the header at 8KB-16, it's a never used feature of the BIOS. But I guess nobody cares about 32KB nowadays :)
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Mon Jun 11, 2018 8:13 pm
Last edited by bsittler on Mon Jul 16, 2018 7:25 am; edited 5 times in total
Maxim wrote
You can extend to 16KB, or put the header at 8KB-16, it's a never used feature of the BIOS. But I guess nobody cares about 32KB nowadays :)


Yeah, that is my hope - ROM/flash should be cheap enough in this era. I was concerned when I read that no known game uses the SMS header with that size and was concerned that it could trigger bugs so I inflated to a known-good size.

In fact I just got SG-1000 Chack'n Pop (both unmodified MD5 286ba24b335a1600dfc611a0a9fe7875 as trimmed from a Retrode2 dump, and with the English translation patch applied previously MD5 fb5c6e4d23b192cf36d87192289444e2) working by inflating further (to 48k) but for this one I left the header at 7ff0 and the header lies and claims 32k to avoid bugs

edit: I also got my dumps of SG-100 Wonder Boy (MD5 76f29fee0cd3af921e488a276dace636 - I'll warn that it's certainly no comparison to Revenge of Drancon, quality-wise!) and Championship LodeRunner (MD5 f49d9ea611ccb9289994774406f20d06) working, though the latter one unfortunately seems to actually use the BIOS header area so it will likely only work correctly in a no-BIOS early JP-model Game Gear. These patches likewise inflate to 48k

edit 2: turns out Chack'n Pop uses the BIOS header area too, as part of the released heart sprite. Zero out 0x7ff0 ... 0x7fff to fix the glitch (I'll upload fresh IPS files once I have a chance to generate them)

edit 3: Chack'n Pop is fixed (no more BIOS header, freed heart sprite no longer accompanied by graphical errors)

edit 4: Sega-Galaga is added (48K inflation); my Retrode2 dump is likely incorrect (truncated to 40960 bytes, MD5 17a97b16c3c7551c1d0bc98271d65dd1) but seems to work fine; this is another no-BIOS-header dump, so you will need to defang, remove, or otherwise bypass your BIOS (e.g. using a flashcart with BIOS-defeating ROM prior to the "real" ROM) to use this dump. Sega-Galaga does a really odd thing at start-up where SP is initially pointed at ROM(!) and then repointed at RAM, and my patch works by relocating the second SP setup inside the inflated area

edit 5: Removed separate patch for English translation of Chack'n Pop as it is byte-for-byte identical with the patch for the untranslated version

edit 6: Finally got a Retrode2 redump of Sega-Galaga (truncated to 40960 bytes with MD5 7f7e1d564448fdce96d239ad9ebf37d6) which seems to match what others have reported; the same patch works; only differences were some strange infrequent bit-errors scattered throughout the earlier dump

edit 7: Othello Multivision Guzzler (Retrode2 dump trimmed to 8192 bytes with MD5 f3f1042745e96e29bfdf920d031b8cd5) works too

edit 8: Space Invaders (16384 bytes inflated to 32768 bytes, MD5 87a97b049ec01b1803b93f06d0407586) and Star Force (32768 bytes inflated to 49152 bytes, MD5 2cbd1f9f4927f9618390340f56f116a6) are working now too, both with BIOS headers

edit 9: Three more 32K dumps patched & working with BIOS headers: Lode Runner (MD5 4b4f02eb3cf7d5f9dcd1311d72e6d742), Monaco GP v1.1 (MD5 74121fd6f1024ee3d3f5d1db29956d7d), and Sindbad Mystery (MD5 7b0f2be3588337df59959ababbefe505)
Chack'n Pop (SG-1000) SG2GG.png (20.79 KB)
Chack'n Pop in mednafen in Game Gear windowed mode showing both palettes
Chack'n Pop (SG-1000) SG2GG.png
Chack'n Pop trans [v1.02] SG2GG.png (21.88 KB)
Chack'n Pop English translation in mednafen in Game Gear windowed mode showing both palettes
Chack'n Pop trans [v1.02] SG2GG.png
Wonder Boy (SG-1000) [!] SG2GG.png (19.68 KB)
Wonder Boy in mednafen in Game Gear windowed mode showing both palettes
Wonder Boy (SG-1000) [!] SG2GG.png
Championship Loderunner (SG-1000) SG2GG.png (19.05 KB)
Champtionship LodeRunner in mednafen in Game Gear windowed mode showing both palettes
Championship Loderunner (SG-1000) SG2GG.png
SegaGalaga-SG2GG.png (15.64 KB)
Sega-Galaga in mednafen in Game Gear windowed mode showing both palettes
SegaGalaga-SG2GG.png
Guzzler (Japan) (Othello Multivision) SG2GG.png (23.03 KB)
Guzzler in mednafen in Game Gear windowed mode showing both palettes
Guzzler (Japan) (Othello Multivision) SG2GG.png
SpaceInvaders-SG2GG.png (16.65 KB)
Space Invaders in mednafen in Game Gear windowed mode showing both palettes
SpaceInvaders-SG2GG.png
StarForce-SG2GG.png (21.54 KB)
Star Force in mednafen in Game Gear windowed mode showing both palettes
StarForce-SG2GG.png
Lode Runner (JEK) (SG-1000) SG2GG.png (13.91 KB)
Lode Runner in mednafen in Game Gear windowed mode showing both palettes
Lode Runner (JEK) (SG-1000) SG2GG.png
Monaco GP (Japan) (SG-1000) (V1.1) (32K) SG2GG.png (14.93 KB)
Monaco GP v1.1 in mednafen in Game Gear windowed mode showing both palettes
Monaco GP (Japan) (SG-1000) (V1.1) (32K) SG2GG.png
Wonder Boy (SG-1000) [!] SG2GG.ips (558 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Championship Loderunner (SG-1000) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Chack'n Pop (SG-1000) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Sega Galaga (J) (SG-1000) (40K) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Guzzler (Japan) (Othello Multivision) SG2GG.ips (545 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Space Invaders (SG-1000) SG2GG.ips (545 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Star Force (SG-1000) [!] SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Loderunner (SG-1000) [!] SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Monaco GP (J) (SG-1000) (V1.1) (32K) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated
Sindbad Mystery (SG-1000) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV, otherwise SG-approximated

  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Mon Jun 18, 2018 12:51 am
Ancient news at this point, but Twitter user @masuo0258 apparently built some sort of adapter allowing Japanese Mark III cartridges to run on a Game Gear, skipping the middle "export SMS" step:

https://twitter.com/masuo0258/status/962345986096955393

I haven't traced the wiring in those pictures yet, but it's possible that it might be useful to collate with the lists here.

The finished result looks pretty good too, IMHO:

https://twitter.com/masuo0258/status/717749976802045953

Apologies if this was linked elsewhere here - I looked but didn't find it
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Fri Jun 29, 2018 12:48 am
Last edited by bsittler on Sat Jul 21, 2018 6:24 am; edited 8 times in total
I wrote a couple more SG-1000 to Game Gear patches - one for C_So! (maybe no room for BIOS header, inflates from 32K Retrode2 dump with MD5 d87daad7de33105d703b613052ccc2dd to 48K to accommodate palette fix) and another for Pop Flamer (BIOS header added, inflates from 16K Retrode2 dump with MD5 7f841aa0c225662e26ca7a8df20b2eb8 to 32K to accommodate palette fix) - however I have reached my 25 MB upload quota.

@Bock - is there a better way or alternate part of the site where I could or should share these? Alternatively, is it reasonable & possible to request more quota? Or are these older Sega 8-Bit to newer Sega 8-Bit ports off-topic enough for SMS Power! that I should not post them in the first place?

edit: Maxim granted me more upload quota (thank you!) - the files are attached now and uuencode+instructions are removed

edit 2: Added no-BIOS-header palette fixer with 40K-to-48K expansion for SG-1000 Sega Flipper (MD5 49c7c14879a437e60730b62a7550cdf6)

edit 3: Added no-BIOS-header palette fixer with 40K-to-48K expansion for SG-1000 Pacar (MD5 c672bc2409443cc5bca35abd041d11e0); also reattached screenshot and patch (including BIOS header) for 32K Sindbad Mystery (MD5 7b0f2be3588337df59959ababbefe505) as the previous post reached its attachment limit

edit 4: Added BIOS-appeasing palette fixer for 16K-to-32K expansion for SG-1000 Hustle Chumy (MD5 8be690d357a99abd26ebb5378e9c0153)

edit 5: Added BIOS-appeasing palette fixed for my 32K-truncated SG-1000 Rock N' Bolt dump with MD5 108ffe4ba5c2c8c5e0459cb7f0cfac0e, and a no-BIOS 32K-to-48K expansion for my dump of SG-1000 The Castle with MD5 d047c10d6b27cf34ccb66340a089523a
C-So! (SG-1000) SG2GG.png (20.53 KB)
C_So! in mednafen in Game Gear windowed mode showing both palettes
C-So! (SG-1000) SG2GG.png
Pop Flamer (SG-1000) SG2GG.png (19.23 KB)
Pop Flamer in mednafen in Game Gear windowed mode showing both palettes
Pop Flamer (SG-1000) SG2GG.png
Sega Flipper (SG-1000) (40K) SG2GG.png (17.53 KB)
Sega Flipper in mednafen in Game Gear windowed mode showing both palettes
Sega Flipper (SG-1000) (40K) SG2GG.png
Sindbad Mystery (SG-1000) SG2GG.png (18.54 KB)
Sindbad Mystery in mednafen in Game Gear windowed mode showing both palettes
Sindbad Mystery (SG-1000) SG2GG.png
Hustle Chumy (SG-1000) SG2GG.png (18.16 KB)
Hustle Chumy in mednafen in Game Gear windowed mode showing both palettes
Hustle Chumy (SG-1000) SG2GG.png
Pacar (J) (SG-1000) (40K) SG2GG.png (13.38 KB)
Pacar in mednafen in Game Gear windowed mode showing both palettes
Pacar (J) (SG-1000) (40K) SG2GG.png
Rock N' Bolt (SG-1000) SG2GG.png (12.82 KB)
Rock N' Bolt in mednafen in Game Gear windowed mode showing both palettes
Rock N' Bolt (SG-1000) SG2GG.png
The Castle (SG-1000) SG2GG.png (12.73 KB)
The Castle in mednafen in Game Gear windowed mode showing both palettes
The Castle (SG-1000) SG2GG.png
Sindbad Mystery (SG-1000) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated
C_So! (J) (SG-1000) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated
Pop Flamer (SG-1000) [!] SG2GG.ips (545 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated
Sega Flipper (J) (SG-1000) (40K) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated
Pacar (J) (SG-1000) (40K) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated
Hustle Chumy (SG-1000) SG2GG.ips (545 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated
Rock N' Bolt (SG-1000) SG2GG.ips (537 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated
The Castle (SG-1000) SG2GG.ips (533 B)
Press "up" during start-up for SMS palette, "down" for CV-approximated, otherwise SG-approximated

  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Fri Jun 29, 2018 5:03 am
These patches fit in our hacks section - http://www.smspower.org/Hacks/Index - although they don't fit the current categories.

I've increased your attachment quota. It looks like you uploaded a bunch of large photos (2-3MB) which could be smaller. I guess it's hard to manage that these days, in the past we'd ask you to resize and recompress, these days we ought to have the server do that for you...
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Fri Jun 29, 2018 5:24 am
Last edited by bsittler on Sat Jul 14, 2018 3:10 pm; edited 1 time in total
Maxim wrote
These patches fit in our hacks section - http://www.smspower.org/Hacks/Index - although they don't fit the current categories.


Do you have a specific new category in mind? "SG-1000 to Game Gear" perhaps, or maybe "TMS9918 to Game Gear"? And how does one go about proposing/creating a new category there?

Maxim wrote
I've increased your attachment quota. It looks like you uploaded a bunch of large photos (2-3MB) which could be smaller. I guess it's hard to manage that these days, in the past we'd ask you to resize and recompress, these days we ought to have the server do that for you...


Thank you! I'll see whether I can trim those photos and reupload them

edit: photos are reduced, hopefully all of them and not below usable thresholds
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Fri Jun 29, 2018 5:36 am
The categories are just up to us, underneath it works by searching using page name suffixes. We could make the GG2SMS category into a system conversion category and add in SG2GG, or make a new category since there's rather a lot of GG2SMS patches out there. To add a hack involves making a wiki page based on a template, uploading a zipped IPS and at least one screenshot. It then gets listed on the main game page too.
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Tue Jul 03, 2018 7:55 pm
Do any emulators correctly emulate the TMS video modes as implemented by the Game Gear in GG-SMS mode? It seems mednafen emulates it correctly at least in GG mode (sadly MEKA does not), but mednafen has (at least AFAIK) no way to access GG-SMS mode as distinct from true SMS emulation — GG in GG-SMS VDP mode allows actually effective SMS-style palette setup in this mode, true SMS VDP does not.
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Mon Jul 09, 2018 10:20 am
Last edited by bsittler on Mon Dec 24, 2018 6:49 am; edited 25 times in total
Found several bugs in my previous versions, added a third palette (press down during start-up for one that's ColecoVision-inspired), added a "rainbow" animation so you can tell when to hold down the buttons, added more patches (for Pacar, a few of Bock's Gam*Boy dumps, and xbill), added VDP latch and VRAM re-inititalization (Pacar and Star Force needed that for correct rendering), and switched from hand-edited machine code to z80asm. The new version is attached to this message, but I intend to move it out of Forums (to Hacks) soon.

Some minimally-tested scripts are included with which you should be able to add patches for more games fairly easily, provided you have the required tools installed. At the moment the patches work by replacing the SP initialization instruction with a jump to the patcher. The asm source for the palette patcher should also be fairly easy to adapt for use in a cartridge adapter.

Feedback welcomed+appreciated!

edit: slightly fewer tool dependencies: still needs z80asm + flips + python + python2 + GNU make + gls or GNU ls + bash + cp + rm + zip

edit 2: patches earlier in this thread are updated to the latest version from this ZIP file (xbill and Gam*Boy patches are only in the ZIP file so far, though)

edit 3: flips dependency is gone and a python3 ips patch creator is included instead. it seems to give identical results.

edit 4: the patcher now copies itself into ram (0x0200 bytes starting at 0xc500) before doing anything interesting, and simulates a reset (sort of?) if it doesn't find the ROM contents it expects when it's done with VDP setup, so it's technically possible (NOTE: NOT AT ALL RECOMMENDED! THIS COULD PROBABLY DESTROY YOUR GAME GEAR AND/OR CARTRIDGE) to hot-swap cartridges during the 1-second rainbow animation and e.g. use a GG EverDrive to load the patcher (the SG2GG patched xbill should work well for this) but then very quickly swap in a cartridge connector converter (e.g. Gear Master + hand-built Mark Master Converter, maybe with a card catcher on top) with an SG-1000 game in it, and run the SG-1000 game with the correct palette; this same technique could probably also be used to build an on-device debugger and cartridge dumper (using the link port) for those cartridges not easily dumped by other means

edit 5: added apply_ips.py tool to complement create_ips.py and a "test" Makefile target to verify that the IPS patches from create_ips.py do in fact produce the expected patched files when applied to the original inputs; this uses the "cmp" command for checking and either "md5" or "md5sum" for diagnostic messages

edit 6: added patch for 48K Mojon Twins' Super Uwol
(MD5 36e35c0cf1596a906e02b102fc7e4f9d)

edit 7: now the rainbow animation can be paused by pressing the 1 button and control is not transferred to the game until all player 1 controls are released; together these mean it is fairly easy to pause long enough to hot-swap

edit 8: the patcher now has an equate to allow Sega mapper cartridge RAM to conditionally be mapped in from 0x8000 ... 0xbfff before jumping from RAM back to ROM. This is needed by The Castle, and works with GG EverDrive and the original Master EverDrive but not with the Master EverDrive X7. The Castle also works hot-swapped, of course, modulo the usual might-destroy-your-game-and-system caveat, but in that case it's not relying on the Sega mapper — it doesn't have a mapper, AFAIK, just some RAM + some ROM.

edit 9: added patches for more SG-1000 cartridges and MyCards

edit 10: added Terebi Oekaki, though of course it doesn't even boot (not sure whether that's a checksum routine, missing tablet hardware, or both)

edit 11: added one more Gam*Boy patch, for:
MD5 (Power Boggle Boggle (KR).sms) = a11f8c275c80fc397d11f776e4197966
(Ignore most of the emulators, it does work on actual hardware.)

edit 12: added a few more patches

edit 13: added patches for:

32K Champion Pro Wrestling (SG-1000) [!].sg
MD5 (Champion Pro Wrestling (SG-1000) [!].sg) = da9a4589303370e8a751c16b2cbfa628

16K Champion Soccer (SG-1000).sg
MD5 (Champion Soccer (SG-1000).sg) = 810064687e1614b6a7fb985b82806d31

32K Home Basic (Japan) (SC-3000).sc
MD5 (Home Basic (Japan) (SC-3000).sc) = cb724ebeaec9619281a906671c98a952

128K Loletta no Syouzou (J) [!].sg
MD5 (Loletta no Syouzou (J) [!].sg) = 8dcdd83e58be634a3735911a1af05bb3

edit 14: Added a couple more patches for Gam*Boy games; these patches are unfortunately rather large (BPS rather than IPS would fix that — I had to move a 16K block and use the Sega mapper to rearrange things to fit the patcher, and IPS does not efficiently represent that operation). Also generated .gg files (though not the .ips files, those are still based on the "Export" region .sms file) now use a Game Gear "International" region code, at least when there is room for a header.

edit 15: Added tiny utilities to compute several widely-used checksum flavors and included those values in the manifest; also added G2G Pad2 utility to use a second Game Gear with a Gear-to-Gear cable as a Player 2 controller (of course the second Game Gear screen doesn't show anything interesting, and the viewing angles didn't magically improve, but it's handy when you can't find a Master Link adapter)

SG2GG Patch Manifest
____________________

These patches convert some Sega SG-1000 and Samsung Gam*Boy games to
work on Sega's Game Gear by adding palette set-up code. In some cases
there is sufficient room for a BIOS header too, but for the rest you
will need to use a flash cartridge with BIOS-appeasement, an early
no-BIOS Game Gear, or a modified Game Gear with the BIOS switched
off. In any case it is recommended to use a Gear Master, Master Gear
Converter, or a cartridge that is wired to boot the Game Gear in SMS
emulation mode. Non-SMS mode has better color fidelity but makes most
of these games unplayable due to the small visible area.

Multiple color palettes are available, and can be chosen during the
full-screen "rainbow" start-up animation using the direction pad:

default: approximated original SG-1000 colors
UP: approximated SMS 1/SMS 2 SG-1000 colors
DOWN: approximated ColecoVision colors

[Bank Panic (SG-1000) [!] SG2GG.ips] *
Apply to 32K Bank Panic (SG-1000) [!].sg
sha256:58329089fde366c059676df4043b648b686d05a71960be27f98f38665f0d3bb2 Bank Panic (SG-1000) [!].sg
sha1:8e1dc4d79c5bc45fc6112969ea9a2c68b3c86666 Bank Panic (SG-1000) [!].sg
md5:47cd2d0bbcb879302f83f2f7058f49d4 Bank Panic (SG-1000) [!].sg
mekacrc:BDE475C4465199F6 Bank Panic (SG-1000) [!].sg
crc32:d8a87095 Bank Panic (SG-1000) [!].sg

[Black_OnyxEN SG2GG.ips]
Apply to 64K Black_OnyxEN.sg
sha256:6fe75fb0691da91ab154b82a9f382fee65a4a1ad2066e83e16b9bf881549ac15 Black_OnyxEN.sg
sha1:2e2baee16a34839770587d5fab890080bbcd9550 Black_OnyxEN.sg
md5:1da64bab6808f8b6df159c912d3b4072 Black_OnyxEN.sg
mekacrc:846FAF1BE4685D98 Black_OnyxEN.sg
crc32:626e30cc Black_OnyxEN.sg

[Black_Onyx_EnhancedEN SG2GG.ips]
Apply to 64K Black_Onyx_EnhancedEN.sg
sha256:adfd5e6b2caf7665bbcacea812eb92f1e2b1d6239cafc95658ae806fd3014c88 Black_Onyx_EnhancedEN.sg
sha1:5c46089a417add0f00a3cebf01dc59f53465d47b Black_Onyx_EnhancedEN.sg
md5:e2fca5d8609135caf5f4e2a88e38eabb Black_Onyx_EnhancedEN.sg
mekacrc:89C5ECA15C5E3B2E Black_Onyx_EnhancedEN.sg
crc32:3003d9bd Black_Onyx_EnhancedEN.sg

[Bobble Bobble [Clover] (KR) SG2GG.ips]
Apply to 32K Bobble Bobble [Clover] (KR).sms
sha256:fe6a4e3dee9c04704822d065083d153759bcebd1bb1df998974d7bd1108df168 Bobble Bobble [Clover] (KR).sms
sha1:564b1505fcbc009c2453bdc401181f2c2e28da5c Bobble Bobble [Clover] (KR).sms
md5:1a4bd585ddf2f26e2c048070f11306d1 Bobble Bobble [Clover] (KR).sms
mekacrc:18927BF53F0AF7A6 Bobble Bobble [Clover] (KR).sms
crc32:25eb9f80 Bobble Bobble [Clover] (KR).sms

[Bomb Jack (SG-1000) SG2GG.ips] *
Apply to 32K Bomb Jack (SG-1000).sg
sha256:76d25a2b3cf5513ab3a288b2b34846b04a1349aa26291785e78e324c860d2103 Bomb Jack (SG-1000).sg
sha1:7859b9ee5614c595cb57a832ef7a8f1ab473b45b Bomb Jack (SG-1000).sg
md5:0bf5b6959fc1b58d8e37f9647f47a0b3 Bomb Jack (SG-1000).sg
mekacrc:0A34F046A94E1382 Bomb Jack (SG-1000).sg
crc32:ea0f2691 Bomb Jack (SG-1000).sg

[C_So! (J) (SG-1000) SG2GG.ips]
Apply to 32K C_So! (J) (SG-1000).sg
sha256:431d1418a4cf4a5ad6ab3222c684d2ca48c439c6695eea5eced4c12a900f8669 C_So! (J) (SG-1000).sg
sha1:d45a230b3cbf2d2dcfe7b94691fc7f1a5d747625 C_So! (J) (SG-1000).sg
md5:d87daad7de33105d703b613052ccc2dd C_So! (J) (SG-1000).sg
mekacrc:F6C4074F8EB7307B C_So! (J) (SG-1000).sg
crc32:be7ed0eb C_So! (J) (SG-1000).sg

[Chack'n Pop (SG-1000) SG2GG.ips]
Apply to 32K Chack'n Pop (SG-1000).sg
sha256:e2d87d9063ea14b0f25a6fce1617aab9c8325f577d8e2a43436f81941d1e7fe0 Chack'n Pop (SG-1000).sg
sha1:08b5c1135f9678465ece6a886c948ce091637372 Chack'n Pop (SG-1000).sg
md5:286ba24b335a1600dfc611a0a9fe7875 Chack'n Pop (SG-1000).sg
mekacrc:F7646908C0727A88 Chack'n Pop (SG-1000).sg
crc32:d37bda49 Chack'n Pop (SG-1000).sg

[Chack'n Pop trans [v1.02] SG2GG.ips]
Apply to 32K Chack'n Pop trans [v1.02].sg
sha256:a806b082116359c63b2ed5491150b2d9c3ef0bf88d88c2960cd2d04256647571 Chack'n Pop trans [v1.02].sg
sha1:c81b116de04468cd605078c78dbd17124556c8a5 Chack'n Pop trans [v1.02].sg
md5:fb5c6e4d23b192cf36d87192289444e2 Chack'n Pop trans [v1.02].sg
mekacrc:DC5C9E02B16B44C8 Chack'n Pop trans [v1.02].sg
crc32:c106c923 Chack'n Pop trans [v1.02].sg

[Champion Billards (SG-1000) [!] SG2GG.ips]
Apply to 32K Champion Billards (SG-1000) [!].sg
sha256:22389e167fc871565e6a793a728dff761062ac19212928d26eac9aba505b313d Champion Billards (SG-1000) [!].sg
sha1:f517e6a6123643a5e7e5fff6b413139afa412d8e Champion Billards (SG-1000) [!].sg
md5:71c32b1cf1e85d217421068ac8ccc655 Champion Billards (SG-1000) [!].sg
mekacrc:60DC69943898F205 Champion Billards (SG-1000) [!].sg
crc32:62b21e31 Champion Billards (SG-1000) [!].sg

[Champion Boxing (SG-1000 Card) SG2GG.ips] *
Apply to 32K Champion Boxing (SG-1000 Card).sg
sha256:8f2f3e7fe8df459244c341dca9aaf5c37d2db180385ee6bf025c6ed82e7a1adc Champion Boxing (SG-1000 Card).sg
sha1:7a7ace132090f11bac4f4aec58bcbf6a2a1c6168 Champion Boxing (SG-1000 Card).sg
md5:7527098abb9df1db29ba9f495b06998a Champion Boxing (SG-1000 Card).sg
mekacrc:4123EF723DD41E0C Champion Boxing (SG-1000 Card).sg
crc32:f8b2ac1d Champion Boxing (SG-1000 Card).sg

[Champion Golf (J) (SG-1000) (V1.1) SG2GG.ips]
Apply to 32K Champion Golf (J) (SG-1000) (V1.1).sg
sha256:56ff351485f67df5a39b1cdf606895ad6b38c7b6f8ec9ee0779a6fc58bd77351 Champion Golf (J) (SG-1000) (V1.1).sg
sha1:f58f14581919c431ac85da72fd1a39bbe1da5e66 Champion Golf (J) (SG-1000) (V1.1).sg
md5:3c01bb2a4414989378c252f45a4e5050 Champion Golf (J) (SG-1000) (V1.1).sg
mekacrc:A11DC05FF929AD54 Champion Golf (J) (SG-1000) (V1.1).sg
crc32:5a904122 Champion Golf (J) (SG-1000) (V1.1).sg

[Champion Golf (SG-1000) SG2GG.ips]
Apply to 32K Champion Golf (SG-1000).sg
sha256:a45fbb4c4372b927a1dc66e25943ffd7b8057423752762c71c9641c486bced39 Champion Golf (SG-1000).sg
sha1:05deb000f24b7d8625c6e9332dcc91416ed3258f Champion Golf (SG-1000).sg
md5:1d87490269964239b64244fcabd18fe1 Champion Golf (SG-1000).sg
mekacrc:522DCE76FD2DC053 Champion Golf (SG-1000).sg
crc32:868419b5 Champion Golf (SG-1000).sg

[Champion Ice Hockey (SG-1000) SG2GG.ips] *
Apply to 32K Champion Ice Hockey (SG-1000).sg
sha256:cf2b1b3741771e9525cbb70c2dbb2dd9f3a91d5f8b5c78936069cef79c9078b8 Champion Ice Hockey (SG-1000).sg
sha1:ff6440fc7e5c5faa0b9868d5cb5110d1d8635284 Champion Ice Hockey (SG-1000).sg
md5:b3af58c60e62bb85522ddc29096cef60 Champion Ice Hockey (SG-1000).sg
mekacrc:7D6DE53955B78D5F Champion Ice Hockey (SG-1000).sg
crc32:bdc05652 Champion Ice Hockey (SG-1000).sg

[Champion Kendou (SG-1000) SG2GG.ips] *
Apply to 32K Champion Kendou (SG-1000).sg
sha256:923cbc49a6aa428eb22b00885480126f06500dd68ec455a987a980290a02df47 Champion Kendou (SG-1000).sg
sha1:8565fc398d0206100da785d10e008f7f6a3c225e Champion Kendou (SG-1000).sg
md5:ed6e4e8e081b56be488f57abcb51a7e5 Champion Kendou (SG-1000).sg
mekacrc:070357A3254C1774 Champion Kendou (SG-1000).sg
crc32:10cdebce Champion Kendou (SG-1000).sg

[Champion Pro Wrestling (SG-1000) [!] SG2GG.ips] *
Apply to 32K Champion Pro Wrestling (SG-1000) [!].sg
sha256:2967e12ea915dd44a5a23fe96097b83495de20bfde6969664db8fcb27898b1bd Champion Pro Wrestling (SG-1000) [!].sg
sha1:3bdb1e9d8b1a04d8fcc242c47be790c427a75403 Champion Pro Wrestling (SG-1000) [!].sg
md5:da9a4589303370e8a751c16b2cbfa628 Champion Pro Wrestling (SG-1000) [!].sg
mekacrc:A765C6DF45AA223E Champion Pro Wrestling (SG-1000) [!].sg
crc32:372fe6bc Champion Pro Wrestling (SG-1000) [!].sg

[Champion Soccer (SG-1000) SG2GG.ips] *
Apply to 16K Champion Soccer (SG-1000).sg
sha256:2ecae3457009384bccfdd6ffb2de1c85f0114289b0dd090730d5981c382ae6b7 Champion Soccer (SG-1000).sg
sha1:0b3cf82f020ac9249ea52766ffbad41515d0b8b4 Champion Soccer (SG-1000).sg
md5:810064687e1614b6a7fb985b82806d31 Champion Soccer (SG-1000).sg
mekacrc:157515CDB5D2C746 Champion Soccer (SG-1000).sg
crc32:6f39719e Champion Soccer (SG-1000).sg

[Championship Loderunner (SG-1000) SG2GG.ips]
Apply to 32K Championship Loderunner (SG-1000).sg
sha256:f492190a369a3fb5538c84cf4487b73ab6c1696990db42b0134a7c8a6638d6ae Championship Loderunner (SG-1000).sg
sha1:a0dad095489da2bdf8ec03f1acc83f809db2371f Championship Loderunner (SG-1000).sg
md5:f49d9ea611ccb9289994774406f20d06 Championship Loderunner (SG-1000).sg
mekacrc:FF5544CA075675CC Championship Loderunner (SG-1000).sg
crc32:11db4b1d Championship Loderunner (SG-1000).sg

[Choplifter (SG-1000) [!] SG2GG.ips]
Apply to 32K Choplifter (SG-1000) [!].sg
sha256:dc91150015413e7205e24e5e854abec900ac216000ae76e571d0e58a8f512957 Choplifter (SG-1000) [!].sg
sha1:e0828517fdc9a5537fda39dbc49942494eb3196d Choplifter (SG-1000) [!].sg
md5:ee557c7811f03c44965a56b80801a3b9 Choplifter (SG-1000) [!].sg
mekacrc:308D125E31D34B84 Choplifter (SG-1000) [!].sg
crc32:732b7180 Choplifter (SG-1000) [!].sg

[Congo Bongo (SG-1000) [a1] SG2GG.ips] *
Apply to 32K Congo Bongo (SG-1000) [a1].sg
sha256:3ced2c0d210ce999b5b0913f398bb86678c66257e260135921af495c712906f5 Congo Bongo (SG-1000) [a1].sg
sha1:01b65ecfb5307bff0d8222f266b9d641b6a203db Congo Bongo (SG-1000) [a1].sg
md5:b9ae730672ade71c6fce5527c2b1b42e Congo Bongo (SG-1000) [a1].sg
mekacrc:5BF7BDD18D354618 Congo Bongo (SG-1000) [a1].sg
crc32:b09e2e6d Congo Bongo (SG-1000) [a1].sg

[Dragon Wang (SG-1000) (Ver-A) SG2GG.ips]
Apply to 32K Dragon Wang (SG-1000) (Ver-A).sg
sha256:4cd1a427fc6c77cecb6415983ecae5e9a2b7efba3d43233c8aace84212f9e87c Dragon Wang (SG-1000) (Ver-A).sg
sha1:43807c9f634b8cf85aa5c3b2459885eedbb99955 Dragon Wang (SG-1000) (Ver-A).sg
md5:64d3cc8117292f6d5af8e1aad95bcb90 Dragon Wang (SG-1000) (Ver-A).sg
mekacrc:C2A4F2DAB27E1D81 Dragon Wang (SG-1000) (Ver-A).sg
crc32:99c3de21 Dragon Wang (SG-1000) (Ver-A).sg

[Dragon Wang (SG-1000) (Ver-B) SG2GG.ips]
Apply to 32K Dragon Wang (SG-1000) (Ver-B).sg
sha256:f9017dea12d2d34f5c8b7681ab84dbefb72db19ba121e35e9d85bec1d4aae039 Dragon Wang (SG-1000) (Ver-B).sg
sha1:78f26d0a1d4f08a6378700b81ab38fc7c0f6bdc0 Dragon Wang (SG-1000) (Ver-B).sg
md5:0528eed7e7ae46ec8298098f1a22d18f Dragon Wang (SG-1000) (Ver-B).sg
mekacrc:C299FED8BA801D78 Dragon Wang (SG-1000) (Ver-B).sg
crc32:60f30138 Dragon Wang (SG-1000) (Ver-B).sg

[Drol (SG-1000) SG2GG.ips]
Apply to 32K Drol (SG-1000).sg
sha256:a124c812a05b458c405a655506c73e872e6db620c850dd01fb7f65908549aa79 Drol (SG-1000).sg
sha1:607b2b9a946eaaebb938800bd3b1df7d9342388c Drol (SG-1000).sg
md5:8eb2ab42d2bc3f3568e85cba2b46a251 Drol (SG-1000).sg
mekacrc:546C1EFBFD7F5754 Drol (SG-1000).sg
crc32:288940cb Drol (SG-1000).sg

[Elevator Action (SG-1000) [!] SG2GG.ips] *
Apply to 32K Elevator Action (SG-1000) [!].sg
sha256:f4311793e7401e5669c57804ab3096ce3e4a8e5f4b9a071e2d08421fd5ed01d9 Elevator Action (SG-1000) [!].sg
sha1:f72b3e44309e7c2e447c46928ce795453102f717 Elevator Action (SG-1000) [!].sg
md5:23c751fe6bb8bd4f8c0cd9b0d39adecd Elevator Action (SG-1000) [!].sg
mekacrc:0DE0E10D161A876E Elevator Action (SG-1000) [!].sg
crc32:5af8f69d Elevator Action (SG-1000) [!].sg

[Flicky (SG-1000) SG2GG.ips] *
Apply to 32K Flicky (SG-1000).sg
sha256:2d29388735f9d70349f872e49597c7bc454596fc85610529c4b581ce1f5d50f8 Flicky (SG-1000).sg
sha1:39a91b5ad6b139ca5d8ac60b78520210e84944bd Flicky (SG-1000).sg
md5:b52e308e1c0005bc1dba2ba900ad44d0 Flicky (SG-1000).sg
mekacrc:E3234655B4D74292 Flicky (SG-1000).sg
crc32:bd24d27b Flicky (SG-1000).sg

[Galaxian (KR) SG2GG.ips]
Apply to 32K Galaxian (KR).sms
sha256:0c2bdf5cfaca09f0c007c20c3458b70bef9b6c74d4b1ced34915aa1564c2d0ce Galaxian (KR).sms
sha1:eed656762c78b13f715a2b3c7fd4e8d2565a6684 Galaxian (KR).sms
md5:3879d2c954584821190271f3c0743cd8 Galaxian (KR).sms
mekacrc:643F1CDBAB470272 Galaxian (KR).sms
crc32:577ec227 Galaxian (KR).sms

[Girl's Garden (SG-1000) SG2GG.ips]
Apply to 32K Girl's Garden (SG-1000).sg
sha256:0cecbdfe4424f185770fcf88e1f3a8d74df77b740e42e16aa020cd775b4eca24 Girl's Garden (SG-1000).sg
sha1:0e08786587fb76909b3f9806ba1f5d57ea17728c Girl's Garden (SG-1000).sg
md5:ac95c0655360f667e3ad705e2eb7367a Girl's Garden (SG-1000).sg
mekacrc:38DCD62C5EFD0C83 Girl's Garden (SG-1000).sg
crc32:1898f274 Girl's Garden (SG-1000).sg

[Golgo 13 (SG-1000) SG2GG.ips] *
Apply to 32K Golgo 13 (SG-1000).sg
sha256:7affd7a309995b219b4abe7b8001de67cab9d5e0719e08625b57a7bfed9688c6 Golgo 13 (SG-1000).sg
sha1:bf27536c6ae71b333da8b362479da0a838d0715e Golgo 13 (SG-1000).sg
md5:cb25a12e86c729f6a51ba3dea91c1547 Golgo 13 (SG-1000).sg
mekacrc:1B5A61BF9994C579 Golgo 13 (SG-1000).sg
crc32:0d159ed0 Golgo 13 (SG-1000).sg

[Gulkave (SG-1000) [!] SG2GG.ips] *
Apply to 32K Gulkave (SG-1000) [!].sg
sha256:84920f6579b70ca99096a0b169a2f3995db652da33ee8c1610fa8828b1f3893a Gulkave (SG-1000) [!].sg
sha1:3fb197d16b25bc128a2866c4b78b0535ab8dc412 Gulkave (SG-1000) [!].sg
md5:43c23a134aec3ab424405780ff729d54 Gulkave (SG-1000) [!].sg
mekacrc:CA8C9D9A871F7D50 Gulkave (SG-1000) [!].sg
crc32:15a754a3 Gulkave (SG-1000) [!].sg

[Guzzler (Japan) (Othello Multivision) SG2GG.ips] *
Apply to 8.0K Guzzler (Japan) (Othello Multivision).sg
sha256:d25ddb8a185d18f51d10198f29d88fef860d1e860b801bffa91a6706ce1b5605 Guzzler (Japan) (Othello Multivision).sg
sha1:d42b2c5f1da4e0fbd29fcea91bfc092ae46da4b8 Guzzler (Japan) (Othello Multivision).sg
md5:f3f1042745e96e29bfdf920d031b8cd5 Guzzler (Japan) (Othello Multivision).sg
mekacrc:33335D5204BB9D8F Guzzler (Japan) (Othello Multivision).sg
crc32:61fa9ea0 Guzzler (Japan) (Othello Multivision).sg

[H.E.R.O. (SG-1000) SG2GG.ips] *
Apply to 32K H.E.R.O. (SG-1000).sg
sha256:f1fcee3bad83906c1572c59fc45d28975065f23a2f7783949519160b861878ca H.E.R.O. (SG-1000).sg
sha1:19acb69b7b64da5083349d8bc40a47beacc88c41 H.E.R.O. (SG-1000).sg
md5:d10f38c614113cb34bbf4a19b487e1fb H.E.R.O. (SG-1000).sg
mekacrc:9E321231AEEF54FC H.E.R.O. (SG-1000).sg
crc32:4587de6e H.E.R.O. (SG-1000).sg

[Hang-On 2 (SG-1000) SG2GG.ips] *
Apply to 32K Hang-On 2 (SG-1000).sg
sha256:b9dc16a7c01ef7939554b6fea723a3483146bdba879341a3b3276514633b0c79 Hang-On 2 (SG-1000).sg
sha1:e636e889d4e81c024ee7dae8943c2b8d9d4a5414 Hang-On 2 (SG-1000).sg
md5:314c865decbe6f578d9bfa23f27a08e6 Hang-On 2 (SG-1000).sg
mekacrc:0EF416397D1321FE Hang-On 2 (SG-1000).sg
crc32:9be3c6bd Hang-On 2 (SG-1000).sg

[Home Basic (Japan) (SC-3000) SG2GG.ips]
Apply to 32K Home Basic (Japan) (SC-3000).sc
sha256:39958a177aa16af14dd34f665ccec086516f2adda75bc427a52773a68c74ab1f Home Basic (Japan) (SC-3000).sc
sha1:f1e1e7e9687cf4f9f498779a44134c2d70bb8d4b Home Basic (Japan) (SC-3000).sc
md5:cb724ebeaec9619281a906671c98a952 Home Basic (Japan) (SC-3000).sc
mekacrc:0C8784F17E89F5FC Home Basic (Japan) (SC-3000).sc
crc32:78a37cbc Home Basic (Japan) (SC-3000).sc

[Hong Kil Dong (KR) SG2GG.ips] *
Apply to 48K Hong Kil Dong (KR).sms
sha256:b190090854b109ce69e1255dd189e8e985a3339bc083b102c4af73a2d20ca6d7 Hong Kil Dong (KR).sms
sha1:f44299070c8f4d3c0a4b2f671d105c811ae7db99 Hong Kil Dong (KR).sms
md5:372b7edf08f3bc235ef5351c116e5c9b Hong Kil Dong (KR).sms
mekacrc:C0FDE9D208640814 Hong Kil Dong (KR).sms
crc32:8040b2fa Hong Kil Dong (KR).sms

[Hustle Chummy (SG-1000) [!] SG2GG.ips] *
Apply to 16K Hustle Chummy (SG-1000) [!].sg
sha256:7861cd42d70b3ebdb558c1142dd17b0339a3aebe4cf8a18fc50d334ae2956b2f Hustle Chummy (SG-1000) [!].sg
sha1:1f1bad94b2d869c10a2373ca40d4076d227cc302 Hustle Chummy (SG-1000) [!].sg
md5:8be690d357a99abd26ebb5378e9c0153 Hustle Chummy (SG-1000) [!].sg
mekacrc:6F16109C70F21E4F Hustle Chummy (SG-1000) [!].sg
crc32:a627d440 Hustle Chummy (SG-1000) [!].sg

[Loderunner (SG-1000) [!] SG2GG.ips] *
Apply to 32K Loderunner (SG-1000) [!].sg
sha256:a6295506e0d09d449d87f6d8243956d601e971b810208ff27e56b38cda65b8c5 Loderunner (SG-1000) [!].sg
sha1:f14f216edfda7dfd113f5cb32375a27be8a6409d Loderunner (SG-1000) [!].sg
md5:4b4f02eb3cf7d5f9dcd1311d72e6d742 Loderunner (SG-1000) [!].sg
mekacrc:7C7748E59B2DCE4A Loderunner (SG-1000) [!].sg
crc32:00ed3970 Loderunner (SG-1000) [!].sg

[Loletta no Syouzou (J) [!] SG2GG.ips] *
Apply to 128K Loletta no Syouzou (J) [!].sg
sha256:5c8c32afba787f0983082b475eafc382cd3eb33c582704a0dda96d15861c4ebd Loletta no Syouzou (J) [!].sg
sha1:0ddd7448f5bd437d0d33b85a44f2bcc2bf2ea05e Loletta no Syouzou (J) [!].sg
md5:8dcdd83e58be634a3735911a1af05bb3 Loletta no Syouzou (J) [!].sg
mekacrc:10BBC3D7919A561A Loletta no Syouzou (J) [!].sg
crc32:323f357f Loletta no Syouzou (J) [!].sg

[Monaco GP (J) (SG-1000) (V1.1) (32K) SG2GG.ips] *
Apply to 32K Monaco GP (J) (SG-1000) (V1.1) (32K).sg
sha256:3e83cb0624eaceefbf7e66c8002cde03f8bc421d987dc817b743da2c3812e17b Monaco GP (J) (SG-1000) (V1.1) (32K).sg
sha1:4ca8182b8f7c798d7222295978e2556ff115b848 Monaco GP (J) (SG-1000) (V1.1) (32K).sg
md5:74121fd6f1024ee3d3f5d1db29956d7d Monaco GP (J) (SG-1000) (V1.1) (32K).sg
mekacrc:E7A6DEA71E6978EF Monaco GP (J) (SG-1000) (V1.1) (32K).sg
crc32:da2d57f3 Monaco GP (J) (SG-1000) (V1.1) (32K).sg

[N-Sub (JTE) (SG-1000) SG2GG.ips] *
Apply to 16K N-Sub (JTE) (SG-1000).sg
sha256:1cda40983c37d5e389557409b8af54d5aa5d69dcba5fb441bb9b3740e6c6b7f4 N-Sub (JTE) (SG-1000).sg
sha1:2640e267441bf25463a19273c46f3edb5e459496 N-Sub (JTE) (SG-1000).sg
md5:56c559d0d82a3e6fb2e87230d39f32f4 N-Sub (JTE) (SG-1000).sg
mekacrc:5AACF5554AD6DCB4 N-Sub (JTE) (SG-1000).sg
crc32:652bbd1e N-Sub (JTE) (SG-1000).sg

[New Boggle Boggle 2 (KR) SG2GG.ips] *
Apply to 32K New Boggle Boggle 2 (KR).sms
sha256:9e0b144f67807d6a8c6f2369a191fccde821338d690df724b4ed888887e37e68 New Boggle Boggle 2 (KR).sms
sha1:3149e453387cf1a4e0eaf4c8da4fb3aa015b3054 New Boggle Boggle 2 (KR).sms
md5:a12d3371030dc8aa0d01d8b21eae7b53 New Boggle Boggle 2 (KR).sms
mekacrc:BD4A36BDBE1C7FAD New Boggle Boggle 2 (KR).sms
crc32:dbbf4dd1 New Boggle Boggle 2 (KR).sms

[Ninja Princess (SG-1000) SG2GG.ips]
Apply to 32K Ninja Princess (SG-1000).sg
sha256:9b1b2e5b08c374f882cfd6de7517856fdcffad6d72a31f8aca14fd9987a351d3 Ninja Princess (SG-1000).sg
sha1:f142bb823cebc4e31488e7a9a94644af24186d99 Ninja Princess (SG-1000).sg
md5:28d83150c298bcdae6aec51cc2c6975a Ninja Princess (SG-1000).sg
mekacrc:0D51374D3F55E6A4 Ninja Princess (SG-1000).sg
crc32:3b912408 Ninja Princess (SG-1000).sg

[Ninja_Princess_[T+Eng1.0_Goldenband] SG2GG.ips]
Apply to 32K Ninja_Princess_[T+Eng1.0_Goldenband].sg
sha256:72e647908cfcf5a3aa6c202ee07231874cd0c5e5d63ce2cf1d9180944633c171 Ninja_Princess_[T+Eng1.0_Goldenband].sg
sha1:0473f6ca89948f08f504c634e00cf2cf72f94fc6 Ninja_Princess_[T+Eng1.0_Goldenband].sg
md5:88f09e8525267c7c5cb18a6011fe1598 Ninja_Princess_[T+Eng1.0_Goldenband].sg
mekacrc:E2C9030F2915BC49 Ninja_Princess_[T+Eng1.0_Goldenband].sg
crc32:bdb6cf0e Ninja_Princess_[T+Eng1.0_Goldenband].sg

[NyanCat-SG-0.1 SG2GG.ips] *
Apply to 24K NyanCat-SG-0.1.sg
sha256:fc304402224328fbc6f1f1c750ccf28c73cbb0aadaeb75f92e7b66fa3e2b0a7b NyanCat-SG-0.1.sg
sha1:0d93ffb910a1387d1674a6c2c15b0c5a7c7bba2c NyanCat-SG-0.1.sg
md5:1ab3aeb4cf6e61685e9104ead4f2c89b NyanCat-SG-0.1.sg
mekacrc:510A85A7EE3E2B22 NyanCat-SG-0.1.sg
crc32:51271e54 NyanCat-SG-0.1.sg

[Orguss (SG-1000) (Alt) SG2GG.ips] *
Apply to 32K Orguss (SG-1000) (Alt).sg
sha256:9b3ac2dcf404b5fb00b910ff8bf56163c712fac031d919f69c5772fa71137225 Orguss (SG-1000) (Alt).sg
sha1:0ec10d666ff225911299454a39aedf9e3345a517 Orguss (SG-1000) (Alt).sg
md5:49d4ef0e2ff7d9c6793053da2180f1da Orguss (SG-1000) (Alt).sg
mekacrc:466EC65A2B946EFF Orguss (SG-1000) (Alt).sg
crc32:456fb8f9 Orguss (SG-1000) (Alt).sg

[Othello (J) (SG-1000) SG2GG.ips]
Apply to 32K Othello (J) (SG-1000).sg
sha256:ae20568a13010c3773928e5073fc25a52006ae0242263c7a31118a4d56fad8da Othello (J) (SG-1000).sg
sha1:d0cd594ddb321f707ddba8a044fa3e9b906e720a Othello (J) (SG-1000).sg
md5:3f429704761d34d7793e7123a183d7f6 Othello (J) (SG-1000).sg
mekacrc:FC9BB64B14BEE9AD Othello (J) (SG-1000).sg
crc32:af4f14bc Othello (J) (SG-1000).sg

[Pacar (J) (SG-1000) (40K) SG2GG.ips]
Apply to 40K Pacar (J) (SG-1000) (40K).sg
sha256:45eac8d1b9f80e5f3e55483981a5b45247f3ff89128fb74556f54f362325ce87 Pacar (J) (SG-1000) (40K).sg
sha1:5e89857a374cbf3efa32efb62d26973d46a856ae Pacar (J) (SG-1000) (40K).sg
md5:c672bc2409443cc5bca35abd041d11e0 Pacar (J) (SG-1000) (40K).sg
mekacrc:EB44793290BD29B0 Pacar (J) (SG-1000) (40K).sg
crc32:19949375 Pacar (J) (SG-1000) (40K).sg

[Penguin Land (SG-1000) SG2GG.ips] *
Apply to 32K Penguin Land (SG-1000).sg
sha256:1b199be2e749ea5e16da476386c58d779e2a704427e012d679169f87cdc0bc9c Penguin Land (SG-1000).sg
sha1:f49c43b1f9a0b19ef5f30d9bf2b222af7aeb9fbf Penguin Land (SG-1000).sg
md5:79f15598828e697e75c65130262d8d94 Penguin Land (SG-1000).sg
mekacrc:211D1B015A77D203 Penguin Land (SG-1000).sg
crc32:346556b9 Penguin Land (SG-1000).sg

[Pitfall II (SG-1000) [!] SG2GG.ips]
Apply to 32K Pitfall II (SG-1000) [!].sg
sha256:8c52b5d4f337495f7a34d8c5b8c17e8cee0c35717bfaaa9e5a5da6644bf03098 Pitfall II (SG-1000) [!].sg
sha1:356db6edcd337a06063957bd8cb27edeb7160f6c Pitfall II (SG-1000) [!].sg
md5:c34260b61c6a45bbdd074df3f3e72c46 Pitfall II (SG-1000) [!].sg
mekacrc:985694ED9B8C4B1F Pitfall II (SG-1000) [!].sg
crc32:37fca2eb Pitfall II (SG-1000) [!].sg

[Pop Flamer (SG-1000) [!] SG2GG.ips] *
Apply to 16K Pop Flamer (SG-1000) [!].sg
sha256:608778bf38fb5b0b88cf7c19b0a6e3386b4d162b7a8d6dd34bc944d98fc38a0a Pop Flamer (SG-1000) [!].sg
sha1:84b59a9f855ef5e953c43495d7a15dd78386d0a8 Pop Flamer (SG-1000) [!].sg
md5:7f841aa0c225662e26ca7a8df20b2eb8 Pop Flamer (SG-1000) [!].sg
mekacrc:0E3BEA9E54820158 Pop Flamer (SG-1000) [!].sg
crc32:db6404ba Pop Flamer (SG-1000) [!].sg

[Power Boggle Boggle (KR) SG2GG.ips]
Apply to 32K Power Boggle Boggle (KR).sms
sha256:1ec2649067ac12a952fc12b86d1e4474c31aefaa7c2c2252c246cc7cdb3ceb05 Power Boggle Boggle (KR).sms
sha1:d7e67d15ccc12e9bf40611dc91a080a99716ca6e Power Boggle Boggle (KR).sms
md5:a11f8c275c80fc397d11f776e4197966 Power Boggle Boggle (KR).sms
mekacrc:DF29E600439575C5 Power Boggle Boggle (KR).sms
crc32:6d309ac5 Power Boggle Boggle (KR).sms

[Q-bert (Japan) (Othello Multivision) SG2GG.ips] *
Apply to 8.0K Q-bert (Japan) (Othello Multivision).sg
sha256:65174d0bdd1325418d2a2cb8d27cf89bf90b61cccab64f1f511a2ced5e8c0cfb Q-bert (Japan) (Othello Multivision).sg
sha1:ae23fce5dbbc1536275d57ca65d2aa9170d46ea4 Q-bert (Japan) (Othello Multivision).sg
md5:a768a8ae921126300e98f9d918a4a0c9 Q-bert (Japan) (Othello Multivision).sg
mekacrc:5B068CAB72E35CB7 Q-bert (Japan) (Othello Multivision).sg
crc32:77db4704 Q-bert (Japan) (Othello Multivision).sg

[Rock N' Bolt (SG-1000) [!] SG2GG.ips] *
Apply to 32K Rock N' Bolt (SG-1000) [!].sg
sha256:f09a2e0fe850fd80e88834015785aed5e88736f7970cf6b89d1a72a9ae866d6e Rock N' Bolt (SG-1000) [!].sg
sha1:d5e8e7ca7623521d4291ae5ab2740816fc674389 Rock N' Bolt (SG-1000) [!].sg
md5:108ffe4ba5c2c8c5e0459cb7f0cfac0e Rock N' Bolt (SG-1000) [!].sg
mekacrc:44B2C607937091A9 Rock N' Bolt (SG-1000) [!].sg
crc32:0ffdd03d Rock N' Bolt (SG-1000) [!].sg

[Sega BASIC Level 3 V1 (SC-3000) SG2GG.ips]
Apply to 32K Sega BASIC Level 3 V1 (SC-3000).sc
sha256:5e6eed91bf0006fea60c0993d8270150196cd26aa0e5e73eb5a0455560eeb2c4 Sega BASIC Level 3 V1 (SC-3000).sc
sha1:a43aef367857a681decea52377c2e7a992c2ac68 Sega BASIC Level 3 V1 (SC-3000).sc
md5:fda6619ba96bf00b849192f5e7460622 Sega BASIC Level 3 V1 (SC-3000).sc
mekacrc:242CE123F9157D21 Sega BASIC Level 3 V1 (SC-3000).sc
crc32:5d9f11ca Sega BASIC Level 3 V1 (SC-3000).sc

[Sega Flipper (J) (SG-1000) (40K) SG2GG.ips]
Apply to 40K Sega Flipper (J) (SG-1000) (40K).sg
sha256:721e69fdd176f437bf091f3e57e715cdeda6c0a8288fa051a091be1dad06c57a Sega Flipper (J) (SG-1000) (40K).sg
sha1:d713dcbd79a3db8f1ef2cfb27da31a286fff16d1 Sega Flipper (J) (SG-1000) (40K).sg
md5:49c7c14879a437e60730b62a7550cdf6 Sega Flipper (J) (SG-1000) (40K).sg
mekacrc:62DDADADD3FD1C7B Sega Flipper (J) (SG-1000) (40K).sg
crc32:fd76ad99 Sega Flipper (J) (SG-1000) (40K).sg

[Sega Galaga (J) (SG-1000) (40K) SG2GG.ips] *
Apply to 40K Sega Galaga (J) (SG-1000) (40K).sg
sha256:9d801873b19721ecc8aae6b1722758f226808a78481b1e3740c5a8e1d098ebff Sega Galaga (J) (SG-1000) (40K).sg
sha1:9b093878f92ce8b918beaa44dcc8a41282f9f267 Sega Galaga (J) (SG-1000) (40K).sg
md5:7f7e1d564448fdce96d239ad9ebf37d6 Sega Galaga (J) (SG-1000) (40K).sg
mekacrc:6B2F612B648C8565 Sega Galaga (J) (SG-1000) (40K).sg
crc32:31283003 Sega Galaga (J) (SG-1000) (40K).sg

[Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed SG2GG.ips] *
Apply to 32K Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed.sms
sha256:eef18dd1138f95ea4fa8324e55d2834a41e82c288e37a82d72b57ca8f81b6b95 Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed.sms
sha1:14f447fe7c4be2c0919787b6a037aa9eba4bb81e Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed.sms
md5:d632b7578f2cf8fc587ec6ed410b052e Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed.sms
mekacrc:3330E923FB177B04 Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed.sms
crc32:13ebce6a Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed.sms

[Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed_24K SG2GG.ips] *
Apply to 32K Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed_24K.sms
sha256:1cfe7a2fb3379993a61ec3fd11e7e5888e1f52d8e2df06943bb8406c4966847b Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed_24K.sms
sha1:c5d9476b6b3ce889b5196b0583e3a8c7359df592 Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed_24K.sms
md5:462a8dc91d04556b04b23289bcac7977 Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed_24K.sms
mekacrc:3231E923FB177A05 Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed_24K.sms
crc32:b9751559 Sega_BASIC_Level_3_V1_(SC-3000)_export_header_checksum_removed_24K.sms

[Sindbad Mystery (SG-1000) SG2GG.ips] *
Apply to 32K Sindbad Mystery (SG-1000).sg
sha256:859c594ba59df8c22abe3e4456a5ca18dc464847012796a0d8a34a36f7a4e8c0 Sindbad Mystery (SG-1000).sg
sha1:90bb8b8337866339f32b3fd48b4d25d78d682b55 Sindbad Mystery (SG-1000).sg
md5:7b0f2be3588337df59959ababbefe505 Sindbad Mystery (SG-1000).sg
mekacrc:39B539F98CD283FF Sindbad Mystery (SG-1000).sg
crc32:01932df9 Sindbad Mystery (SG-1000).sg

[Sky Fighter (KR) SG2GG.ips]
Apply to 32K Sky Fighter (KR).sms
sha256:3634993b1df9d1571cfcfc0f01a907feaaaa20819e575ac6294c45c7ea6256d1 Sky Fighter (KR).sms
sha1:afdd09097dce40c0af5ec01de0dfdc08482e9e0e Sky Fighter (KR).sms
md5:5c6d01e7534726e02f27664c44c491d6 Sky Fighter (KR).sms
mekacrc:0A9445E774AD31E4 Sky Fighter (KR).sms
crc32:77ba2667 Sky Fighter (KR).sms

[Sky Jaguar [Clover] (KR) SG2GG.ips]
Apply to 32K Sky Jaguar [Clover] (KR).sms
sha256:05462f928c1b39716dea4b230e2ed36b923e9fff47b81fa47c7afdce7cb57e49 Sky Jaguar [Clover] (KR).sms
sha1:7eb9e296b674c4cda935e7c5b58eb3dad3aa322f Sky Jaguar [Clover] (KR).sms
md5:19a825bd9210ce0ff84cb883c750e7fc Sky Jaguar [Clover] (KR).sms
mekacrc:9DEBAC77C07066BF Sky Jaguar [Clover] (KR).sms
crc32:e3f260ca Sky Jaguar [Clover] (KR).sms

[Soukoban (SG-1000) [!] SG2GG.ips] *
Apply to 32K Soukoban (SG-1000) [!].sg
sha256:d7ba7e2fdf58fcde5608dc59ef93e0449a849a0ca36c4f579999442da2b8463a Soukoban (SG-1000) [!].sg
sha1:94e79b4a8b4a5fb77c837ea0a1e28bc5993d36af Soukoban (SG-1000) [!].sg
md5:6cae3b6286041e742020aeb3cd2bdf52 Soukoban (SG-1000) [!].sg
mekacrc:37CC1C413181F4FA Soukoban (SG-1000) [!].sg
crc32:922c5468 Soukoban (SG-1000) [!].sg

[Space Invaders (SG-1000) SG2GG.ips] *
Apply to 16K Space Invaders (SG-1000).sg
sha256:83822a6db13b8abd9cb51bcb9853f97b8b0efe3d31c2456bad70114a7a1d126c Space Invaders (SG-1000).sg
sha1:a4e4b0c2967e39c4931fba8bc87428f296e461c5 Space Invaders (SG-1000).sg
md5:87a97b049ec01b1803b93f06d0407586 Space Invaders (SG-1000).sg
mekacrc:832D295F5C58E72D Space Invaders (SG-1000).sg
crc32:6ad5cb3d Space Invaders (SG-1000).sg

[Space Mountain (SG-1000) SG2GG.ips] *
Apply to 8.0K Space Mountain (SG-1000).sg
sha256:bd3ed2b6123ef6642337b20e5c30e785c06c7748389e3c162ef5fe7dfe5f2337 Space Mountain (SG-1000).sg
sha1:08d9360d6e92b081d99b7629f91d4fe482383a18 Space Mountain (SG-1000).sg
md5:2321b2a684b83d58489fda2df66ab6fb Space Mountain (SG-1000).sg
mekacrc:DD4EE8250BFB259D Space Mountain (SG-1000).sg
crc32:bbd87d8f Space Mountain (SG-1000).sg

[Star Force (SG-1000) [!] SG2GG.ips]
Apply to 32K Star Force (SG-1000) [!].sg
sha256:0b2899677fc532db3a7b25c71bdbae13bdfdf8591a95e74963bef72fd8018ab9 Star Force (SG-1000) [!].sg
sha1:d38875cb08de0ea892e5ef80f93987bbc445ef8f Star Force (SG-1000) [!].sg
md5:2cbd1f9f4927f9618390340f56f116a6 Star Force (SG-1000) [!].sg
mekacrc:BE0870060DA1B462 Star Force (SG-1000) [!].sg
crc32:b846b52a Star Force (SG-1000) [!].sg

[Star Jacker (SG-1000) (V1.1) [!] SG2GG.ips] *
Apply to 32K Star Jacker (SG-1000) (V1.1) [!].sg
sha256:eac17f48f6fa4fe487932877a2eed50171f8e99303064a48bd126a6702a31024 Star Jacker (SG-1000) (V1.1) [!].sg
sha1:be078bfa5340f2e1d307b85d3648192972529e46 Star Jacker (SG-1000) (V1.1) [!].sg
md5:658ede490eae6af2b0f61dd136761d95 Star Jacker (SG-1000) (V1.1) [!].sg
mekacrc:4614717ECAA82D18 Star Jacker (SG-1000) (V1.1) [!].sg
crc32:7f25deca Star Jacker (SG-1000) (V1.1) [!].sg

[Super Boy I (KR) SG2GG.ips]
Apply to 48K Super Boy I (KR).sms
sha256:569888be8bfb7f3bf86d2bfb46535132a12060c8faf0d696f081187a3b7ef6ba Super Boy I (KR).sms
sha1:f0e6a20c72f0fb0feb1681217eeec3b69950e897 Super Boy I (KR).sms
md5:10b3d123ed5f2437b2d31cf8b8e60179 Super Boy I (KR).sms
mekacrc:8DF09E55615029B6 Super Boy I (KR).sms
crc32:bf5a994a Super Boy I (KR).sms

[Super Bubble Bobble (KR) SG2GG.ips] *
Apply to 32K Super Bubble Bobble (KR).sms
sha256:8b6d26dcb601158e0d3e6028b358acb345fe5032095408a8bca50dbbafa99f84 Super Bubble Bobble (KR).sms
sha1:507bfa2b21fde4d33014fc4ab98e3a934f5b339a Super Bubble Bobble (KR).sms
md5:0c36afd72e18ca6720a982130349b953 Super Bubble Bobble (KR).sms
mekacrc:50BB66C5832E8C8D Super Bubble Bobble (KR).sms
crc32:22c09cfd Super Bubble Bobble (KR).sms

[Super Columns (KR) SG2GG.ips]
Apply to 32K Super Columns (KR).sms
sha256:68065f54e21d0a0c90d407e1dc539c549cb325ad6fba86a13788debf141edec4 Super Columns (KR).sms
sha1:9d696b6eda1d13b8d439509beeb64210987e308e Super Columns (KR).sms
md5:9ff10eb9208f9feb01bbfd73edf63625 Super Columns (KR).sms
mekacrc:8B297D82FFFB75DE Super Columns (KR).sms
crc32:6ce7f694 Super Columns (KR).sms

[Super Tank (SG-1000) [!] SG2GG.ips]
Apply to 32K Super Tank (SG-1000) [!].sg
sha256:0f41dd54fc79c97251e0f49f639c8c949e87057d52efa6ad7e1a3fe110d0db23 Super Tank (SG-1000) [!].sg
sha1:58d7d51b91b763d812376d56643a4f8a331e826b Super Tank (SG-1000) [!].sg
md5:59d01bf1093a65e9ec08e533cfbbc5ff Super Tank (SG-1000) [!].sg
mekacrc:05318ACB15C32F6E Super Tank (SG-1000) [!].sg
crc32:084cc13e Super Tank (SG-1000) [!].sg

[Terebi Oekaki (SG-1000) [!] SG2GG.ips]
Apply to 8.0K Terebi Oekaki (SG-1000) [!].sg
sha256:fd2991f6c0fd3e4ca478ed16b73aef25746c9482c8896fd3bc3ae712dc166ee0 Terebi Oekaki (SG-1000) [!].sg
sha1:12296f2bb57d80d1774749d3002a039e0940c6fa Terebi Oekaki (SG-1000) [!].sg
md5:be31a84bfa537117a62eaeb8c0a07bf9 Terebi Oekaki (SG-1000) [!].sg
mekacrc:830D8CF823BC2CE1 Terebi Oekaki (SG-1000) [!].sg
crc32:dd4a661b Terebi Oekaki (SG-1000) [!].sg

[The Black Onyx (SG-1000) [!] SG2GG.ips]
Apply to 32K The Black Onyx (SG-1000) [!].sg
sha256:9a1f2170b9ef0fcee20e8c94fb5644568e5956c202cb3b25a43b5b0752db589d The Black Onyx (SG-1000) [!].sg
sha1:7ecb9ac646346900046a61ff0242d6c90a812eda The Black Onyx (SG-1000) [!].sg
md5:d2b0524a2cf5754c0fa1c900e9ecb06b The Black Onyx (SG-1000) [!].sg
mekacrc:4627CCD92099C86D The Black Onyx (SG-1000) [!].sg
crc32:26ecd094 The Black Onyx (SG-1000) [!].sg

[The Castle (SG-1000) SG2GG.ips]
Apply to 32K The Castle (SG-1000).sg
sha256:305ad1ed2aa7b692224b2a0dc5b582ae86e4798cf40c786c1ab73c48eff59b23 The Castle (SG-1000).sg
sha1:2681786bffccf58b59410c331865d30a4d027087 The Castle (SG-1000).sg
md5:d047c10d6b27cf34ccb66340a089523a The Castle (SG-1000).sg
mekacrc:7314B489F3BDC5C7 The Castle (SG-1000).sg
crc32:092f29d6 The Castle (SG-1000).sg

[Wonder Boy (SG-1000) [!] SG2GG.ips] *
Apply to 32K Wonder Boy (SG-1000) [!].sg
sha256:b3e175491332cb2ea996946972cd951282d884b9fd35840b25c59b3692e7e693 Wonder Boy (SG-1000) [!].sg
sha1:4a54933135cdff546fd79cbc61a38355f7335f3f Wonder Boy (SG-1000) [!].sg
md5:76f29fee0cd3af921e488a276dace636 Wonder Boy (SG-1000) [!].sg
mekacrc:D9D0ED81D45D08B0 Wonder Boy (SG-1000) [!].sg
crc32:160535c5 Wonder Boy (SG-1000) [!].sg

[Zaxxon (SG-1000) SG2GG.ips] *
Apply to 32K Zaxxon (SG-1000).sg
sha256:154101c7b9f6f7e2b2f06fe539132dd8322a45b9f7448877ec8e934162e370a7 Zaxxon (SG-1000).sg
sha1:e32f536c3576d41ab485e07809c4404e6b462443 Zaxxon (SG-1000).sg
md5:52bbf5336c190610a0fb1ab0bdaca455 Zaxxon (SG-1000).sg
mekacrc:237439957A2DF103 Zaxxon (SG-1000).sg
crc32:905467e4 Zaxxon (SG-1000).sg

[Zippy Race (SG-1000) [!] SG2GG.ips] *
Apply to 32K Zippy Race (SG-1000) [!].sg
sha256:788b46169ba06cd86628f8889dfbf0fd7be7819fa45db36745157ec409985797 Zippy Race (SG-1000) [!].sg
sha1:8c48dbe187ff4b26d6244d38075565f284536d0c Zippy Race (SG-1000) [!].sg
md5:0eda34ba313d3bb34558fd5939b19794 Zippy Race (SG-1000) [!].sg
mekacrc:1C80273C5B02376D Zippy Race (SG-1000) [!].sg
crc32:bc5d20df Zippy Race (SG-1000) [!].sg

[Zoom 909 (SG-1000) [!] SG2GG.ips] *
Apply to 32K Zoom 909 (SG-1000) [!].sg
sha256:78ca7d49c96fa83c68db22b8257c30ebf5cc4f17667936853c38ade4e3321d06 Zoom 909 (SG-1000) [!].sg
sha1:09552aaa7140f9fc780b5f7d541478b534320075 Zoom 909 (SG-1000) [!].sg
md5:4e457a6c5b4b613f2aac3472f6827a89 Zoom 909 (SG-1000) [!].sg
mekacrc:93DD3B768470FCEF Zoom 909 (SG-1000) [!].sg
crc32:093830d8 Zoom 909 (SG-1000) [!].sg

[mojon-twins--super-uwol SG2GG.ips]
Apply to 48K mojon-twins--super-uwol.sg
sha256:6585fe9b66bb24875c7a971782ce3c602e15e44b68c229993f1082192f7121c7 mojon-twins--super-uwol.sg
sha1:f995976b822399217c79d9e7b7d5d6c4772afcf5 mojon-twins--super-uwol.sg
md5:36e35c0cf1596a906e02b102fc7e4f9d mojon-twins--super-uwol.sg
mekacrc:DD70BB2D3DBCDDF5 mojon-twins--super-uwol.sg
crc32:5836b02b mojon-twins--super-uwol.sg

[xbill SG2GG.ips] *
Apply to 32K xbill.sg
sha256:4875f7f019423d28fc740983458385258a10cdfcba1e48511731a53ec2604ea5 xbill.sg
sha1:3696bd605c2c3a0c2ff9ca18ea9e3b6b95eb3b3e xbill.sg
md5:322b8dc56c7cab719f20629554f205e8 xbill.sg
mekacrc:FCAEE3E88D635645 xbill.sg
crc32:405f7875 xbill.sg

* - includes BIOS header

mcwill-star-jacker-hot-swap.jpg (29.56 KB)
Star Jacker on a McWill-modded Game Gear, booted by hot-swapping a different palette-patched game from an EverDrive
mcwill-star-jacker-hot-swap.jpg
original-congo-bongo-hot-swap.jpg (23.46 KB)
Congo Bongo on an LED-backlit but otherwise fairly original Game Gear, booted by hot-swapping a different palette-patched game from an EverDrive
original-congo-bongo-hot-swap.jpg
sg2gg.zip (104.32 KB)
SG2GG patches and tools

  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Mon Jul 09, 2018 12:25 pm
How are you finding space for the new code? Do you always append the original ROM?
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Mon Jul 09, 2018 4:03 pm
Last edited by bsittler on Thu Nov 29, 2018 5:07 am; edited 1 time in total
Maxim wrote
How are you finding space for the new code? Do you always append the original ROM?


Usually. When the original ROM is less than 32k or is exactly 32k and ends with 512 bytes that are all 0x00 or all 0xFF, the 512-byte patcher (which includes a trailing 16 NUL bytes that can be replaced with a BIOS header) is installed at 0x7e00-0x7fff. Otherwise the patcher is installed at 0xbe00-0xbfff, which must either be past the end of the original ROM or the last 512 bytes of the original ROM (which must be either all 0x00 or all 0xFF).

The build scripts should actually work fine with other install locations too, but I have not tested those. The assembly source expects to be 'include'-d from another file that sets up equates for the three-byte patch location, the initial SP value, and the patcher address. At the moment those 'outer' assembly source files are generated by a shell script rule inlined inside the (GNU-flavored) Makefile.

The super-hackish build system needs at least z80asm, make, bash, (GNU) ls or gls, python (2, for the checksum verifier I wrote a while ago), python3 (for the patch+ROM combiner), flips (to generate the .ips files), md5 (used in generating the manifest.txt), and appropriately-named ROM files (you can comment out all the Makefile rules for those you don't have, though.)

edit: also, as a special case, when the input ROM is exactly 32K and ends with at least 64 0x00 or 0xFF bytes, but not enough to fit the patcher, a BIOS header is written at 0x7ff0 but that header lies and claims/checksums only 32K of ROM even though the file is 48K with the patcher at the end (0xbe00-0xbfff).

edit 2: this is no longer entirely accurate, see my previous message for updated dependency information

edit 3: another special case: when the ROM is exactly 48K and does not have internal space for the patcher, I move the original 32K-48K region (page 2) to 48K-64K (page 3), put the patcher at the end of a NUL-padded 32K-48K region (page 2), and use the Sega Mapper slot 2 control registers to map in the original contents (page 3) near the end of (RAM-resident) patcher trampoline; so far this is used for the Hong Kil Dong and Super Boy I patches (both originally Gam*Boy releases)
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Sat Jul 21, 2018 4:42 pm
Last edited by bsittler on Sun Jul 22, 2018 8:42 pm; edited 3 times in total
Maxim wrote
The categories are just up to us, underneath it works by searching using page name suffixes. We could make the GG2SMS category into a system conversion category and add in SG2GG, or make a new category since there's rather a lot of GG2SMS patches out there. To add a hack involves making a wiki page based on a template, uploading a zipped IPS and at least one screenshot. It then gets listed on the main game page too.


Calindro recently added GG-SMS emulation to Emulicious's GG emulation, selectable using
GameGearSMSmode=true
in the Emulicious.ini config file (thank you!), so finally non-windowed screenshots can be made using an emulator. I'd like to add these to the wiki, maybe as just a single page since they all use the same assembly source. At the moment all the patches are in a single fairly small .zip file up-thread, would that work for the wiki or are separate .zip files needed?

edit: added details on how to configure Emulicious

edit 2: note that Emulicious will only pay attention to GameGearSMSmode when in Game Gear mode; you can trigger that either through the menus (Options, System, Game Gear) or by setting the file extension to .gg
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 12510
  • Location: London
Reply with quote
Post Posted: Sat Jul 21, 2018 5:10 pm
The wiki likes to have a page for each game so it can link it from the main page for the game. The page contents can be fairly easily generated, I may give it a go myself later.
  View user's profile Send private message Visit poster's website
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Tue Jul 31, 2018 6:03 am
Looks like hot-swapping from a flash cart running the palette patcher to the real cartridge plugged into an adapter also works with the テレビおえかき (TV oekaki) set too. AFAIK this isn't really one that makes sense to patch, but maybe someone will find a working tablet with a non-working cartridge and wire it to a GB flash cartridge and surprise me ;)

edit: or surprise me even more with a fully integrated touchscreen version on a McWill-modded Game Gear, of course!
oekaki-gear.jpg (20.16 KB)
oekaki-gear.jpg
oekaki-gear2.jpg (17.57 KB)
oekaki-gear2.jpg

  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Sat Aug 04, 2018 5:02 pm
tiny update on scrolling: I've tried several different ways so far, but so far as I can tell scrolling registers simply do not function in TMS modes on the Game Gear (entirely possible I just did it wrong every time, though!) so the best hope for native-GG mode might be game-specific deeper modifications to fit in the screen window
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Sun Aug 12, 2018 8:25 am
the ZIP file in my previous comment is now updated to include patches for some more SG-1000 MyCard dumps — each Retrode2 dump was first truncated to 32768 bytes, then patched. Hashes prior to patching:

MD5 (Bank Panic (SG-1000).sg) = 47cd2d0bbcb879302f83f2f7058f49d4
MD5 (Black Onyx, The (SG-1000).sg) = d2b0524a2cf5754c0fa1c900e9ecb06b
MD5 (Champion Billiards (SG-1000).sg) = 71c32b1cf1e85d217421068ac8ccc655
MD5 (Champion Boxing (SG-1000).sg) = 7527098abb9df1db29ba9f495b06998a
MD5 (Champion Golf (SG-1000).sg) = 3c01bb2a4414989378c252f45a4e5050
MD5 (Champion Ice Hockey (SG-1000).sg) = b3af58c60e62bb85522ddc29096cef60
MD5 (Champion Kendou (SG-1000).sg) = ed6e4e8e081b56be488f57abcb51a7e5
MD5 (Choplifter (SG-1000).sg) = ee557c7811f03c44965a56b80801a3b9
MD5 (Dragon Wang (SG-1000) [!].sg) = 64d3cc8117292f6d5af8e1aad95bcb90
MD5 (Dragon Wang (SG-1000).sg) = 0528eed7e7ae46ec8298098f1a22d18f
MD5 (Drol (SG-1000).sg) = 8eb2ab42d2bc3f3568e85cba2b46a251
MD5 (Elevator Action (SG-1000).sg) = 23c751fe6bb8bd4f8c0cd9b0d39adecd
MD5 (Gulkave (SG-1000).sg) = 43c23a134aec3ab424405780ff729d54
MD5 (H.E.R.O. (SG-1000).sg) = d10f38c614113cb34bbf4a19b487e1fb
MD5 (Hang-On II (SG-1000).sg) = 314c865decbe6f578d9bfa23f27a08e6
MD5 (Ninja Princess (SG-1000).sg) = 28d83150c298bcdae6aec51cc2c6975a
MD5 (Pitfall II - The Lost Caverns (SG-1000).sg) = c34260b61c6a45bbdd074df3f3e72c46
MD5 (Soukoban (SG-1000).sg) = 6cae3b6286041e742020aeb3cd2bdf52
MD5 (Super Tank (SG-1000).sg) = 59d01bf1093a65e9ec08e533cfbbc5ff
MD5 (Zippy Race (SG-1000).sg) = 0eda34ba313d3bb34558fd5939b19794
MD5 (Zoom 909 (SG-1000).sg) = 4e457a6c5b4b613f2aac3472f6827a89

edit: SG2GG patches are added for English translations of The Black Onyx and Ninja Princess.

edit 2: it turns out skaman's Retrode2 Mark III adapter works with Peter Byemu (famulator)'s "Lythium" MD dumper, and after deinterleaving and truncation I was finally able to read my remaining SG-1000 cartridges. Now patches are included for:

MD5 (Congo Bongo (SG-1000) [a1].sg) = b9ae730672ade71c6fce5527c2b1b42e
MD5 (Flicky (SG-1000).sg) = b52e308e1c0005bc1dba2ba900ad44d0
MD5 (Girl's Garden (SG-1000).sg) = ac95c0655360f667e3ad705e2eb7367a
MD5 (Orguss (SG-1000) (Alt).sg) = 49d4ef0e2ff7d9c6793053da2180f1da
MD5 (Star Jacker (SG-1000) (V1.1) [!].sg) = 658ede490eae6af2b0f61dd136761d95

edit 3: one more from Lythium+skaman's Mark III PlugIn adapter, though of course it doesn't even boot (missing the tablet, possible it also has an internal checksum?)

MD5 (Terebi Oekaki (SG-1000) [!].sg) = be31a84bfa537117a62eaeb8c0a07bf9

edit 4: Terebi Oekaki's patcher is moved to 0xbe00, now it at least boots in Meka in SG-1000 mode

edit 5: Added Othello, N-Sub, another Champion Golf variant, Sega BASIC Level 3 V1 (foung on both IIIA and IIIB cartridges), and Space Mountain

edit 6: Added more, including a couple Gam*Boy releases
game-gear-mcwill-super-boy-i.jpg (24.69 KB)
Patched Gam*Boy "Super Boy I" on a McWill-modded Game Gear
game-gear-mcwill-super-boy-i.jpg

  View user's profile Send private message
  • Joined: 03 Jun 2018
  • Posts: 5
Reply with quote
Post Posted: Sat Jan 05, 2019 4:38 pm
Thanks for patches. Do you plan on doing the whole collection?
  View user's profile Send private message
  • Joined: 22 Apr 2018
  • Posts: 100
Reply with quote
Post Posted: Sat Jan 05, 2019 5:33 pm
You're welcome!

100% would be great, but I won't get there on my own anytime soon. This is a side-side-side-project I only get to on an occasional weekend. If anyone else identifies where additional games set up SP and where they have or can make room for the patcher I hope they can share their own patches here too. Likewise if any of these patches works for additional games, please let all of us know.

So far:

I've only attempted to patch SG-1000, SC-3000, and Othello MultiVision cards and cartridges I've dumped my own copies of, fan translations & hacks of those, homebrew releases, and a handful of the super-obscure Korean and Taiwanese releases - mostly pirates of MSX, NES, and SMS games I have the "ancestor" cartridge for, but also a handful of original titles that seem to be very difficult to find even inside their countries of origin.

Future:

Should I add any more cards/cartridges to my collection it's likely I'll at least attempt to get them working on the GG. I don't yet have a patching technique that works for 100% of titles, and I doubt I'll ever get physical copies of some of the rarer/more expensive titles.

I'm hoping that either one of the existing patches or a small modification of it using the included build system will allow others to create similar patches for the rest of the library.

There are also a few cartridges with odd in-cartridge hardware or system/peripheral requirements that might not be possible to patch this way, or simply won't work even if patched without significant GG hardware hacking, but I hope to include partially working patches for those anyhow in case someone figures out how to get them working. BASIC, the drawing tablet, and some of rarer mappers fall in this category.

If I ever run across another shockingly affordable lot of cartridges that might change things, of course, but so far that has only happened twice since this project began and I expect gradual increases in market efficiencies to make it ever rarer.
  View user's profile Send private message
  • Joined: 03 Jun 2018
  • Posts: 5
Reply with quote
Post Posted: Sat Jan 05, 2019 5:42 pm
I went through and got all the patches but cant seem to find them all. Is there a linking to all of them?
  View user's profile Send private message
Reply to topic Goto page 1, 2  Next



Back to the top of this page

Back to SMS Power!