Defender is different from other similar Williams games in a couple of important ways: 1) many hardware locations (watchdog, PIAs, etc) are addressed at different memory locations, and 2) 7 EPROMs were bank-switched in and out of two areas. Number 1 is fairly easy to fix by searching the ROM image for the old addresses and changing them to the new addresses. For example, the Defender ROM PIA was addressed at $CC00-CC03. This is changed to $C80C-C80F. The watchdog is changed from $C3FC to CBFF, and the data from $38 to $39. The widget PIA changes from $CC04-CC07 to $C804-C807. Number 2 is much more difficult. Defender used a scheme in which a bank of ROMs was selected by storing at $D000 the bank number. There are 4 banks- 1, 2, 3 and 7. Bank 7 only has 2048 bytes; the others have 4096 bytes. In addition, $D000-FFFF is not banked. The banks were swapped into the address range $C000-CFFF (-C7FF for bank 7). Storing a 0 in $D000 turned off the bank-switched ROMs and enabled the I/O and SRAM area. After examining the ROM code and calculating the effort required to patch the bank switching out, I decided instead to add the bank-switching hardware to my ROM board. First, the banks have to be put into normal address ranges. I put page 7 into $B000-B7FF. (NOTE: the end of page 7 appears to be a copy of the same area of page 3.) Page 3 went into $A000-AFFF; page 2 went from $9000-9FFF; and page 1 went from $8000-8FFF. After that, the non-bank-switched ROMs go into $D000-FFFF. This can be accomplished by joining the EPROM images in this order: 32768 bytes of $FF, 2048 bytes from ROM 9, 2048 bytes from ROM 12, 2048 bytes from ROM 8, 2048 bytes from ROM 11, 2048 bytes from ROM 7, 2048 bytes from ROM 10, 2048 bytes from ROM 6, 6144 bytes of $FF, 2048 bytes from ROM 1, 2048 bytes from ROM 4, 4096 bytes from ROM 2 and 4096 bytes from ROM 3. Note: I used the red label Defender ROM images, since from all the info I could find, they are the latest. This ROM image must be patched to fix up the addresses mentioned in item Number 1 above: Offset $8064: From $CC To $C8 Offset $8065: From $02 To $0E Offset $811B: From $C4 To $CD Offset $8122: From $C4 To $CD Offset $8125: From $C4 To $CD Offset $82BF: From $C4 To $CD Offset $A0E9: From $CC To $C8 Offset $A0EA: From $00 To $0C Offset $A0FF: From $C4 To $CD Offset $A109: From $C4 To $CD Offset $A118: From $C4 To $CD Offset $A320: From $C4 To $CD Offset $A32A: From $C5 To $CE Offset $A335: From $C4 To $CD Offset $A344: From $C4 To $CD Offset $A369: From $C4 To $CD Offset $A373: From $C5 To $CE Offset $A42D: From $CC To $C8 Offset $A42E: From $00 To $0C Offset $A4BD: From $CC To $C8 Offset $A4BE: From $00 To $0C Offset $A4C5: From $C0 To $FF Offset $A4C6: From $39 To $75 Offset $A4C8: From $CC To $C8 Offset $A4C9: From $06 To $12 Offset $A4DF: From $CC To $C8 Offset $A4E0: From $02 To $0E Offset $A4E4: From $CC To $C8 Offset $A4E5: From $08 To $14 Offset $A4EF: From $C0 To $FF Offset $A4F0: From $39 To $75 Offset $A4F9: From $C0 To $FF Offset $A4FA: From $36 To $65 Offset $A504: From $CC To $C8 Offset $A55A: From $CC To $C8 Offset $A59C: From $CC To $C8 Offset $A59D: From $00 To $0C Offset $A7F9: From $CC To $C8 Offset $A7FA: From $00 To $0C Offset $A833: From $C4 To $CD Offset $A845: From $C4 To $CD Offset $A874: From $CC To $C8 Offset $A875: From $00 To $0C Offset $A8C5: From $C4 To $CD Offset $A933: From $C4 To $CD Offset $A95F: From $C4 To $CD Offset $A98F: From $C4 To $CD Offset $A9A1: From $C4 To $CD Offset $A9AA: From $CC To $C8 Offset $A9AB: From $00 To $0C Offset $A9C0: From $C4 To $CD Offset $A9C7: From $C4 To $CD Offset $AA0F: From $CC To $C8 Offset $AA10: From $00 To $0C Offset $AA6C: From $38 To $39 Offset $AA6E: From $C3 To $CB Offset $AA6F: From $FC To $FF Offset $AA74: From $CC To $C8 Offset $AA75: From $00 To $0C Offset $AAB6: From $CC To $C8 Offset $AAB7: From $00 To $0C Offset $AAC1: From $CC To $C8 Offset $AAC2: From $02 To $0E Offset $AB11: From $CC To $C8 Offset $AB12: From $02 To $0E Offset $AB9A: From $C4 To $CD Offset $ABAB: From $C4 To $CD Offset $ABC5: From $C4 To $CD Offset $ABD8: From $C4 To $CD Offset $ABEF: From $C3 To $CC Offset $AC19: From $C4 To $CD Offset $AC35: From $C4 To $CD Offset $AC4C: From $C4 To $CD Offset $AC5C: From $C4 To $CD Offset $AC6A: From $C4 To $CD Offset $ACB6: From $C4 To $CD Offset $B7F9: From $CC To $C8 Offset $B7FA: From $00 To $0C Offset $D458: From $CC To $C8 Offset $D459: From $03 To $0F Offset $D45B: From $CC To $C8 Offset $D45C: From $02 To $0E Offset $D543: From $CC To $C8 Offset $D544: From $02 To $0E Offset $D549: From $CC To $C8 Offset $D54A: From $02 To $0E Offset $D5A9: From $CC To $C8 Offset $D5AA: From $01 To $0D Offset $D5D5: From $CC To $C8 Offset $D5DA: From $CC To $C8 Offset $D607: From $CC To $C8 Offset $D608: From $00 To $0C Offset $D619: From $CC To $C8 Offset $D61A: From $00 To $0C Offset $D730: From $C0 To $00 Offset $D745: From $C6 To $7E Offset $D746: From $04 To $FF Offset $D747: From $CE To $5C Offset $D748: From $CC To $C6 Offset $D749: From $00 To $02 Offset $D74A: From $8E To $6F Offset $D74B: From $D7 To $41 Offset $D74C: From $30 To $A6 Offset $D74D: From $6F To $80 Offset $D74E: From $41 To $A7 Offset $D74F: From $A6 To $C1 Offset $D750: From $80 To $A6 Offset $D751: From $A7 To $03 Offset $D752: From $C1 To $A7 Offset $D753: From $A6 To $5F Offset $D754: From $03 To $5A Offset $D755: From $A7 To $26 Offset $D756: From $5F To $F3 Offset $D757: From $5A To $39 Offset $D758: From $26 To $73 Offset $D759: From $F3 To $72 Offset $D763: From $38 To $39 Offset $D765: From $C3 To $CB Offset $D766: From $FC To $FF Offset $D76D: From $CC To $C8 Offset $D76E: From $00 To $0C Offset $D770: From $CC To $C8 Offset $D771: From $02 To $0E Offset $D773: From $C4 To $CD Offset $D82C: From $C4 To $CD Offset $D889: From $C4 To $CD Offset $D8A2: From $C4 To $CD Offset $D8CE: From $C4 To $CD Offset $D8E6: From $38 To $39 Offset $D8F5: From $CC To $C8 Offset $D907: From $CC To $C8 Offset $D90A: From $C3 To $CB Offset $D90B: From $FC To $FF Offset $D955: From $CC To $C8 Offset $DE81: From $C4 To $CD Offset $DEC3: From $C4 To $CD Offset $DF21: From $CC To $C8 Offset $DF22: From $03 To $0F Offset $DF24: From $CC To $C8 Offset $DF25: From $02 To $0E Offset $DF27: From $C8 To $CB Offset $DF3D: From $C8 To $CB Offset $DF66: From $38 To $39 Offset $DF68: From $C3 To $CB Offset $DF69: From $FC To $FF Offset $DFB4: From $CC To $C8 Offset $DFB5: From $03 To $0F Offset $DFCD: From $CC To $C8 Offset $DFCE: From $03 To $0F Offset $DFD0: From $CC To $C8 Offset $DFD1: From $02 To $0E Offset $DFD3: From $C8 To $CB Offset $E010: From $C3 To $CB Offset $E011: From $FC To $FF Offset $F623: From $CC To $C8 Offset $F626: From $01 To $0D Offset $F628: From $03 To $0C Offset $F629: From $6F To $86 Offset $F62A: From $05 To $3C Offset $F62B: From $6F To $A7 Offset $F62C: From $07 To $0D Offset $F62D: From $86 To $6F Offset $F62E: From $C0 To $0F Offset $F62F: From $A7 To $C6 Offset $F630: From $84 To $C0 Offset $F631: From $86 To $E7 Offset $F632: From $FF To $0E Offset $F634: From $02 To $0F Offset $F635: From $6F To $E7 Offset $F636: From $04 To $0E Offset $F638: From $06 To $05 Offset $F639: From $86 To $6F Offset $F63A: From $04 To $07 Offset $F63B: From $A7 To $6F Offset $F63C: From $03 To $04 Offset $F63D: From $A7 To $6F Offset $F63E: From $05 To $06 Offset $F63F: From $A7 To $86 Offset $F640: From $07 To $04 Offset $F641: From $8A To $A7 Offset $F642: From $10 To $05 Offset $F644: From $01 To $07 Offset $F684: From $38 To $39 Offset $F686: From $C3 To $CB Offset $F687: From $FC To $FF Offset $F692: From $CC To $C8 Offset $F693: From $00 To $0C Offset $F6E3: From $CC To $C8 Offset $F6E4: From $00 To $0C Offset $F719: From $38 To $39 Offset $F71B: From $C3 To $CB Offset $F71C: From $FC To $FF Offset $F75F: From $38 To $39 Offset $F761: From $C3 To $CB Offset $F762: From $FC To $FF Offset $F77A: From $1F To $5F Offset $F77B: From $30 To $E9 Offset $F77C: From $C0 To $80 Offset $F77D: From $6C To $31 Offset $F77E: From $54 To $3F Offset $F77F: From $4F To $26 Offset $F780: From $E9 To $FA Offset $F781: From $80 To $E1 Offset $F782: From $31 To $C9 Offset $F783: From $3F To $07 Offset $F784: From $26 To $17 Offset $F785: From $FA To $27 Offset $F786: From $C1 To $0C Offset $F787: From $80 To $1F Offset $F788: From $27 To $A8 Offset $F789: From $09 To $85 Offset $F78A: From $1F To $10 Offset $F78B: From $A8 To $27 Offset $F78C: From $85 To $41 Offset $F78D: From $10 To $7E Offset $F78E: From $27 To $F5 Offset $F78F: From $3E To $07 Offset $F790: From $7E To $53 Offset $F791: From $F5 To $4B Offset $F792: From $07 To $52 Offset $F7A0: From $EF To $EC Offset $F7B9: From $CC To $C8 Offset $F7BA: From $00 To $0C Offset $F7C3: From $38 To $39 Offset $F7C5: From $C3 To $CB Offset $F7C6: From $FC To $FF Offset $FF5C: From $00 To $8E Offset $FF5D: From $00 To $D7 Offset $FF5E: From $00 To $30 Offset $FF5F: From $00 To $CE Offset $FF60: From $00 To $C8 Offset $FF61: From $00 To $0C Offset $FF62: From $00 To $7E Offset $FF63: From $00 To $FF Offset $FF64: From $00 To $E2 Offset $FF65: From $00 To $8C Offset $FF66: From $00 To $C8 Offset $FF67: From $00 To $0F Offset $FF68: From $00 To $2F Offset $FF69: From $00 To $08 Offset $FF6A: From $00 To $30 Offset $FF6B: From $00 To $14 Offset $FF6C: From $00 To $BD Offset $FF6D: From $00 To $C0 Offset $FF6E: From $00 To $36 Offset $FF6F: From $00 To $30 Offset $FF70: From $00 To $0C Offset $FF71: From $00 To $39 Offset $FF72: From $00 To $7E Offset $FF73: From $00 To $C0 Offset $FF74: From $00 To $36 Offset $FF75: From $00 To $8C Offset $FF76: From $00 To $C8 Offset $FF77: From $00 To $0F Offset $FF78: From $00 To $2F Offset $FF79: From $00 To $07 Offset $FF7A: From $00 To $30 Offset $FF7B: From $00 To $14 Offset $FF7C: From $00 To $BD Offset $FF7D: From $00 To $C0 Offset $FF7E: From $00 To $39 Offset $FF7F: From $00 To $20 Offset $FF80: From $00 To $EE Offset $FF81: From $00 To $7E Offset $FF82: From $00 To $C0 Offset $FF83: From $00 To $39 Offset $FF84: From $00 To $EC Offset $FF85: From $00 To $DA Offset $FF87: From $00 To $8A Offset $FF88: From $00 To $7E Offset $FF89: From $00 To $20 Offset $FF8B: From $00 To $F0 Offset $FF8F: From $00 To $82 Offset $FF91: From $00 To $68 Offset $FF93: From $00 To $78 Offset $FF95: From $00 To $A3 Offset $FF97: From $00 To $6F Offset $FF99: From $00 To $75 Offset $FF9B: From $00 To $74 Offset $FFE2: From $00 To $BD Offset $FFE3: From $00 To $D7 Offset $FFE4: From $00 To $48 Offset $FFE5: From $00 To $CE Offset $FFE6: From $00 To $C8 Offset $FFE7: From $00 To $04 Offset $FFE8: From $00 To $BD Offset $FFE9: From $00 To $D7 Offset $FFEA: From $00 To $48 Offset $FFEB: From $00 To $7E Offset $FFEC: From $00 To $D7 Offset $FFED: From $00 To $5A Note- there are still a few patches to be made. Two player mode on a cocktail machine won't flip the screen yet. This is because Defender used the Watchdog address to flip the screen, but the later games have a separate address. A patch would add extra CPU cycles that would probably affect game play. I just cut the jumper on my Widget board to tell the machine that it is a cocktail game, but Defender gave me a RAM error and displayed the Williams 'signature' logo blocky. I'm not sure what is happening here, as Stargate acted like it was running on a cocktail game (the screen flipped and the controls didn't work for player 2). This plays fine on my standup Joust/Multi-Game machine, and all of the setup and diagnostics work, too.