----------------------------------------------------------------- | BATTLEZONE SINGLE EPROM ENHANCEMENT | ----------------------------------------------------------------- COPYRIGHT 2001 REVISION NUMBER: 1.3 REVISION DATE: 11 March 2007 CREATED BY: Mark Shostak RECORDED BY: Tom McClintock LAST REVISED BY: Rob Carroll SPECIAL TANKS (get it?) TO: Scott Brasington Mark Shostak (for after-the-fact support) STANDARD DISCLAIMER: -------------------- REMEMBER, NO WARRANTIES, EXPRESS OR IMPLIED, ARE GIVEN. USE THIS INFORMATION AT YOUR OWN RISK. I AM NOT RESPONSIBLE FOR ANY DAMAGES THAT MAY OCCUR TO YOUR PERSON OR PROPERTY. --------------------------------------------------------------------- GENERAL OVERVIEW: ----------------- This enhancement allows you to replace all the Battlezone program ROMs with one big EPROM. The sockets on Battlezone boards really suck! I found most ROM errors on the Atari AVG board can be cleared up (for a short time), by "adjusting" the vertical position of the device in the socket. However, to fix this problem once and for all I burned a single rom (a 27128) and installed a single machined pin socket for it. INGREDIENTS: ------------ 1 - Working Battlezone AVG board 1 - Set of Battlezone Revision 2 Program ROM images 1 - 24-pin machined socket 1 - 28-pin machined socket 1 - 40-pin machined socket 1 - 27128 EPROM 1 - 74LS04 Hex Inverter 14-pin DIP [**optional**] jumper wire soldering iron SOFTWARE: --------- First, identify the Program ROMs: N1 (036409), L/M1 (036410), K1 (036411), J1 (036412), F/H1 (036413), and E1 (036414). Carefully remove them and store them for safe-keeping. They will not be used for this hack. We will not be altering or moving the Mathbox ROMs either. Now you must combine all the Battlezone program ROM images. Since you are combining eight 2716 EPROMs (128K) you will need a 27128 EPROM. A 27256 or 27512 will work equally well. You can use what you've got.... You can create this combined file by using the DOS copy command "copy /b ROM0.bin+ROM2.bin ... ROM5.bin bigfile.bin". However, the BZ single 27128 EPROM should be mapped as follows: *************************************************************************** 0000 - 07ff ROM 0 (036414a) 0800 - 0fff ROM 1 (036413) 1000 - 17ff ROM 0 (036414) 1800 - 1fff ROM 1 (036413) 2000 - 27ff ROM 2 (036412) 2800 - 2fff ROM 3 (036411) 3000 - 37ff ROM 4 (036410) 3800 - 3fff ROM 5 (036409) *************************************************************************** The reason for the doubles at the beginning is that the AVG board maps 12K of EPROMs into 16k of address space. Therefore, 4k (16-12=4k) of code has to come from somewhere. The way they do this is to repeat ROM 0 & 1 (2+2= the missing 4k). The program may or may not care (the memory map in Atari's documentation indicates that the code is NOT duplicated, but the actual h/w does duplicate it). To be completely compatible with the original, you need to do the duplication (required or not). An easy way to check your ROM assembly is to check your new ROM file against a known good MD5Sum. The MD5Sum is better than a checksum, as a check _sum_ is a summation of all of the data elements in an array. Addition is not sensitive to order, but an MD5Sum is! The correct MD5Sum of the Battlezone 'Big Rom' is as follows: D41D8CD98F00B204E9800998ECF8427E *bigbz.bin 16Kb *************************************************************************** NOTE: This MD5 sum is in question. When I concatenated the MAME ROM images myself using the BZONE ROMset and 036414a.01 from BZONE2, the MD5 sum for the file I created was as follows: 575164E891ADB20463D2C8BFAD6EA456 *COMPBZ.BIN 16KB This file should be available at Ionpool.net once I upload it. -Rob Carroll *************************************************************************** PROGRAM SOCKETS: ---------------- Unfortunately, because a 27128 EPROM has 28-pins and the original BZ program ROM sockets are designed for a 2716 EPROM (24-pins) you need 4 more pin sockets! An easy way to overcome this lack of pin sockets is to place a 28-pin socket on top of the 24-pin socket and wire the four floating pins to their appropriate points on the board. It will be easier to assemble these sockets and jumper wires prior to inserting them into the BZ board, but your technique and mileage may vary :) 24-PIN MACHINED SOCKET: ----------------------- 1. Remove pin 20 of the 24-pin socket (this is a select line) 2. Remove pin 21 of the 24-pin socket (this is A11) 3. Remove pin 24 of the 24-pin socket (this is Vcc) ***NOTE*** The pins on the new 24-pin machined socket must be physically removed from the plastic housing. This ensures that no misrouted accidental contact between the new 27128 and the AVG board occurs. Remove the above three pins by pushing them up through the socket. They should pop right out. 4. Unsolder and remove the existing socket from location L/M1 (ROM036410). Any ROM socket will work for this project, but L/M1 is the closest to chip M2 and will reduce the jumper wire length accordingly. 24-pin SOCKET FROM ABOVE 1 |O|---U---|O| 24 <- remove pin 2 |O|-------|O| 23 3 |O| |O| 22 4 |O| |O| 21 <- remove pin 5 |O| |O| 20 <- remove pin 6 |O| |O| 19 7 |O| |O| 18 8 |O| |O| 17 9 |O| |O| 16 10 |O| |O| 15 11 |O|-------|O| 14 12 |O|-------|O| 13 28-PIN MACHINED SOCKET: ----------------------- 1. Connect pin 1 to M2 pin 16 (Vcc) 2. Connect pin 2 to M2 pin 13 (A12) 3. Connect pin 23 to M2 pin 14 (A11) 4. Connect pin 26 to M2 pin 2 (A13) 5. Connect pin 27 to M2 pin 16 (Vcc) 6. Connect pin 28 to M2 pin 16 (Vcc) 7. Connect pin 22 to (/A14) ** 8. Cut the pins on those locations _above_ empty pins on 24-pin socket as short as possible, so they don't contact the PCB pad when the 28-pin socket is installed in the 24 pin socket. These are pins 22, 23, and 26. 28-pin SOCKET FROM ABOVE M2 pin 16 (Vcc) <- 1 |O|---U---|O| 28 -> M2 pin 16 (Vcc) M2 pin 13 (A12) <- 2 |O|-------|O| 27 -> M2 pin 16 (Vcc) 3 |O| cut->|O| 26 -> M2 pin 2 (A13) 4 |O| |O| 25 5 |O| |O| 24 6 |O| cut->|O| 23 -> M2 pin 14 (A11) 7 |O| cut->|O| 22 -> (/A14)** 8 |O| |O| 21 9 |O| |O| 20 10 |O| |O| 19 11 |O| |O| 18 12 |O| |O| 17 13 |O|-------|O| 16 14 |O|-------|O| 15 ** This /A14 signal can be found in two different manners. The first method involves the addition of an LS04 hex inverter chip. The new 27128 EPROM needs the /A14 signal, but the Battlezone board does not provide it. We can generate this signal by wiring the LS04 as follows: ------------ |Method #1:| ------------ LS04 pin 1 to M2 pin 3 LS04 pin 2 to pin 22 of the 28-pin socket LS04 pin 7 to GND LS04 pin 14 to M2 pin 16 (Vcc) ------------ |Method #2:| ------------ The second method is a bit more invasive as it requires you cut two pins, but does not require an additional chip. Cut pins 5 and 6 on K2 (74S04) Run a jumper wire from K2 pin 5 to M2 pin 3 Run a jumper wire from K2 pin 6 to pin 22 of the 28-pin socket CPU SOCKET: ----------- The other main point of failure on Battlezone AVG boards is the 6502 CPU socket. Basically, it sucks as well! While replacing the CPU socket with a new 40-pin machined socket will not affect the viability of your new combined program ROM, an old socket will cause intermittent problems with your board that may be impossible to diagnose properly. Spend a few extra minutes and replace the CPU socket. You will be glad you did. ASSEMBLY: --------- Now that you have your new EPROM "adapter" socket assembly, insert the sockets so the bottom ends of the sockets are aligned (i.e., the non-notched edges). Insert the new 24-pin socket into location L/M1 and solder it in pace. Install the 28-pin socket _in_ the 24-pin socket (if you have not already done so). Install your new 27128 EPROM and fire the game up! SOCKETS FROM THE SIDE +-----------------+ notch -> | 28-pin socket | +-----------------+ ||||||||||||||||| +--------------+ notch -> |24-pin socket | +--------------+ |||||||||||||| --------------------------------------------------------------------- |OTHER HELPFUL BATTLEZONE INFORMATION:| --------------------------------------- Battlezone memory map 0000-04ff RAM 0800 IN0 0a00 IN1 0c00 IN2 1200 Vector generator start (write) 1400 1600 Vector generator reset (write) 1800 Mathbox Status register 1810 Mathbox value (lo-byte) 1818 Mathbox value (hi-byte) 1820-182f POKEY I/O 1828 Control inputs 1860-187f Mathbox RAM 2000-2fff Vector generator RAM 3000-37ff Mathbox ROM 5000-7fff ROM ----------------------------------------------------------------- | END | -----------------------------------------------------------------