Apologies to Barthax and terencew if I'm stepping on any toes by following their excellent examples regarding supplying additional information for MAME submissions:
*** Disclaimer ***
The following tests and reports are neither exhaustive nor definitive
and should not be assumed as such in order to verify authenticity of a submission.
Zip Tests:
Code:
==============================================================================================
Testing OOO_ZooKeeperExtreme_2011350.zip
==============================================================================================
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Scanning the drive for archives:
1 file, 154586 bytes (151 KiB)
Testing archive: OOO_ZooKeeperExtreme_2011350.zip
--
Path = OOO_ZooKeeperExtreme_2011350.zip
Type = zip
Physical Size = 154586
Everything is Ok
Size: 159363
Compressed: 154586
==============================================================================================
Listing OOO_ZooKeeperExtreme_2011350.zip
==============================================================================================
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Scanning the drive for archives:
1 file, 154586 bytes (151 KiB)
Listing archive: OOO_ZooKeeperExtreme_2011350.zip
--
Path = OOO_ZooKeeperExtreme_2011350.zip
Type = zip
Physical Size = 154586
----------
Path = OOO_ZooKeeperExtreme_2011350.inp
Folder = -
Size = 159363
Packed Size = 154424
Modified = 2017-01-28 18:39:46
Created =
Accessed =
Attributes = A
Encrypted = -
Comment =
CRC = 8E1C00E4
Method = Deflate
Host OS = FAT
Version = 20
Volume Index = 0
==============================================================================================
Testing nvram.zip
==============================================================================================
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Scanning the drive for archives:
1 file, 381 bytes (1 KiB)
Testing archive: nvram.zip
--
Path = nvram.zip
Type = zip
Physical Size = 381
Everything is Ok
Size: 1024
Compressed: 381
==============================================================================================
Listing nvram.zip
==============================================================================================
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Scanning the drive for archives:
1 file, 381 bytes (1 KiB)
Listing archive: nvram.zip
--
Path = nvram.zip
Type = zip
Physical Size = 381
----------
Path = nvram
Folder = -
Size = 1024
Packed Size = 273
Modified = 2017-01-28 18:39:46
Created =
Accessed =
Attributes = A
Encrypted = -
Comment =
CRC = 79BDD1F4
Method = Deflate
Host OS = FAT
Version = 20
Volume Index = 0
MAME Major Version 169
What MAME Thinks:
Code:
Input file: zookeep.inp
INP version 3.5
Created Sat Jan 28 02:34:04 2017
Recorded using MAME 0.169 Dec 30 2015
Total playback frames: 20485 (05:41.29)
Average recorded speed: 100%
Average speed: 100.00% (343 seconds)
Source driver:
zookeep qix.cpp
Generic Info for Game:
Code:
ROMs changed: no
0.106-0.175: zookeep = "Zoo Keeper (Set 1)"
Resolution, 0.106-0.114: 256x240 @ 60.000000Hz
Resolution, 0.115: 256x256 @ 55.838470Hz
Resolution, 0.116-0.146: 256x256 @ 76.293945Hz
Resolution, 0.147-0.175: 256x256 @ 55.838470Hz
All dips are software-based: use F1 to access.
TG Game Entry: https://www.twingalaxies.com/scores.php?platformid=46&gamename=Zoo%20Keeper%20[Set%201]
Rules, Set 1 Points: https://www.twingalaxies.com/scores.php?scores=5217
Rules, set 1 Coconut Challenge: https://www.twingalaxies.com/scores.php?scores=131624
Rules, Zoo Keeper Extreme! (ZEKE-99): https://www.twingalaxies.com/scores.php?scores=132438
INP dump not relevant
MAMEInfo.dat entries for zookeep and qix.cpp
Code:
0.29 [John Butler, Ed. Mueller]
Artwork available
SETUP and TEST MODE:
- The first time you run the game, it will ask the location. You can change the name using F5/F6 and F2, then F1 to proceed through all the configuration screens, or just reset (F3).
- Keep F2 pressed to enter test mode, then F1 to advance to the next test.
- There are no dipswitches, press F1 to enter the service mode, then F1=Next screen, F2=Next line, F5=Up and F6=Down.
WIP:
- 0.182: Replaced M68705 CPU4 with MC68705P3.
- 0.164: Lord Nightmare added rom locations to Zoo Keeper sets.
- 0.122u6: Changed M68705 CPU4 clock speed to 4MHz.
- 10th December 2006: Mr. Do - We have Zoo Keeper bezel, cleaned up by Ad_Enuff.
- 0.37b16: Changed M6802 CPU3 clock speed to 921600 Hz, M68705 MCU to 1MHz and palettesize to 1024 colors.
- 0.35b4: Fixed cpu1 rom ($8000).
- 28th February 1999: Nicola fixed Zoo Keepers from crashing on the first bonus life stage.
- 0.35b6: Replaced M6803 CPU3 with M6802 and M6805 CPU4 with M68705.
- 0.35b4: Added new maincpu ($8000).
- 0.35b3: Nicola Salmoria added clone Zoo Keeper (set 2). Properly emulated the 68705 protection in Zoo Keeper. Added M6805 (2MHz) CPU4 and 3rd coin slot. Known issues: Every time you start the emulation, you get a free credit. This is due to the 68705 based protection. Changed description of clone (set 2) to 'Zoo Keeper (set 3)'. Renamed (zookeepa) to (zookeep3).
- 0.33b7: Nicola Salmoria added clone Zoo Keeper (set 2). Changed parent description to 'Zoo Keeper (set 1)'.
- 0.31: John Butler merged the Qix and Zookeeper drivers, they now also support rotation.
- 0.30: Changed description to 'Zoo Keeper'.
- 0.29: John Butler added 'Zookeeper' (Taito 1982). Early attempt at a Zookeeper driver, based on the Qix one, which unfortunately doesn't work yet [John Butler, Ed Mueller]. ZooKeeper uses the same hardware as Qix (two 6809 CPUs). One CPU for data and sound and the other for video. Communication between the two CPUs is done using a 4K RAM space at $0000 which both CPUs have direct access. FIRQs (fast interrupts) are generated by each CPU to interrupt the other at specific times. The coin door switches and player controls are connected to the CPUs by Mototola 6821 PIAs. These devices are memory mapped as shown below. The screen is 256x256 with eight bit pixels (64K). The screen is divided into two halves each half mapped by the video CPU at $0000-$7FFF. The high order bit of the address latch at $9402 specifies which half of the screen is being accessed. Timing is critical in the hardware. The data CPU must have an interrupt signal generated externally at the right frequency to make the game play correctly. The address latch works as follows. When the video CPU accesses $9400, the screen address is computed by using the values at $9402 (high byte) and $9403 (low byte) to get a value between $0000-$FFFF. The value at that location is either returned or written. The scan line at $9800 on the video CPU records where the scan line is on the display (0-255). Several places in the ROM code wait until the scan line reaches zero before continuing.
- 26th April 1993: Dumped Zoo Keeper (set 1).
Other Emulators:
* HiVE
Recommended Games (Animals):
Lasso
Zoo Keeper
Noah's Ark
Portraits
Bullfight
Snake Pit
Video Vince and the Game Factory
Frantic Fred
Jambo! Safari
Animal Catch
Pye-nage Taikai
Inu No Osanpo / Dog Walking
Sweet Life
Sweet Life 2
Animal Basket
Romset: 78 kb / 20 files / 43.1 zip
-----------------------------------------------------
0.23 [John Butler, Ed. Mueller]
TODO:
- The Kram encryption algorithm is not understood. I merely provide tables to decrypt it, derived by comparison with the not encrypted versions. According to the QIX and Kram schematics, these games should be using 68A90Es. The 6809E has a 'Last Instruction Cycle' pin that is likely tied in with the encryption: "LIC is HIGH during the last cycle of every instruction and its transition from HIGH to LOW will indicate that the first byte of an opcode will be latched at the end of the present bus cycle".
- I applied the interleave change only to elecyoyo because these games are really sensitive to timing, and kram's service mode was disturbed by it (the high score and audit pages were broken).
NOTES:
- The encrypted version of Kram doesn't have the protection MCU
- It's not clear what the 16R4 PAL does.
- Electric Yo-Yo was hanging in attract mode because of a synchronization issue. This was fixed by increasing the interleave to 20. The reason for the hang was that CPU #2 was reading location $8013 of shared RAM after clearing it and before CPU #1 had put the correct value in it.
WIP:
- 0.167: Fixed horizontal partial updates in Qix driver [David Haywood].
- 0.154: Fixed Qix driver save state regression [Osso].
- 0.153: Fixed 6821 PIA regressions in Kram (set 1/2), Electric Yo-Yo (set 1/2) and Space Dungeon [smf]. Let's not regenerate the entire Qix palette every time we do a partial update [Alex Jackson]. Misc cleanups [Osso].
- 0.148u1: Resolved device references at initialisation where possible in Qix driver [Phil Bennett].
- 0.147u1: Fixed regressions (includes\qix.h) [Miodrag Milanovic].
- 0.146u3: Set screen to CRTC initial parameters (256x256 at ~55hz) [hap]. Changed VSync to 55.838470Hz.
- 0.140: Aaron Giles fixed player's character disappears during gameplay in qix, zookeep and clones.
- 0.129: Turned on perfect interleave for Qix hardware games [Aaron Giles].
- 0.123u5: Added layout\elecyoyo.lay.
- 0.123u2: Zsolt Vasvari reorganized Qix driver (driver state, decoupled audio section, etc).
- 0.123u1: Zsolt Vasvari changed Qix driver to RGB32 mode and made its videoram_w do the partial updating instead of a per scanline timer.
- 0.123: Atari Ace fixed multisession problem in the Qix driver.
- 0.122u7: Changed M6802 CPU3 clock speed to 3686400 Hz.
- 0.116u1: Aaron Giles improved MCU timing and communication in the Qix driver. Still a few issues remain. Zsolt Vasvari fixed scanline address reporting in the Qix driver.
- 0.115u3: Zsolt Vasvari fixed subtle behavior in handling of PIA port A. This allows for the removal of hacks in the Qix driver and the Williams driver.
- 0.115u2: Zsolt Vasvari changed the CRTC6845 emulator to optionally control the screen configuration and video rendering. Updated the Qix and Spiders driver to use the new functionality. Added notifications for when the display enable pin changes in order to drive blanking signals. Changed VSync to 76.293945Hz.
- 0.115: Aaron Giles hooked up 6845 CRTC to the qix-based games. All games now generate display resolutions and frame rates on the fly. Cleaned up memory maps and a few other bits along the way. Added save state support. Changed visible area to 256x256 and VSync to 55.838470 Hz.
- 0.96u2: Nicola Salmoria added cocktail flip support to the Qix driver.
- 0.91u1: Added sndhrdw\qix.c. Derrick Renaud added external volume control and stereo support. Replaced DAC sound with Discrete.
- 0.37b16: Added includes\qix.h.
- 2nd June 2001: Aaron Giles fixed a multitude of problems in the other games.
- 0.35b12: Changed M6802 CPU3 clock speed to 920000 Hz.
- 0.35b10: Changed M6802 CPU3 clock speed to 3680000 Hz.
- 0.31: Merged zookeep.c with qix.c driver.
- 0.30: Added vidhrdw\zookeep.c.
- 0.29: Added zookeep.c driver and machine\zookeep.c.
- 0.23: Added qix.c driver, machine\qix.c and vidhrdw\qix.c.



Note: Game was recorded without first deleting the nvram file, which means the INP will not play correctly without it. The submitter has since provided the nvram file to ensure proper playback (see earlier post in this thread).
Submissions to MARP require that nvram files are deleted before recording an INP file to avoid playback issues like this one. I assumed TG would also have a rule prohibiting nvram in the submission rules for MAME for the same reason, but I cannot find such a rule.