SPACE INVADERS ARCADE EMULATOR FOR Sinclair Zx Spectrum +2A/+2B/+3 or Sinclair Zx Spectrum 128/+2/+2A/+2B/+3 with DIVIDE/DIVMMC Interface V1.01 by 40CRISIS
-----------------------------------------------------------------------------------------------------------------------------------------------------------

ABOUT
-----

It's a SPACE INVADERS arcade Emulator For the Sinclair Zx Spectrum 128/+2/+2A/+2B/+3
computer range.
SPACE INVADERS is copyright by Taito Corporation (C) 1978 


Usage of this SPACE INVADERS EMULATOR FOR Sinclair Zx Spectrum 128/+2/+2A/+2B/+3 in
conjunction with roms you don't own is forbidden by copyright laws...


WHY
---

It's one of the first arcade games and it has been cloned so many times on nearly 
all computers/consoles platforms.
It's a so iconic videogame and a videogame legend !

The challenge to emulate it on zx !

Computer archeology internet site provides me with a fantastic documentation about space invaders internals.
Simon Owen's Space Invaders emulator on SAM Coup make me realise that emulation was possible on Sinclair Zx Spectrum 128/+2/+2A/+2B/+3 and 
was a great source of inspiration.

Many thanks to them. It made me the task much more easier.


REQUIREMENTS
------------

Space invaders arcade roms are needed to run the emulator (not provided with emulator package for 
copyright reasons)
Common names are invaders.h, invaders.g, invaders.f, invaders.e 


See next section "HOW TO BUILD SPACE INVADERS ARCADE EMULATOR ZX SPECTRUM TAPE" 
on how to generate ZX SPECTRUM emulator tape image under Windows.

SPACE INVADERS is copyright by Taito Corporation (C) 1978 and no data 
from the original arcade game must be included with this emulator package.

Spectrum 128/+2 is only supported with DIVIDE/DIVMMC interface attached




HOW TO BUILD SPACE INVADERS  EMULATOR ZX SPECTRUM TAPE
------------------------------------------------------

Tested on Microsoft Windows 7 / Windows 10

a) create a temporary folder and unzip archive into it.

b) use roms files image from original arcade game release 
Put roms files in temporary folder

c) Build ZX SPECTRUM Tape Image for Spectrum +2A/+2B/+3

run GENSI.EXE in temporary folder

In the folder, you should have a tape image SI.TAP

d) Build ZX SPECTRUM Tape Image for Spectrum 128/+2/+2A/+2B/+3 with DIVIDE/DIVMMC
run GENSI_DIVIDE.EXE in temporary folder

In the folder, you should have a tape image SIDIVIDE.TAP


if you run gensi.exe or gensi_divide.exe without parameters program will look automatically for invaders.h invaders.g invaders.f invaders.e rom files.
But if you wish, you can specify your own rom filenames in a simple text file:

example rom.txt:

invaders.h 
invaders.g
invaders.f
invaders.h

Then run gensi rom.txt (program will assume first rom starts at 0 and roms form a single continued block of memory)

In case there's memory discontinuity for roms you can specify start offset for roms ( C language hex syntax).

example sisv2.txt:

sv01.36 0x0
sv02.35 0x400
sv10.34 0x800
sv04.31 0x1400
sv09.42 0x1800
sv06.41 0x1C00


LAUNCH
------

Insert tape file SI.TAP or SIDIVIDE.TAP

Type LOAD"" and press ENTER. The program will automatically load.



WHAT IS EMULATED
----------------

-  intel 8080 processor. Hopefully z80's designers are the same as 8080 processor and made it fully compatible with 8080 at opcode level 
   (feature named binary compatible or object code compatible)
   
-  emulator runs emulated game at 60 Hz though display is done at 50 Hz

-  graphics identical to original. Rotating the screen 90 degrees 
   anticlock was a hard job. Resolution used is 224x192 compared to original 224x256. 
   32 pixels upper part and 32 pixels lower part of the original 
   arcade display are ignored to fit this more limited resolution.
   Scores, remaining ships and credits display have been moved to free 32x192 right area.
   
-  Why a Sinclair Zx Spectrum +2A and above is required without DIVIDE/DIVMMC ? 
   It's because only theses machines are able to load and execute code in RAM at location [#0000,#4000]. This enable to execute original Space invaders ROM as is.
   Divide/Divmmc interface has his own RAM memory located at [#0000,#4000]
   
-  sound output but not very faithful

THIRD PARTY SOFTWARE USED BY EMULATOR 
-------------------------------------

- Aplib compressor by Joergen Ibsen and aplib z80 decompressor by Csar Nicols Gonzlez/CNGSOFT
- UPX exe compressor Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer, Lszl Molnr, John F. Reiser
- BIN2TAP converter Copyright (C) 2009 mike/zeroteam
- GCC C Compiler

KEYS
----

O / 5 / 6 / Joystick Left:				 	 Left
P / 8 / 7 / Joystick Right:			 		 Right
Q / 0 / Caps Shift /Joystick Fire:		     Fire
1											 Start 1P
2											 Start 2P
3 											 Put Coin

Support for Kempston / Cursor / Interface 2 / SJS1 joystick interface.

D: Toggle display Space invaders dip switch options / options as follows:

X: trigger Tilt
C: switch for coin info 
L: switch for extra life (1000 or 1500 points, 1500 by default)
S: switch for number of player ships (3 to 6, 3 by default)
K: switch for kempston joystick (disabled by default)
F: switch between 50Hz and 60Hz frequency for game rendering (60Hz by default)

VERSIONS
--------

V1.0: Initial release (14/01/2017)
V1.01: Added loading screen (22/01/2017)
Loading screen created by Ignacio Prini aka Neil Parsons. Many thanks to him for his great work.


LICENCE
-------

SPACE INVADERS EMULATOR FOR Sinclair Zx Spectrum 128/+2/+2A/+2B/+3 is freeware.
You can redistribute it freely as long as it's for non-profit purposes.
