============= "COMPLICA DX" ============= COMPLICA DX is a board game you can play against the computer or another player, featuring multicolor graphics, AY music and sophisticated A.I. =============== MARKETING BLURB =============== * Play COMPLICA, the most exciting variant of classic CONNECT-4! * Some of the best graphics and songs for the ZX-Spectrum ever! Amazing visual design by Dave "R-Tape" Hughes! Awesome soundtrack by Yerzmyey! * Customized version of BIFROST* ENGINE powering graphics and animations in multicolor 8x1, compatible with all official ZX-Spectrum models! * Huge game content for a ZX-Spectrum game (packing 12K of 100% Assembly code, 61K of standard and multicolor graphics, 12K of AY music) in 48K only! * The smartest computer opponent ever! Play against BRAINIAC (TM), an Artificial Intelligence algorithm implemented as recursive Minimax strategy with alpha-beta pruning, highly optimized for Z80 registers allocation, using heuristic evaluation and arbitrary recursion depth, multi-tasked in background from machine state controlled multicolor animated graphics... Yes, the A.I. really is as strong as it sounds! * Full source code available! ============== HOW TO COMPILE ============== First you need to prepare your development environment, according to the following steps: 1.) Extract file content of this zip package to a new empty directory; 2.) Download file "BIFROSTENGINEV1.2H_SourceCode.zip" from BIFROST* page (see link below), then extract file content to the same directory; 3.) Edit file "BIFROST_H.asm" to delete the following lines from the beginning of this file: TILE_IMAGES EQU 48500 SHIFT_COLUMNS EQU 0 4.) Download file "FZX_Driver.zip" from FZX page (see link below), then extract file content to the same directory; 5.) Edit file "FZXdriver.asm" to delete the following line from the beginning of this file: org 65000 ; driver address 6.) Download file "ZX7_(WindowsExecutable).zip" from ZX7 page (see link below), then extract file content to the same directory; 7.) Download file "RCS_(WindowsExecutable).zip" from RCS page (see link below), then extract file content to the same directory; 8.) Download file "RCS_SourceCode.zip" from RCS page (see link below), then extract file "dzx7_agileRCS.asm" and copy it to the same directory as above; 9.) Download file "pasmo-0.5.4.beta2.zip" from Pasmo page (see link below), then extract file content to the same directory; Afterwards, double-click file "complica.bat" to compile this game. If you have properly followed all instructions above, this will generate a new file "ComplicaDX.tap" in the same directory. ========== MEMORY MAP ========== Memory distribution was carefully planned to maximize game content in 48K only. When game is loaded, the ZX-Spectrum memory is distributed as follows: ----------------------------------------------------------------------- ADDRESS SIZE FILE LABEL/CONTENT ----------------------------------------------------------------------- 24200/$5E88 16880 data.asm Main graphics 41080/$A078 420 --- --- 41500/$A21C 293 main.asm Main routines 41793/$A341 477 menu.asm Game menus 42270/$A51E 84 board.asm Board signs 42354/$A572 161 msg.asm Match messages 42515/$A613 589 brainiac.asm BRAINIAC 43104/$A860 631 machine.asm State machine 43735/$AAD7 553 finale.asm Victory screen 44288/$AD00 419 --- --- 44707/$AEA3 4495 intro.asm "STPLAYER_AI_44707.bin" 49202/$C032 4495 intro.asm "CHOUYAKU_49202.bin" 53013/$CF15 60 intro.asm intro_game 53073/$CF51 51 intro.asm intro_print 53124/$CF84 761 intro.asm intro_text 53885/$D27D 248 intro.asm FZX_DRIVER 54133/$D375 682 intro.asm "typewriter.fzx" 54815/$D61F 4721 --- --- 59536/$E890 4154 intro.asm "PRELUDE_59536.bin" 63690/$F8CA 1675 intro.asm "mcolor.bin.zx7" 65365/$FF55 14 intro.asm cls_scr 65379/$FF63 6 intro.asm dzx7_scr 65385/$FF69 150 dzx7_agileRCS.asm dzx7_agilercs 65535/$FFFF ----------------------------------------------------------------------- After playing intro music and displaying intro text, just before presenting the main menu, custom multicolor routines are decompressed from "mcolor.bin.zx7", so memory becomes distributed as follows: ----------------------------------------------------------------------- ADDRESS SIZE FILE LABEL/CONTENT ----------------------------------------------------------------------- 24200/$5E88 16880 data.asm Main graphics 41080/$A078 420 --- --- 41500/$A21C 293 main.asm Main routines 41793/$A341 477 menu.asm Game menus 42270/$A51E 84 board.asm Board signs 42354/$A572 161 msg.asm Match messages 42515/$A613 589 brainiac.asm BRAINIAC 43104/$A860 631 machine.asm State machine 43735/$AAD7 553 finale.asm Victory screen 44288/$AD00 419 --- --- 44707/$AEA3 4495 intro.asm "STPLAYER_AI_44707.bin" 49202/$C032 3811 intro.asm "CHOUYAKU_49202.bin" 53013/$CF15 4096 BIFROST_H.asm BIFROST* tiles 57109/$DF15 108 BIFROST_H.asm fill_tile_attr 57217/$DF81 12 mcolor.asm mcolor_disable 57229/$DF8D 96 mcolor.asm mcolor_render 57325/$DFED 1 mcolor.asm machine_delay 57326/$DFEE 1 mcolor.asm machine_frame 57327/$DFEF 1 mcolor.asm machine_column 57328/$DFF0 1 mcolor.asm machine_dir 57329/$DFF1 1 mcolor.asm machine_move1 57330/$DFF2 1 mcolor.asm machine_move2 57331/$DFF3 2 mcolor.asm machine_move 57333/$DFF5 8 mcolor.asm machine_buffer 57341/$DFFD 3 --- --- 57344/$E000 32 brainiac.asm board 57376/$E020 320 BIFROST_H.asm bitmaps 57696/$E160 352 BIFROST_H.asm attribs 58048/$E2C0 1 --- --- 58049/$E2C1 5 BIFROST_H.asm show_next3_delayed 58054/$E2C6 45 BIFROST_H.asm draw_sprites 58099/$E2F3 199 mcolor.asm mcolor_draw 58298/$E3BA 66 mcolor.asm mcolor_draw_bmp 58364/$E3FC 4 --- --- 58368/$E400 20 BIFROST_H.asm deltas 58388/$E414 8 mcolor.asm mcolor_clear 58396/$E41C 93 mcolor.asm mcolor_init 58489/$E479 73 mcolor.asm mcolor_aligned 58562/$E4C2 32 mcolor.asm mcolor_highlight 58594/$E4E2 29 mcolor.asm interrupt_handler 58623/$E4FF 7 --- --- 58630/$E506 6 BIFROST_H.asm skip_tile 58636/$E50C 6 BIFROST_H.asm show_next3 58642/$E512 30 BIFROST_H.asm show_next_tile 58672/$E530 32 BIFROST_H.asm show_tile_pos 58704/$E550 317 BIFROST_H.asm draw_tile 59021/$E68D 5974 BIFROST_H.asm main_engine 64995/$FDE3 17 BIFROST_H.asm start 65012/$FDF4 9 BIFROST_H.asm stop 65021/$FDFD 3 BIFROST_H.asm interrupt address 65024/$FE00 256 BIFROST_H.asm jump vector 65281/$FF01 81 BIFROST_H.asm tile map 65362/$FF52 3 --- --- 65365/$FF55 14 intro.asm cls_scr 65379/$FF63 6 intro.asm dzx7_scr 65385/$FF69 150 dzx7_agileRCS.asm dzx7_agilercs 65535/$FFFF ----------------------------------------------------------------------- ========= DEV TOOLS ========= The following tools were used during the development of this game: BIFROST* - by Einar Saukas & Dave Hughes (R-Tape) http://www.worldofspectrum.org/infoseekid.cgi?id=0027405 ZX7 - by Einar Saukas http://www.worldofspectrum.org/infoseekid.cgi?id=0027996 RCS - by Einar Saukas http://www.worldofspectrum.org/infoseekid.cgi?id=0028048 FZX - by Andrew Owen & Einar Saukas http://www.worldofspectrum.org/infoseekid.cgi?id=0028171 Pasmo - by Julian Albo http://pasmo.speccy.org/ Soundtracker - by BZYK http://www.worldofspectrum.org/infoseekid.cgi?id=0012090 Soundtracker Song Compiler - by BZYK http://www.worldofspectrum.org/infoseekid.cgi?id=0008708 ZX-Paintbrush - by Claus Jahn http://www.zxmodules.de/ ======= CREDITS ======= Game design, code and story by Einar Saukas Load screen, graphics and inlay by Dave Hughes (R-Tape) Music by Yerzmyey, featuring the following tracks: - Prelude from demo "9 Channels" (2011) - "Chouyaku" from album "Microsongs" (2013) - "Ai" from album "Microsongs" (2013)