Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

49
Project Project Computersystemen Computersystemen By By Nicolas Teirlinckx Nicolas Teirlinckx Ruben Tytgat Ruben Tytgat Nick Van den Steen Nick Van den Steen

Transcript of Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Page 1: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Project Project ComputersystemenComputersystemen

ByByNicolas TeirlinckxNicolas Teirlinckx

Ruben TytgatRuben TytgatNick Van den SteenNick Van den Steen

Page 2: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Space InvadersSpace InvadersIn ASM 8086In ASM 8086

Page 3: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

InhoudInhoud Inleiding: Space InvadersInleiding: Space Invaders FeaturesFeatures Commando’sCommando’s Overzicht functies en macros:Overzicht functies en macros: -Graphics-Graphics

-Keyboard-Keyboard-Beweging-Beweging-Collision detection-Collision detection-Muziek-Muziek-Main code-Main code

DemoDemo

Page 4: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Space InvaderSpace Invader

Arcadespel, 1978, TaitoArcadespel, 1978, Taito Tomohiro NishikadoTomohiro Nishikado InvloedrijkInvloedrijk Guiness World Record RankGuiness World Record Rank IcoonIcoon

Page 5: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

GameplayGameplay

Sciencefiction-actieSciencefiction-actie Twee dimensionele graphicsTwee dimensionele graphics Buitenaardse wezens vs. Buitenaardse wezens vs.

RuimteschipRuimteschip SchildenSchilden GeluidGeluid Moderne versies...Moderne versies...

Page 6: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Tomohiro NishikadoTomohiro Nishikado

Japanese video game ontwerper

Tokyo Denki University 1968 1969 Taito 1972 « Soccer » 1978 Space Invader Space Invader and morality 1996 Dreams

Page 7: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

FeaturesFeatures

Keyboardcommando’sKeyboardcommando’s MuziekMuziek KleurenKleuren AchtergrondAchtergrond BewegingBeweging Random gedragRandom gedrag Een 2-D fixed shootergameEen 2-D fixed shootergame

Page 8: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Keyboardcommando’sKeyboardcommando’s

Besturing uitsluitend klavier.Oorspronkelijk Japan <->

America.

Page 9: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

MuziekMuziek

Soundblaster aansturenSoundblaster aansturenVia DMA Via DMA Kloppend hartKloppend hartVrije keuze – SOME.wav (44100 Hz -Vrije keuze – SOME.wav (44100 Hz -

16 bits, stereo)16 bits, stereo)Player One – Space InvaderPlayer One – Space Invader

Page 10: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

KleurenKleuren

Mode 13hMode 13h255 kleurenpalet255 kleurenpaletTransparantTransparantVb. backgroundVb. background

Page 11: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

AchtergrondAchtergrond

100 kleuren uit paletRuimte2 achtergronden

Page 12: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

BewegingBeweging

InvadersRuimteschip via keyboard

invoerKogels

Page 13: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

RandomgedragRandomgedrag

Pick randomPick randomEen kogelEen kogel

Page 14: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

2-D Fixed shootergame2-D Fixed shootergame

Fixed Fixed X-asX-as

Page 15: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Functies/macro’sFuncties/macro’s

Graphics (graphics.asm)Graphics (graphics.asm)

– setVideoModesetVideoMode

DOS interrupts aanroepen

0Fh get video mode

00h set video mode

Page 16: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (2)Graphics (2)

(graphics.asm)(graphics.asm)– restoreVideoModerestoreVideoMode

– displayVgaModedisplayVgaMode

Page 17: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (3)Graphics (3)

(graphics.asm)(graphics.asm)– displaySetOldModedisplaySetOldMode

– displayClearScreendisplayClearScreen

Page 18: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (4)Graphics (4)

(graphics.asm)(graphics.asm)– displayUpdateVramdisplayUpdateVram

(afzonderlijke file)(afzonderlijke file)

– displaySetPalettedisplaySetPalette

aantal registers die gezetmoeten worden

Tabel van 3*cl bytes

Page 19: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (5)Graphics (5)

(graphics.asm)(graphics.asm)– displaySetPaletteMdisplaySetPaletteM

– xyConvertToMemOffsetxyConvertToMemOffset

Segment en offset goed zetten

cScrWidth * y + x

Page 20: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (6)Graphics (6)

(graphics.asm)(graphics.asm)– xyConvertToMemOffsetSafexyConvertToMemOffsetSafe

– graphicsDrawSpritegraphicsDrawSprite

(afzonderlijke file)(afzonderlijke file)

Page 21: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (7)Graphics (7) (graphics.asm)(graphics.asm)

– graphicsDrawSpriteMgraphicsDrawSpriteM

– graphicsDrawSpriteFarMgraphicsDrawSpriteFarM

Page 22: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (8)Graphics (8)

(graphhlp.asm)(graphhlp.asm)– displayHelpersFillGrayScalePalettedisplayHelpersFillGrayScalePalette

(afzonderlijke file)(afzonderlijke file)– displayHelpersLoadPaletteFiledisplayHelpersLoadPaletteFile

(afzonderlijke file)(afzonderlijke file)

Page 23: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (9)Graphics (9)

(graphhlp.asm)(graphhlp.asm)– displayHelpersLoadBGdisplayHelpersLoadBG

Page 24: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (10)Graphics (10)

(graphhlp.asm)(graphhlp.asm)– displayHelpersLoadMenudisplayHelpersLoadMenu

Page 25: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (11)Graphics (11)

(dispdraw.asm)(dispdraw.asm)– monsterUpdateDisplaymonsterUpdateDisplay

(afzonderlijke file)(afzonderlijke file)

– bulletUpdateDisplaybulletUpdateDisplay

(afzonderlijke file)(afzonderlijke file)

Page 26: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Graphics (12)Graphics (12)

(dispdraw.asm)(dispdraw.asm)– drawLivesdrawLives

10 pixels van linkerzijde

ch wordt gebruikt door loop (not cl)

Page 27: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

KeyboardhandlerKeyboardhandler

DataKeycodes.asm

Page 28: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Data keyboardhandlerData keyboardhandler

Used to define byte

Used to define dword

Page 29: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asmkeyb.asmSendcmd: procedure met distance =

near.Push gebruikte

registers op stack

Initialiseren van een counter

Send data naar poort 60

Stuurt gekregen flag terug naar

KbdFlags4And wait...

Page 30: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (2)keyb.asm (2)

SendCmd (2)

Jump if not equalDecrease counter

Zet error bit na 3 tries

Page 31: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (3)keyb.asm (3)SetCmd -> vergelijkbaar SendCmdSetCmd -> vergelijkbaar SendCmd64h -> microcontroller poort64h -> microcontroller poort

Page 32: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (4)keyb.asm (4)

Keyboard uitschakelen

keybInterruptHandler, plaats ontvangen toets in keyboardbufferkeybInterruptHandler, plaats ontvangen toets in keyboardbuffer

Get keyboard dataEcho response?

Zet acknowledge

bit.

Resend command?

Page 33: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (5)keyb.asm (5)keybInterruptHandler (2)keybInterruptHandler (2)

Schrijf scancode in cl in Buffer,

checkt buffer niet vol.

Insert alles en increment buffer

Return interrupt

Page 34: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (6)keyb.asm (6)keybInterruptInstall/UnistallkeybInterruptInstall/Unistall

Dos functie 35h, Set ES:BX op de waarde van de interruptvector.

Dos functie 25h,Set de interrupt

vector op de waarde in DS:DX.

Source 9 = keyboard

Page 35: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (7)keyb.asm (7)KeybBufferProcess (1)KeybBufferProcess (1)

Berekent bufferlengte

Checkt op arrow key

Laad eerste key in al

Page 36: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (8)keyb.asm (8)KeybBufferProcess (2)KeybBufferProcess (2)

Arrowflag op 0 zetten

Compare + Jump naar de juiste

label

Arrow flag is up?

Page 37: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

keyb.asm (9)keyb.asm (9)KeybBufferProcess (end)KeybBufferProcess (end)

Zie ship movement...

Ondergrens opslaan.

Page 38: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

BewegingBeweging

Shipmov.asm

Macro’s om flags op 1/0 te zetten

Page 39: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Ship beweging vervolgShip beweging vervolg

Grens kan niet verder

Go right

Go left

Page 40: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Beweging (3)Beweging (3)

(monstermov.asm) (2)(monstermov.asm) (2)– updateMonsterPositionupdateMonsterPosition

(afzonderlijke file)(afzonderlijke file)

Page 41: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Beweging (4)Beweging (4)

Fire.asmFire.asmfindEmptyBulletfindEmptyBulletfireBulletfireBulletupdateBulletPositionupdateBulletPosition

Themfire.asmThemfire.asmMoveToNextAliveMoveToNextAlivetheyTryToFiretheyTryToFireupdateTheirBulletPositionupdateTheirBulletPosition

Page 42: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Collision checkCollision check

Collisn.asm

collCheckHit

Page 43: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Data Data

DATA.asmBevat alle data. INCLUDEGraphic data als laatste… (FARDATA)

Page 44: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Data (2)Data (2)

gamedata.asm-Ship posities, ennemy posities.-Aantal ennemies-Lives (3)-Palettefile-Achtergrond files

Page 45: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Data (3)Data (3)

sprites.asm

Page 46: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Main codeMain code

spacei.asm

Page 47: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Main code (2)Main code (2)

spacei.asmspacei.asm

Page 48: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

Main code (3)Main code (3)

spacei.asmspacei.asm

Page 49: Project Computersystemen By Nicolas Teirlinckx Ruben Tytgat Nick Van den Steen.

DEMODEMO