Gremlins 2 CRT conversion

Great looking and sounding C64 game but hard as a hell! In a typical 8-bit fashion, it requires you to memorize enemy movement patterns to make initial progress. With a little bit of invested effort, you learn what to expect from those little nasties and where they usually appear, get used to your movement limitations (keyboard is much more precise for me!) and suddenly it becomes more enjoyable “let me try just one more time” game. Although, still frustratingly challenging, even with in-game hi-score infinity life cheat (SINATRA) πŸ™‚ Game was popular movie license and C64/16-bit versions were published by Elite (developed by Elite associated MotiveTime Ltd.) while Z80 versions were developed/published by also famous Spanish 8-bit software company TopoSoft . I remember getting it as a Turbo250 tape version with AR feezed levels in 1991. πŸ™‚ Because of war outbreak in my home country in 90’s I never had a chance to check disk version, so I remember making my own one, from those AR freezes (to be proper working disk game – all that using C64 πŸ™‚ ).

While not particularly a great game, I wanted to have it in my RetroArch collection on my modern devices, with a full release gameplay experience, just like we have it with NES/SNES/MD/Amiga WHDLoad games. All CRT versions I did found were Disk2EasyFlash versions but with a bad sprites in menu and game, hence unplayable. While checking IDE64 version, I realized sprites are loaded by non-standard kernal load routine (probably because it loads under IO area) and all other assets were loaded by standard kernal loading functions. This made perfect candidate for try to make a quick fully working cartridge conversion with my crt loading functions used just like in my other cartridge conversions. I really didn’t want to waste my time by checking copy protections on original disk images or by level packing/loading routines in cracked releases, so I decided to use same IDE64 game data files in this conversion to CRT – hence credits and thanks go to Soci/SingularΒ also!

With help of Regenerator and RetroDebugger, I quickly checked initial loading routines for real load addresses and ranges of game assets, than scrapped all that code and wrote own game bootstrap code. I’ve quickly got game starting up to the main game menu. In-game level loading routine was also quickly found and successfully modified. Gameplay testing assured me all is working as it should (level completion, life loss and game restart, etc). But wining sequence showed me that game utilizes almost whole computer memory in some moments πŸ™‚ I was in question will I need to do some more demanding code reorganizations/rewrites, just to secure a few more bytes of contiguous memory area untouched by game. After careful monitoring of stack area behavior in RetroDebugger, I decided to use parts of that space also ($0100-$01a0, $0200+). With few more CRT loading code modifications everything started to work properly – conversion was complete.

Game is using joystick in port 2 for all controls, without the need for keyboard in any moment, so it was enjoyable to run in console emulators also. But I didn’t like title picture appearing for short time on computer power on/restart. That was caused by almost instantaneous CRT transfers, so I decided to make title picture as fire-button wait screen. Just to make it a little bit more attractive and informative, I added few dozen lines of code for flashing sprites message (quickly created with SpritePad) and used existing in-game SID music tracks and player routine. I will be brave and say that result is very similar to what would be a look of never-existing C64GS CRT release in those times πŸ™‚

In this nonpacked form it occupies ~125 KB, fitting in standard 128 KB CRT. Although fully possible, I didn’t try to compile packed version even for a comparison, as I am too lazy to prepare exomized assets and spend additional time to test on-the-fly unpacking while reading from rom πŸ™‚ Testing was done on emulators and real C64. I tested it with SDL/GTK Vice emulator, RetroArch on Windows/Raspberry Pi 4, EasyFlash CRT on real C64, and Magic Desk cartridge created as instructed on this project (also on real C64). BIN file should be working with Marina64 cartridge also, but I don’t have that hardware for testing. In archive there is a BIN file for EPROM programming (I used 512Kb Winbond chips with my TL-866II). Use CRT files for software/fpga emulators, EasyFlash, KungFu, SideKick64, etc. Web browser version is also available. Enjoy πŸ˜‰ πŸ˜‰

Sorry NTSC pals, this is PAL release only – according to emulators, game works on NTSC C64 but with, expectedly, bit faster music and gameplay πŸ™

This CRT conversion was possible thanks to work/projects of the following people: Soci/Singular (IDE64 release, 64TASS cross-assembler), Marko/8bitChipInfo (MagicDesk cartridge project), Tom-Cat/N0S (Regenerator), Slajerek/SMR (RetroDebugger), Stewart Wilson (SpritePad), Skoe (EasyFlash hardware) and others involved in those projects/works.


December 20th, 2023 | Posted in Commodore 64 |

Leave a Reply