MAMEWorld >> EmuChat
View all threads Index   Threaded Mode Threaded  

Pages: 1

Reged: 03/26/13
Posts: 23
Send PM

Taito L System Easter eggs/test code
#333834 - 10/26/14 09:51 PM

I'm a big fan of Taito's L System. The various flavours of the board pack a lot of 8-bit power into a tiny footprint, and even though it came out when 16-bit games were already very mature the L System games still look (and play) pretty damn good for an 8-bit architecture.

At the system's heart lies the Taito TC0090LVC all-in-one integrated CPU/system controller which does everything bar the sound generation (i.e. it does game logic, tile handling, sprite handling, I/O handling, etc). Due to the fact that nearly all functionality of the hardware is built into the CPU an L System board like Plotting only needs 24 ICs for the entire game. That's probably one of the lowest IC counts for any 8-bit arcade board from all board manufacturers.

The CPU is built around a Z80 core and, as I've been fluent speaker of Z80 for over 30 years, and the hardware is fairly well documented in the MAME source for the L System, I've decided to start doing a bit of homebrew coding on the system.

In order to code for a system that isn't fully understood and to gain a further understanding of exactly how the game code interacts with the hardware I needed to reverse at least the boot process, paged memory layout, and I/O map of a couple of the games running on the L System first. I chose Puzznic and Plotting as my targets, mainly because I own a Puzznic board and it can be easily converted to Plotting via a simple rom swap.

It was in the reversing of the boot process of those 2 games that I stumbled across a boot time Easter Egg which I've since confirmed is present in 3 further L System games. Don't you just love it when the devs leave these little Easter eggs in the code for us to find 25 years later.

I'm pretty sure this info has NEVER been released anywhere else and these Easter eggs have lay dormant since the master code was first programmed to silicon. This info is NOT in the MAME driver for the L System and extensive web searching hasn't found this info anywhere else either.

OK, on to the fun.

Let's start with Plotting as that one has the most feature rich Easter Egg.

To activate the Easter egg on Plotting (and indeed all the L System games that have the egg built in) do the following :-

1) press and hold the service credit button as soon as you power the board on (if you're trying this in MAME then that button defaults to the number 9 key)
2) when the SERVICE SWITCH ERROR screen appears immediately release the service credit button (in the case of Plotting you have 54 vblanks (slightly less than 1 second) to release it or the Easter egg won't work)
3) then quickly press the P1 START button 3 times followed by the service credit button once followed by the P1 START button for a final time
4) if you've correctly activated the Easter egg then you'll hear the 'coin inserted' sound and will be presented with the following screen

5) you can now use P1 up and down to select a starting stage between 0 and 59 and then press P1 START when you've made your choice

As an added bonus you start the game with 255 wild card blocks instead of the usual 1-4 that you'd get based on the dip switch settings.

As if this little piece of test code wasn't enough the dev team kindly left some more test functionality in the code, but to unlock this you need to enable a couple of debug flags first. This is easy in MAME as you can simply hex edit the rom before launching, but you'll need to reprogram the code for IC10 if you're wanting to try these extra test settings on real hardware.

The first debug flag is at location $0036 in the IC10 code. If this is any non-zero value then you can PAUSE/UNPAUSE the game during gameplay by pressing the P1 and P2 START buttons simultaneously. This stops the clocks and stops processing inputs but the music will continue to play. I guess they put this in to give the testers time to observe the levels. This debug flag does NOT need the Easter egg to be activated to work.

The second debug flag is at location $0037 in the IC10 code. This flag works in conjunction with the Easter egg (i.e. the egg MUST be activated for this debug flag to have any effect). If this is any non-zero value (AND the egg is activated) then you can instantly complete the level that you're currently playing by pressing P1 START and P1 UP during gameplay.

A word of advice. Ordinarily the game's built in rom check would fail if you modify bytes in the code however the dev team kindly put extra code in to check if locations $0036/$0037 were modified and if they were then the code would skip the rom check. This only works in the MAME versions known as plotting and flipull (Japanese release of the game). The versions known as plottinga, plottingb and plottingu do NOT have this extra functionality and so modifying the bytes at $0036 and $0037 will cause the rom check to fail. You'll need to bypass the rom check on these versions if you want to try this debug flag (not exactly hard ).

The Easter egg is automatically deactivated by the following scenarios :-

1) when you beat the game
2) if you have 'ALLOW CONTINUES' set to 'OFF' in the dips and the game ends without you beating it
3) if you have 'ALLOW CONTINUES' set to 'ON' in the dips and the game ends without you beating it and then the timer expires on the CONTINUE screen


The Easter egg in Puzznic is activated the same as Plotting. The screen where you release the service credit button says SERVICE SW ERROR (instead of SERVICE SWITCH ERROR as in Plotting) and you have 300 vblanks (5 seconds) to press P1 START three times followed by the service credit button followed by P1 START a final time.

If activated correctly you'll hear the 'coin inserted' sound and be presented with a screen saying PUSH 1 OR 2 PLAYER BUTTON. After you've made that choice you'll be presented with the following screen

You can then select ANY of the 36 levels to start playing from by using P1 up/down/left/right. When you've chosen then press P1 Button 1 and then chose the sub level (1-4) within that level with P1 left/right. Finally press P1 Button 1 to start the game.

When the level starts you'll notice you've got infinite time and infinite retries to complete it, but NOT infinite bombs unfortunately. If that's not enough then press P1 START to instantly finish the level you're playing and move on to the next one! If you're bored of the current level and want to try a different one then press P2 START and you'll be taken back to the screen above where you can select any level you wish once again.

The Easter egg code exists in all known MAME versions of the game (even the bootleg!).

Was there ever an easier way to see digitised 8-bit semi-naked chicks than this? I don't think so!

A quick word on the other L System games which have the Easter egg functionality built in to them.

Fighting Hawk - the Easter egg is activated the same way as above, if activated correctly you'll hear the 'coin inserted' sound. The egg in this game isn't as feature rich as those above. It has a ROUND select feature which you'll be presented with upon activation of the egg. Use P1 DOWN to select the starting round (1-6) then P1 START to start the game. You'll start the game with 255 lives, although the game can only show a maximum of 99 on screen so it will show 54 to start with (255 minus the one you're currently playing with) but it will still maintain the correct count of lives internally. This screen shows how it looks after I've lost a couple of lives

Also the high score is set at zero when the egg is activated (rather the usual 50000) so if you really suck at shooters (like me) then this may be your chance to get your name on the high score table.

Kuri Kinton - again the Easter egg is activated as above. If activated correctly you'll get this screen

I think the only feature of the egg is the level select, although I'll admit that I haven't studied the code in great detail for this game as I hate side scrolling fighting games like this and having to play it for more than 20 seconds really grinds my gears!

Champion Wrestler - activate the Easter egg as above, if activated correctly then you'll be given 9 credits and, after selecting a one or two player game and your chosen wrestler you'll be taken to a ROUND select screen (shown below) where you can use P1 left/right to select the starting round (1-8) and then P1 START to begin wrestling.

Unfortunately there's no Easter egg in Raimais, which is one of my favourite L System titles. Nor are there any eggs in Tube-It/Cachat, Palamedes, American Horseshoes or Evil Stone.

Cubybop, Playgirls and Playgirls 2 DO have Easter egg code in the boot process but it's very badly broken. The devs trashed register B with the button scanning code and this causes the game to go in to an infinite loop if you attempt to activate the egg as above. It's relatively simple to fix for me as a Z80 coder but even when the activation code is fixed the game goes into a constant reboot before too long due to more bad coding in checking for the activated egg. In the end I left them alone, but may return to them one day to sort out.

I'd like to say a big thank you to the Taito devs who left this debug/test code in their L System games for someone (me) to find one day. I simply love finding things like this when I'm pulling people's work apart and shudder to think how many more games still have secrets like this to find one day.......

Vas Crabb
Reged: 12/13/05
Posts: 4230
Loc: Melbourne, Australia
Send PM

TCRF new [Re: cmonkey]
#333845 - 10/27/14 04:13 AM

Cool stuff! Someone make sure this gets added to TCRF wiki.

Pages: 1

MAMEWorld >> EmuChat
View all threads Index   Threaded Mode Threaded  

Extra information Permissions
Moderator:  redk9258, URherenow, Tafoid 
0 registered and 11 anonymous users are browsing this forum.
You cannot start new topics
You cannot reply to topics
HTML is enabled
UBBCode is enabled
Thread views: 2318